diff options
author | Jeremy Andrews <athenian200@outlook.com> | 2021-09-26 14:33:46 -0500 |
---|---|---|
committer | Jeremy Andrews <athenian200@outlook.com> | 2021-09-26 14:33:46 -0500 |
commit | ff6887cafd8c810cd0e26bbff3d407cfd76a8017 (patch) | |
tree | 94d479afdb910ee154d2cde18faf6c9cc6929d1f /media | |
parent | 5e39f1ac687c4e3320ef2e54298e70465348b17c (diff) | |
download | aura-central-ff6887cafd8c810cd0e26bbff3d407cfd76a8017.tar.gz |
Issue %3003 - Move libav to libs/
Diffstat (limited to 'media')
99 files changed, 0 insertions, 21227 deletions
diff --git a/media/libav/COPYING.GPLv2 b/media/libav/COPYING.GPLv2 deleted file mode 100644 index d159169d1..000000000 --- a/media/libav/COPYING.GPLv2 +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 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. - - 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 Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - <signature of Ty Coon>, 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/media/libav/COPYING.GPLv3 b/media/libav/COPYING.GPLv3 deleted file mode 100644 index 94a9ed024..000000000 --- a/media/libav/COPYING.GPLv3 +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The GNU General Public License is a free, copyleft license for -software and other kinds of works. - - The licenses for most software and other practical works are designed -to take away your freedom to share and change the works. By contrast, -the GNU General Public License is intended to guarantee your freedom to -share and change all versions of a program--to make sure it remains free -software for all its users. We, the Free Software Foundation, use the -GNU General Public License for most of our software; it applies also to -any other work released this way by its authors. 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 -them 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 prevent others from denying you -these rights or asking you to surrender the rights. Therefore, you have -certain responsibilities if you distribute copies of the software, or if -you modify it: responsibilities to respect the freedom of others. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must pass on to the recipients the same -freedoms that you received. 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. - - Developers that use the GNU GPL protect your rights with two steps: -(1) assert copyright on the software, and (2) offer you this License -giving you legal permission to copy, distribute and/or modify it. - - For the developers' and authors' protection, the GPL clearly explains -that there is no warranty for this free software. For both users' and -authors' sake, the GPL requires that modified versions be marked as -changed, so that their problems will not be attributed erroneously to -authors of previous versions. - - Some devices are designed to deny users access to install or run -modified versions of the software inside them, although the manufacturer -can do so. This is fundamentally incompatible with the aim of -protecting users' freedom to change the software. The systematic -pattern of such abuse occurs in the area of products for individuals to -use, which is precisely where it is most unacceptable. Therefore, we -have designed this version of the GPL to prohibit the practice for those -products. If such problems arise substantially in other domains, we -stand ready to extend this provision to those domains in future versions -of the GPL, as needed to protect the freedom of users. - - Finally, every program is threatened constantly by software patents. -States should not allow patents to restrict development and use of -software on general-purpose computers, but in those that do, we wish to -avoid the special danger that patents applied to a free program could -make it effectively proprietary. To prevent this, the GPL assures that -patents cannot be used to render the program non-free. - - The precise terms and conditions for copying, distribution and -modification follow. - - TERMS AND CONDITIONS - - 0. Definitions. - - "This License" refers to version 3 of the GNU General Public License. - - "Copyright" also means copyright-like laws that apply to other kinds of -works, such as semiconductor masks. - - "The Program" refers to any copyrightable work licensed under this -License. Each licensee is addressed as "you". "Licensees" and -"recipients" may be individuals or organizations. - - To "modify" a work means to copy from or adapt all or part of the work -in a fashion requiring copyright permission, other than the making of an -exact copy. The resulting work is called a "modified version" of the -earlier work or a work "based on" the earlier work. - - A "covered work" means either the unmodified Program or a work based -on the Program. - - To "propagate" a work means to do anything with it that, without -permission, would make you directly or secondarily liable for -infringement under applicable copyright law, except executing it on a -computer or modifying a private copy. Propagation includes copying, -distribution (with or without modification), making available to the -public, and in some countries other activities as well. - - To "convey" a work means any kind of propagation that enables other -parties to make or receive copies. Mere interaction with a user through -a computer network, with no transfer of a copy, is not conveying. - - An interactive user interface displays "Appropriate Legal Notices" -to the extent that it includes a convenient and prominently visible -feature that (1) displays an appropriate copyright notice, and (2) -tells the user that there is no warranty for the work (except to the -extent that warranties are provided), that licensees may convey the -work under this License, and how to view a copy of this License. If -the interface presents a list of user commands or options, such as a -menu, a prominent item in the list meets this criterion. - - 1. Source Code. - - The "source code" for a work means the preferred form of the work -for making modifications to it. "Object code" means any non-source -form of a work. - - A "Standard Interface" means an interface that either is an official -standard defined by a recognized standards body, or, in the case of -interfaces specified for a particular programming language, one that -is widely used among developers working in that language. - - The "System Libraries" of an executable work include anything, other -than the work as a whole, that (a) is included in the normal form of -packaging a Major Component, but which is not part of that Major -Component, and (b) serves only to enable use of the work with that -Major Component, or to implement a Standard Interface for which an -implementation is available to the public in source code form. A -"Major Component", in this context, means a major essential component -(kernel, window system, and so on) of the specific operating system -(if any) on which the executable work runs, or a compiler used to -produce the work, or an object code interpreter used to run it. - - The "Corresponding Source" for a work in object code form means all -the source code needed to generate, install, and (for an executable -work) run the object code and to modify the work, including scripts to -control those activities. However, it does not include the work's -System Libraries, or general-purpose tools or generally available free -programs which are used unmodified in performing those activities but -which are not part of the work. For example, Corresponding Source -includes interface definition files associated with source files for -the work, and the source code for shared libraries and dynamically -linked subprograms that the work is specifically designed to require, -such as by intimate data communication or control flow between those -subprograms and other parts of the work. - - The Corresponding Source need not include anything that users -can regenerate automatically from other parts of the Corresponding -Source. - - The Corresponding Source for a work in source code form is that -same work. - - 2. Basic Permissions. - - All rights granted under this License are granted for the term of -copyright on the Program, and are irrevocable provided the stated -conditions are met. This License explicitly affirms your unlimited -permission to run the unmodified Program. The output from running a -covered work is covered by this License only if the output, given its -content, constitutes a covered work. This License acknowledges your -rights of fair use or other equivalent, as provided by copyright law. - - You may make, run and propagate covered works that you do not -convey, without conditions so long as your license otherwise remains -in force. You may convey covered works to others for the sole purpose -of having them make modifications exclusively for you, or provide you -with facilities for running those works, provided that you comply with -the terms of this License in conveying all material for which you do -not control copyright. Those thus making or running the covered works -for you must do so exclusively on your behalf, under your direction -and control, on terms that prohibit them from making any copies of -your copyrighted material outside their relationship with you. - - Conveying under any other circumstances is permitted solely under -the conditions stated below. Sublicensing is not allowed; section 10 -makes it unnecessary. - - 3. Protecting Users' Legal Rights From Anti-Circumvention Law. - - No covered work shall be deemed part of an effective technological -measure under any applicable law fulfilling obligations under article -11 of the WIPO copyright treaty adopted on 20 December 1996, or -similar laws prohibiting or restricting circumvention of such -measures. - - When you convey a covered work, you waive any legal power to forbid -circumvention of technological measures to the extent such circumvention -is effected by exercising rights under this License with respect to -the covered work, and you disclaim any intention to limit operation or -modification of the work as a means of enforcing, against the work's -users, your or third parties' legal rights to forbid circumvention of -technological measures. - - 4. Conveying Verbatim Copies. - - You may convey 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; -keep intact all notices stating that this License and any -non-permissive terms added in accord with section 7 apply to the code; -keep intact all notices of the absence of any warranty; and give all -recipients a copy of this License along with the Program. - - You may charge any price or no price for each copy that you convey, -and you may offer support or warranty protection for a fee. - - 5. Conveying Modified Source Versions. - - You may convey a work based on the Program, or the modifications to -produce it from the Program, in the form of source code under the -terms of section 4, provided that you also meet all of these conditions: - - a) The work must carry prominent notices stating that you modified - it, and giving a relevant date. - - b) The work must carry prominent notices stating that it is - released under this License and any conditions added under section - 7. This requirement modifies the requirement in section 4 to - "keep intact all notices". - - c) You must license the entire work, as a whole, under this - License to anyone who comes into possession of a copy. This - License will therefore apply, along with any applicable section 7 - additional terms, to the whole of the work, and all its parts, - regardless of how they are packaged. This License gives no - permission to license the work in any other way, but it does not - invalidate such permission if you have separately received it. - - d) If the work has interactive user interfaces, each must display - Appropriate Legal Notices; however, if the Program has interactive - interfaces that do not display Appropriate Legal Notices, your - work need not make them do so. - - A compilation of a covered work with other separate and independent -works, which are not by their nature extensions of the covered work, -and which are not combined with it such as to form a larger program, -in or on a volume of a storage or distribution medium, is called an -"aggregate" if the compilation and its resulting copyright are not -used to limit the access or legal rights of the compilation's users -beyond what the individual works permit. Inclusion of a covered work -in an aggregate does not cause this License to apply to the other -parts of the aggregate. - - 6. Conveying Non-Source Forms. - - You may convey a covered work in object code form under the terms -of sections 4 and 5, provided that you also convey the -machine-readable Corresponding Source under the terms of this License, -in one of these ways: - - a) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by the - Corresponding Source fixed on a durable physical medium - customarily used for software interchange. - - b) Convey the object code in, or embodied in, a physical product - (including a physical distribution medium), accompanied by a - written offer, valid for at least three years and valid for as - long as you offer spare parts or customer support for that product - model, to give anyone who possesses the object code either (1) a - copy of the Corresponding Source for all the software in the - product that is covered by this License, on a durable physical - medium customarily used for software interchange, for a price no - more than your reasonable cost of physically performing this - conveying of source, or (2) access to copy the - Corresponding Source from a network server at no charge. - - c) Convey individual copies of the object code with a copy of the - written offer to provide the Corresponding Source. This - alternative is allowed only occasionally and noncommercially, and - only if you received the object code with such an offer, in accord - with subsection 6b. - - d) Convey the object code by offering access from a designated - place (gratis or for a charge), and offer equivalent access to the - Corresponding Source in the same way through the same place at no - further charge. You need not require recipients to copy the - Corresponding Source along with the object code. If the place to - copy the object code is a network server, the Corresponding Source - may be on a different server (operated by you or a third party) - that supports equivalent copying facilities, provided you maintain - clear directions next to the object code saying where to find the - Corresponding Source. Regardless of what server hosts the - Corresponding Source, you remain obligated to ensure that it is - available for as long as needed to satisfy these requirements. - - e) Convey the object code using peer-to-peer transmission, provided - you inform other peers where the object code and Corresponding - Source of the work are being offered to the general public at no - charge under subsection 6d. - - A separable portion of the object code, whose source code is excluded -from the Corresponding Source as a System Library, need not be -included in conveying the object code work. - - A "User Product" is either (1) a "consumer product", which means any -tangible personal property which is normally used for personal, family, -or household purposes, or (2) anything designed or sold for incorporation -into a dwelling. In determining whether a product is a consumer product, -doubtful cases shall be resolved in favor of coverage. For a particular -product received by a particular user, "normally used" refers to a -typical or common use of that class of product, regardless of the status -of the particular user or of the way in which the particular user -actually uses, or expects or is expected to use, the product. A product -is a consumer product regardless of whether the product has substantial -commercial, industrial or non-consumer uses, unless such uses represent -the only significant mode of use of the product. - - "Installation Information" for a User Product means any methods, -procedures, authorization keys, or other information required to install -and execute modified versions of a covered work in that User Product from -a modified version of its Corresponding Source. The information must -suffice to ensure that the continued functioning of the modified object -code is in no case prevented or interfered with solely because -modification has been made. - - If you convey an object code work under this section in, or with, or -specifically for use in, a User Product, and the conveying occurs as -part of a transaction in which the right of possession and use of the -User Product is transferred to the recipient in perpetuity or for a -fixed term (regardless of how the transaction is characterized), the -Corresponding Source conveyed under this section must be accompanied -by the Installation Information. But this requirement does not apply -if neither you nor any third party retains the ability to install -modified object code on the User Product (for example, the work has -been installed in ROM). - - The requirement to provide Installation Information does not include a -requirement to continue to provide support service, warranty, or updates -for a work that has been modified or installed by the recipient, or for -the User Product in which it has been modified or installed. Access to a -network may be denied when the modification itself materially and -adversely affects the operation of the network or violates the rules and -protocols for communication across the network. - - Corresponding Source conveyed, and Installation Information provided, -in accord with this section must be in a format that is publicly -documented (and with an implementation available to the public in -source code form), and must require no special password or key for -unpacking, reading or copying. - - 7. Additional Terms. - - "Additional permissions" are terms that supplement the terms of this -License by making exceptions from one or more of its conditions. -Additional permissions that are applicable to the entire Program shall -be treated as though they were included in this License, to the extent -that they are valid under applicable law. If additional permissions -apply only to part of the Program, that part may be used separately -under those permissions, but the entire Program remains governed by -this License without regard to the additional permissions. - - When you convey a copy of a covered work, you may at your option -remove any additional permissions from that copy, or from any part of -it. (Additional permissions may be written to require their own -removal in certain cases when you modify the work.) You may place -additional permissions on material, added by you to a covered work, -for which you have or can give appropriate copyright permission. - - Notwithstanding any other provision of this License, for material you -add to a covered work, you may (if authorized by the copyright holders of -that material) supplement the terms of this License with terms: - - a) Disclaiming warranty or limiting liability differently from the - terms of sections 15 and 16 of this License; or - - b) Requiring preservation of specified reasonable legal notices or - author attributions in that material or in the Appropriate Legal - Notices displayed by works containing it; or - - c) Prohibiting misrepresentation of the origin of that material, or - requiring that modified versions of such material be marked in - reasonable ways as different from the original version; or - - d) Limiting the use for publicity purposes of names of licensors or - authors of the material; or - - e) Declining to grant rights under trademark law for use of some - trade names, trademarks, or service marks; or - - f) Requiring indemnification of licensors and authors of that - material by anyone who conveys the material (or modified versions of - it) with contractual assumptions of liability to the recipient, for - any liability that these contractual assumptions directly impose on - those licensors and authors. - - All other non-permissive additional terms are considered "further -restrictions" within the meaning of section 10. If the Program as you -received it, or any part of it, contains a notice stating that it is -governed by this License along with a term that is a further -restriction, you may remove that term. If a license document contains -a further restriction but permits relicensing or conveying under this -License, you may add to a covered work material governed by the terms -of that license document, provided that the further restriction does -not survive such relicensing or conveying. - - If you add terms to a covered work in accord with this section, you -must place, in the relevant source files, a statement of the -additional terms that apply to those files, or a notice indicating -where to find the applicable terms. - - Additional terms, permissive or non-permissive, may be stated in the -form of a separately written license, or stated as exceptions; -the above requirements apply either way. - - 8. Termination. - - You may not propagate or modify a covered work except as expressly -provided under this License. Any attempt otherwise to propagate or -modify it is void, and will automatically terminate your rights under -this License (including any patent licenses granted under the third -paragraph of section 11). - - However, if you cease all violation of this License, then your -license from a particular copyright holder is reinstated (a) -provisionally, unless and until the copyright holder explicitly and -finally terminates your license, and (b) permanently, if the copyright -holder fails to notify you of the violation by some reasonable means -prior to 60 days after the cessation. - - Moreover, your license from a particular copyright holder is -reinstated permanently if the copyright holder notifies you of the -violation by some reasonable means, this is the first time you have -received notice of violation of this License (for any work) from that -copyright holder, and you cure the violation prior to 30 days after -your receipt of the notice. - - Termination of your rights under this section does not terminate the -licenses of parties who have received copies or rights from you under -this License. If your rights have been terminated and not permanently -reinstated, you do not qualify to receive new licenses for the same -material under section 10. - - 9. Acceptance Not Required for Having Copies. - - You are not required to accept this License in order to receive or -run a copy of the Program. Ancillary propagation of a covered work -occurring solely as a consequence of using peer-to-peer transmission -to receive a copy likewise does not require acceptance. However, -nothing other than this License grants you permission to propagate or -modify any covered work. These actions infringe copyright if you do -not accept this License. Therefore, by modifying or propagating a -covered work, you indicate your acceptance of this License to do so. - - 10. Automatic Licensing of Downstream Recipients. - - Each time you convey a covered work, the recipient automatically -receives a license from the original licensors, to run, modify and -propagate that work, subject to this License. You are not responsible -for enforcing compliance by third parties with this License. - - An "entity transaction" is a transaction transferring control of an -organization, or substantially all assets of one, or subdividing an -organization, or merging organizations. If propagation of a covered -work results from an entity transaction, each party to that -transaction who receives a copy of the work also receives whatever -licenses to the work the party's predecessor in interest had or could -give under the previous paragraph, plus a right to possession of the -Corresponding Source of the work from the predecessor in interest, if -the predecessor has it or can get it with reasonable efforts. - - You may not impose any further restrictions on the exercise of the -rights granted or affirmed under this License. For example, you may -not impose a license fee, royalty, or other charge for exercise of -rights granted under this License, and you may not initiate litigation -(including a cross-claim or counterclaim in a lawsuit) alleging that -any patent claim is infringed by making, using, selling, offering for -sale, or importing the Program or any portion of it. - - 11. Patents. - - A "contributor" is a copyright holder who authorizes use under this -License of the Program or a work on which the Program is based. The -work thus licensed is called the contributor's "contributor version". - - A contributor's "essential patent claims" are all patent claims -owned or controlled by the contributor, whether already acquired or -hereafter acquired, that would be infringed by some manner, permitted -by this License, of making, using, or selling its contributor version, -but do not include claims that would be infringed only as a -consequence of further modification of the contributor version. For -purposes of this definition, "control" includes the right to grant -patent sublicenses in a manner consistent with the requirements of -this License. - - Each contributor grants you a non-exclusive, worldwide, royalty-free -patent license under the contributor's essential patent claims, to -make, use, sell, offer for sale, import and otherwise run, modify and -propagate the contents of its contributor version. - - In the following three paragraphs, a "patent license" is any express -agreement or commitment, however denominated, not to enforce a patent -(such as an express permission to practice a patent or covenant not to -sue for patent infringement). To "grant" such a patent license to a -party means to make such an agreement or commitment not to enforce a -patent against the party. - - If you convey a covered work, knowingly relying on a patent license, -and the Corresponding Source of the work is not available for anyone -to copy, free of charge and under the terms of this License, through a -publicly available network server or other readily accessible means, -then you must either (1) cause the Corresponding Source to be so -available, or (2) arrange to deprive yourself of the benefit of the -patent license for this particular work, or (3) arrange, in a manner -consistent with the requirements of this License, to extend the patent -license to downstream recipients. "Knowingly relying" means you have -actual knowledge that, but for the patent license, your conveying the -covered work in a country, or your recipient's use of the covered work -in a country, would infringe one or more identifiable patents in that -country that you have reason to believe are valid. - - If, pursuant to or in connection with a single transaction or -arrangement, you convey, or propagate by procuring conveyance of, a -covered work, and grant a patent license to some of the parties -receiving the covered work authorizing them to use, propagate, modify -or convey a specific copy of the covered work, then the patent license -you grant is automatically extended to all recipients of the covered -work and works based on it. - - A patent license is "discriminatory" if it does not include within -the scope of its coverage, prohibits the exercise of, or is -conditioned on the non-exercise of one or more of the rights that are -specifically granted under this License. You may not convey a covered -work if you are a party to an arrangement with a third party that is -in the business of distributing software, under which you make payment -to the third party based on the extent of your activity of conveying -the work, and under which the third party grants, to any of the -parties who would receive the covered work from you, a discriminatory -patent license (a) in connection with copies of the covered work -conveyed by you (or copies made from those copies), or (b) primarily -for and in connection with specific products or compilations that -contain the covered work, unless you entered into that arrangement, -or that patent license was granted, prior to 28 March 2007. - - Nothing in this License shall be construed as excluding or limiting -any implied license or other defenses to infringement that may -otherwise be available to you under applicable patent law. - - 12. No Surrender of Others' Freedom. - - If 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 convey a -covered work so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you may -not convey it at all. For example, if you agree to terms that obligate you -to collect a royalty for further conveying from those to whom you convey -the Program, the only way you could satisfy both those terms and this -License would be to refrain entirely from conveying the Program. - - 13. Use with the GNU Affero General Public License. - - Notwithstanding any other provision of this License, you have -permission to link or combine any covered work with a work licensed -under version 3 of the GNU Affero General Public License into a single -combined work, and to convey the resulting work. The terms of this -License will continue to apply to the part which is the covered work, -but the special requirements of the GNU Affero General Public License, -section 13, concerning interaction through a network will apply to the -combination as such. - - 14. Revised Versions of this License. - - The Free Software Foundation may publish revised and/or new versions of -the GNU 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 that a certain numbered version of the GNU General -Public License "or any later version" applies to it, you have the -option of following the terms and conditions either of that numbered -version or of any later version published by the Free Software -Foundation. If the Program does not specify a version number of the -GNU General Public License, you may choose any version ever published -by the Free Software Foundation. - - If the Program specifies that a proxy can decide which future -versions of the GNU General Public License can be used, that proxy's -public statement of acceptance of a version permanently authorizes you -to choose that version for the Program. - - Later license versions may give you additional or different -permissions. However, no additional obligations are imposed on any -author or copyright holder as a result of your choosing to follow a -later version. - - 15. Disclaimer of Warranty. - - 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. - - 16. Limitation of Liability. - - IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS -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. - - 17. Interpretation of Sections 15 and 16. - - If the disclaimer of warranty and limitation of liability provided -above cannot be given local legal effect according to their terms, -reviewing courts shall apply local law that most closely approximates -an absolute waiver of all civil liability in connection with the -Program, unless a warranty or assumption of liability accompanies a -copy of the Program in return for a fee. - - 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 -state the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - <one line to give the program's name and a brief idea of what it does.> - Copyright (C) <year> <name of author> - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 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 <http://www.gnu.org/licenses/>. - -Also add information on how to contact you by electronic and paper mail. - - If the program does terminal interaction, make it output a short -notice like this when it starts in an interactive mode: - - <program> Copyright (C) <year> <name of author> - This program 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, your program's commands -might be different; for a GUI interface, you would use an "about box". - - You should also get your employer (if you work as a programmer) or school, -if any, to sign a "copyright disclaimer" for the program, if necessary. -For more information on this, and how to apply and follow the GNU GPL, see -<http://www.gnu.org/licenses/>. - - The GNU 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 Lesser General -Public License instead of this License. But first, please read -<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/media/libav/COPYING.LGPLv2.1 b/media/libav/COPYING.LGPLv2.1 deleted file mode 100644 index 58af0d378..000000000 --- a/media/libav/COPYING.LGPLv2.1 +++ /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. - - <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., 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. - - <signature of Ty Coon>, 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/media/libav/COPYING.LGPLv3 b/media/libav/COPYING.LGPLv3 deleted file mode 100644 index 65c5ca88a..000000000 --- a/media/libav/COPYING.LGPLv3 +++ /dev/null @@ -1,165 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - - This version of the GNU Lesser General Public License incorporates -the terms and conditions of version 3 of the GNU General Public -License, supplemented by the additional permissions listed below. - - 0. Additional Definitions. - - As used herein, "this License" refers to version 3 of the GNU Lesser -General Public License, and the "GNU GPL" refers to version 3 of the GNU -General Public License. - - "The Library" refers to a covered work governed by this License, -other than an Application or a Combined Work as defined below. - - An "Application" is any work that makes use of an interface provided -by the Library, but which is not otherwise based on the Library. -Defining a subclass of a class defined by the Library is deemed a mode -of using an interface provided by the Library. - - A "Combined Work" is a work produced by combining or linking an -Application with the Library. The particular version of the Library -with which the Combined Work was made is also called the "Linked -Version". - - The "Minimal Corresponding Source" for a Combined Work means the -Corresponding Source for the Combined Work, excluding any source code -for portions of the Combined Work that, considered in isolation, are -based on the Application, and not on the Linked Version. - - The "Corresponding Application Code" for a Combined Work means the -object code and/or source code for the Application, including any data -and utility programs needed for reproducing the Combined Work from the -Application, but excluding the System Libraries of the Combined Work. - - 1. Exception to Section 3 of the GNU GPL. - - You may convey a covered work under sections 3 and 4 of this License -without being bound by section 3 of the GNU GPL. - - 2. Conveying Modified Versions. - - If you modify a copy of the Library, and, in your modifications, a -facility refers to a function or data to be supplied by an Application -that uses the facility (other than as an argument passed when the -facility is invoked), then you may convey a copy of the modified -version: - - a) under this License, provided that you make a good faith effort to - ensure that, in the event an Application does not supply the - function or data, the facility still operates, and performs - whatever part of its purpose remains meaningful, or - - b) under the GNU GPL, with none of the additional permissions of - this License applicable to that copy. - - 3. Object Code Incorporating Material from Library Header Files. - - The object code form of an Application may incorporate material from -a header file that is part of the Library. You may convey such object -code under terms of your choice, provided that, if the incorporated -material is not limited to numerical parameters, data structure -layouts and accessors, or small macros, inline functions and templates -(ten or fewer lines in length), you do both of the following: - - a) Give prominent notice with each copy of the object code that the - Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the object code with a copy of the GNU GPL and this license - document. - - 4. Combined Works. - - You may convey a Combined Work under terms of your choice that, -taken together, effectively do not restrict modification of the -portions of the Library contained in the Combined Work and reverse -engineering for debugging such modifications, if you also do each of -the following: - - a) Give prominent notice with each copy of the Combined Work that - the Library is used in it and that the Library and its use are - covered by this License. - - b) Accompany the Combined Work with a copy of the GNU GPL and this license - document. - - c) For a Combined Work that displays copyright notices during - execution, include the copyright notice for the Library among - these notices, as well as a reference directing the user to the - copies of the GNU GPL and this license document. - - d) Do one of the following: - - 0) Convey the Minimal Corresponding Source under the terms of this - License, and the Corresponding Application Code in a form - suitable for, and under terms that permit, the user to - recombine or relink the Application with a modified version of - the Linked Version to produce a modified Combined Work, in the - manner specified by section 6 of the GNU GPL for conveying - Corresponding Source. - - 1) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (a) uses at run time - a copy of the Library already present on the user's computer - system, and (b) will operate properly with a modified version - of the Library that is interface-compatible with the Linked - Version. - - e) Provide Installation Information, but only if you would otherwise - be required to provide such information under section 6 of the - GNU GPL, and only to the extent that such information is - necessary to install and execute a modified version of the - Combined Work produced by recombining or relinking the - Application with a modified version of the Linked Version. (If - you use option 4d0, the Installation Information must accompany - the Minimal Corresponding Source and Corresponding Application - Code. If you use option 4d1, you must provide the Installation - Information in the manner specified by section 6 of the GNU GPL - for conveying Corresponding Source.) - - 5. Combined Libraries. - - 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 that are not Applications and are not covered by this -License, and convey such a combined library under terms of your -choice, if you do both of the following: - - a) Accompany the combined library with a copy of the same work based - on the Library, uncombined with any other library facilities, - conveyed under the terms of this License. - - b) Give prominent notice with the combined library that part of it - is a work based on the Library, and explaining where to find the - accompanying uncombined form of the same work. - - 6. Revised Versions of the GNU Lesser General Public License. - - The Free Software Foundation may publish revised and/or new versions -of the GNU 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 as you received it specifies that a certain numbered version -of the GNU Lesser General Public License "or any later version" -applies to it, you have the option of following the terms and -conditions either of that published version or of any later version -published by the Free Software Foundation. If the Library as you -received it does not specify a version number of the GNU Lesser -General Public License, you may choose any version of the GNU Lesser -General Public License ever published by the Free Software Foundation. - - If the Library as you received it specifies that a proxy can decide -whether future versions of the GNU Lesser General Public License shall -apply, that proxy's public statement of acceptance of any version is -permanent authorization for you to choose that version for the -Library. diff --git a/media/libav/CREDITS b/media/libav/CREDITS deleted file mode 100644 index 4a537786f..000000000 --- a/media/libav/CREDITS +++ /dev/null @@ -1,55 +0,0 @@ -This file contains the names of some of the people who have contributed to -Libav/FFmpeg. The names are sorted alphabetically by last name. As this file is -currently quite outdated and git serves as a much better tool for determining -authorship, it remains here for historical reasons only. - -Dénes Balatoni -Michel Bardiaux -Fabrice Bellard -Patrice Bensoussan -Alex Beregszaszi -BERO -Thilo Borgmann -Mario Brito -Ronald Bultje -Alex Converse -Maarten Daniels -Reimar Doeffinger -Tim Ferguson -Brian Foley -Arpad Gereoffy -Philip Gladstone -Vladimir Gneushev -Roine Gustafsson -David Hammerton -Wolfgang Hesseler -Marc Hoffman -Falk Hueffner -Aurélien Jacobs -Steven Johnson -Zdenek Kabelac -Robin Kay -Todd Kirby -Nick Kurshev -Benjamin Larsson -Loïc Le Loarer -Daniel Maas -Mike Melanson -Loren Merritt -Jeff Muizelaar -Michael Niedermayer -François Revol -Peter Ross -Måns Rullgård -Stefano Sabatini -Roman Shaposhnik -Oded Shimon -Dieter Shirley -Konstantin Shishkov -Juan J. Sierralta -Ewald Snel -Sascha Sommer -Leon van Stuivenberg -Roberto Togni -Lionel Ulmer -Reynaldo Verdejo diff --git a/media/libav/LICENSE b/media/libav/LICENSE deleted file mode 100644 index 701e6e1d6..000000000 --- a/media/libav/LICENSE +++ /dev/null @@ -1,66 +0,0 @@ -Libav: -====== - -Most files in Libav are under the GNU Lesser General Public License version 2.1 -or later (LGPL v2.1+). Read the file COPYING.LGPLv2.1 for details. Some other -files have MIT/X11/BSD-style licenses. In combination the LGPL v2.1+ applies to -Libav. - -Some optional parts of Libav are licensed under the GNU General Public License -version 2 or later (GPL v2+). See the file COPYING.GPLv2 for details. None of -these parts are used by default, you have to explicitly pass --enable-gpl to -configure to activate them. In this case, Libav's license changes to GPL v2+. - -Specifically, the GPL parts of Libav are - -- the X11 grabber in libavdevice/x11grab.c -- the texi2pod.pl tool -- the following filters in libavfilter: - - vf_blackframe.c - - vf_boxblur.c - - vf_cropdetect.c - - vf_delogo.c - - vf_hqdn3d.c - - vf_interlace.c - -Should you, for whatever reason, prefer to use version 3 of the (L)GPL, then -the configure parameter --enable-version3 will activate this licensing option -for you. Read the file COPYING.LGPLv3 or, if you have enabled GPL parts, -COPYING.GPLv3 to learn the exact legal terms that apply in this case. - -There are a handful of files under other licensing terms, namely: - -* The files libavcodec/jfdctfst.c, libavcodec/jfdctint_template.c and - libavcodec/jrevdct.c are taken from libjpeg, see the top of the files for - licensing details. Specifically note that you must credit the IJG in the - documentation accompanying your program if you only distribute executables. - You must also indicate any changes including additions and deletions to - those three files in the documentation. - - -external libraries -================== - -Libav can be combined with a number of external libraries, which sometimes -affect the licensing of binaries resulting from the combination. - -compatible libraries --------------------- - -The libcdio, libx264, libx265, libxavs and libxvid libraries are under GPL. When -combining them with Libav, Libav needs to be licensed as GPL as well by -passing --enable-gpl to configure. - -The OpenCORE and VisualOn libraries are under the Apache License 2.0. That -license is incompatible with the LGPL v2.1 and the GPL v2, but not with -version 3 of those licenses. So to combine these libraries with Libav, the -license version needs to be upgraded by passing --enable-version3 to configure. - -incompatible libraries ----------------------- - -The Fraunhofer AAC library, FAAC and OpenSSL are under licenses incompatible -with all (L)GPL versions. Thus, unfortunately, since both licenses cannot be -satisfied simultaneously, binaries resulting from the combination of Libav -with these libraries are nonfree und unredistributable. If you wish to enable -any of these libraries nonetheless, pass --enable-nonfree to configure. diff --git a/media/libav/README b/media/libav/README deleted file mode 120000 index 42061c01a..000000000 --- a/media/libav/README +++ /dev/null @@ -1 +0,0 @@ -README.md
\ No newline at end of file diff --git a/media/libav/README.md b/media/libav/README.md deleted file mode 100644 index 2dc668a24..000000000 --- a/media/libav/README.md +++ /dev/null @@ -1,40 +0,0 @@ -Libav -===== - -Libav is a collection of libraries and tools to process multimedia content -such as audio, video, subtitles and related metadata. - -## Libraries - -* `libavcodec` provides implementation of a wider range of codecs. -* `libavformat` implements streaming protocols, container formats and basic I/O access. -* `libavutil` includes hashers, decompressors and miscellaneous utility functions. -* `libavfilter` provides a mean to alter decoded Audio and Video through chain of filters. -* `libavdevice` provides an abstraction to access capture and playback devices. -* `libavresample` implements audio mixing and resampling routines. -* `libswscale` implements color conversion and scaling routines. - -## Tools - -* [avconv](http://libav.org/avconv.html) is a command line toolbox to - manipulate, convert and stream multimedia content. -* [avplay](http://libav.org/avplay.html) is a minimalistic multimedia player. -* [avprobe](http://libav.org/avprobe.html) is a simple analisys tool to inspect - multimedia content. -* Additional small tools such as `aviocat`, `ismindex` and `qt-faststart`. - -## Documentation - -The offline documentation is available in the **doc/** directory. - -The online documentation is available in the main [website](http://libav.org) -and in the [wiki](http://wiki.libav.org). - -### Examples - -Conding examples are available in the **doc/example** directory. - -## License - -Libav codebase is mainly LGPL-licensed with optional components licensed under -GPL. Please refer to the LICENSE file for detailed information. diff --git a/media/libav/README_MOZILLA b/media/libav/README_MOZILLA deleted file mode 100644 index 90bb41f8b..000000000 --- a/media/libav/README_MOZILLA +++ /dev/null @@ -1,20 +0,0 @@ -This directory contains files used in gecko builds from libav -(http://libav.org). The current files are from v11.3 of the library. -All source files match their path from the library's source archive. - -Currently, we only use the fft portion of the library, and only on x86 -based platforms. If this changes, configuration files will most likely -need to be updated. - -Configuration files were initially generated by running configure on -the libav project, then dividing the config.h files into multiple -files to reduce repeated entries. config_common.h contains package and -architecture configuration information, and are used on all platforms. -Platform specific config files (config_win.h/asm, config_unix.h/asm, -etc) contain platform specific header information. .asm files should -match their .h counterparts. - -If new architectures or projects are added, we will need to update -defines to the config_common files. Platform headers should only need -to be changed if we upgrade libav versions and require new headers to -be found.
\ No newline at end of file diff --git a/media/libav/RELEASE b/media/libav/RELEASE deleted file mode 100644 index 8bb422239..000000000 --- a/media/libav/RELEASE +++ /dev/null @@ -1 +0,0 @@ -11.3 diff --git a/media/libav/VERSION b/media/libav/VERSION deleted file mode 100644 index 8bb422239..000000000 --- a/media/libav/VERSION +++ /dev/null @@ -1 +0,0 @@ -11.3 diff --git a/media/libav/avfft_dummy_funcs.c b/media/libav/avfft_dummy_funcs.c deleted file mode 100644 index 929dc6d92..000000000 --- a/media/libav/avfft_dummy_funcs.c +++ /dev/null @@ -1,64 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// In libavcodec/fft_template.c, fft initialization happens via if statements -// checked on preprocessor defines. On many platforms, these statements are -// culled during compilation. However, in situations where optimization is -// disabled on windows visual studio (PGO, using --disable-optimization in -// mozconfig, etc), these branches are still compiled, meaning we end up with -// linker errors due calls to undefined functions. The dummy functions in this -// file provide bodies so that the library will link in that case, even though -// these will never be called. - -#include "libavcodec/fft.h" - -void -ff_fft_init_aarch64(FFTContext *s) -{ -} - -void -ff_fft_init_arm(FFTContext *s) -{ -} - -void -ff_fft_init_ppc(FFTContext *s) -{ -} - -void -ff_fft_fixed_init_arm(FFTContext *s) -{ -} - -void -ff_rdft_init_arm(RDFTContext *s) -{ -} - -int -ff_get_cpu_flags_aarch64(void) -{ - return 0; -} - -int -ff_get_cpu_flags_arm(void) -{ - return 0; -} - -int -ff_get_cpu_flags_ppc(void) -{ - return 0; -} - -void -ff_mdct_calcw_c(FFTContext *s, FFTDouble *out, const FFTSample *input) -{ -} diff --git a/media/libav/avfft_perms.h b/media/libav/avfft_perms.h deleted file mode 100644 index b223e6711..000000000 --- a/media/libav/avfft_perms.h +++ /dev/null @@ -1,17 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// Include file for fixing symbol visibility on OS X, until system headers work -// there. - -#ifndef MOZILLA_AVFFT_PERMS_H -#define MOZILLA_AVFFT_PERMS_H - -#pragma GCC visibility push(default) -#include "libavcodec/avfft.h" -#pragma GCC visibility pop - -#endif // MOZILLA_AVFFT_PERMS_H diff --git a/media/libav/config.h b/media/libav/config.h deleted file mode 100644 index 4abd41104..000000000 --- a/media/libav/config.h +++ /dev/null @@ -1,24 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et cindent: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -// libav uses an autoconf created config file for compile time definitions. -// Since we're only using a tiny part of the library, the configuration for -// common platforms have been pregenerated, and should be enough for our -// needs. -// -// The platform specific config files contain header existence information and -// things like prefixing requirements. The common header has processor -// architecture definitions and project compilation directives. - -#ifndef MOZ_LIBAV_CONFIG_H -#define MOZ_LIBAV_CONFIG_H -#if defined(XP_WIN) -#include "config_win.h" -#elif defined(XP_UNIX) -#include "config_unix.h" -#endif -#include "config_common.h" -#endif diff --git a/media/libav/config_common.asm b/media/libav/config_common.asm deleted file mode 100644 index 84e690ee6..000000000 --- a/media/libav/config_common.asm +++ /dev/null @@ -1,1083 +0,0 @@ -%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 1 -%ifndef __x86_64__ -%define ARCH_X86_32 1 -%define ARCH_X86_64 0 -%else -%define ARCH_X86_32 0 -%define ARCH_X86_64 1 -%endif -%define CONFIG_BSFS 0 -%define CONFIG_DECODERS 0 -%define CONFIG_DEMUXERS 0 -%define CONFIG_ENCODERS 0 -%define CONFIG_FILTERS 0 -%define CONFIG_HWACCELS 0 -%define CONFIG_INDEVS 0 -%define CONFIG_MUXERS 0 -%define CONFIG_OUTDEVS 0 -%define CONFIG_PARSERS 0 -%define CONFIG_PROTOCOLS 0 -%define CONFIG_AVCODEC_EXAMPLE 0 -%define CONFIG_FILTER_AUDIO_EXAMPLE 0 -%define CONFIG_METADATA_EXAMPLE 0 -%define CONFIG_OUTPUT_EXAMPLE 0 -%define CONFIG_TRANSCODE_AAC_EXAMPLE 0 -%define CONFIG_AVISYNTH 0 -%define CONFIG_BZLIB 0 -%define CONFIG_FREI0R 0 -%define CONFIG_GNUTLS 0 -%define CONFIG_LIBBS2B 0 -%define CONFIG_LIBCDIO 0 -%define CONFIG_LIBDC1394 0 -%define CONFIG_LIBFAAC 0 -%define CONFIG_LIBFDK_AAC 0 -%define CONFIG_LIBFONTCONFIG 0 -%define CONFIG_LIBFREETYPE 0 -%define CONFIG_LIBGSM 0 -%define CONFIG_LIBILBC 0 -%define CONFIG_LIBMP3LAME 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_LIBSPEEX 0 -%define CONFIG_LIBTHEORA 0 -%define CONFIG_LIBTWOLAME 0 -%define CONFIG_LIBVO_AACENC 0 -%define CONFIG_LIBVO_AMRWBENC 0 -%define CONFIG_LIBVORBIS 0 -%define CONFIG_LIBVPX 0 -%define CONFIG_LIBWAVPACK 0 -%define CONFIG_LIBWEBP 0 -%define CONFIG_LIBX264 0 -%define CONFIG_LIBX265 0 -%define CONFIG_LIBXAVS 0 -%define CONFIG_LIBXVID 0 -%define CONFIG_OPENSSL 0 -%define CONFIG_X11GRAB 0 -%define CONFIG_ZLIB 0 -%define CONFIG_GRAY 0 -%define CONFIG_HARDCODED_TABLES 0 -%define CONFIG_RUNTIME_CPUDETECT 0 -%define CONFIG_SAFE_BITSTREAM_READER 0 -%define CONFIG_SHARED 0 -%define CONFIG_SMALL 0 -%define CONFIG_SRAM 0 -%define CONFIG_STATIC 0 -%define CONFIG_SWSCALE_ALPHA 0 -%define CONFIG_DXVA2 0 -%define CONFIG_VAAPI 0 -%define CONFIG_VDA 0 -%define CONFIG_VDPAU 0 -%define CONFIG_GPL 0 -%define CONFIG_NONFREE 0 -%define CONFIG_VERSION3 0 -%define CONFIG_AVCODEC 0 -%define CONFIG_AVDEVICE 0 -%define CONFIG_AVFILTER 0 -%define CONFIG_AVFORMAT 0 -%define CONFIG_AVRESAMPLE 0 -%define CONFIG_AVUTIL 0 -%define CONFIG_SWSCALE 0 -%define CONFIG_AVCONV 0 -%define CONFIG_AVPLAY 0 -%define CONFIG_AVPROBE 0 -%define CONFIG_DCT 0 -%define CONFIG_DOC 0 -%define CONFIG_ERROR_RESILIENCE 0 -%define CONFIG_FFT 0 -%define CONFIG_LSP 0 -%define CONFIG_LZO 0 -%define CONFIG_MDCT 0 -%define CONFIG_NETWORK 0 -%define CONFIG_RDFT 1 -%define CONFIG_MEMALIGN_HACK 0 -%define CONFIG_NEON_CLOBBER_TEST 0 -%define CONFIG_PIC 0 -%define CONFIG_POD2MAN 0 -%define CONFIG_TEXI2HTML 0 -%define CONFIG_THUMB 0 -%define CONFIG_XMM_CLOBBER_TEST 0 -%define CONFIG_AANDCTTABLES 0 -%define CONFIG_AC3DSP 0 -%define CONFIG_AUDIO_FRAME_QUEUE 0 -%define CONFIG_AUDIODSP 0 -%define CONFIG_BLOCKDSP 0 -%define CONFIG_BSWAPDSP 0 -%define CONFIG_CABAC 0 -%define CONFIG_DVPROFILE 0 -%define CONFIG_FDCTDSP 0 -%define CONFIG_GCRYPT 0 -%define CONFIG_GOLOMB 0 -%define CONFIG_GPLV3 0 -%define CONFIG_H263DSP 0 -%define CONFIG_H264CHROMA 0 -%define CONFIG_H264DSP 0 -%define CONFIG_H264PRED 0 -%define CONFIG_H264QPEL 0 -%define CONFIG_HPELDSP 0 -%define CONFIG_HUFFMAN 0 -%define CONFIG_HUFFYUVDSP 0 -%define CONFIG_HUFFYUVENCDSP 0 -%define CONFIG_IDCTDSP 0 -%define CONFIG_IIRFILTER 0 -%define CONFIG_INTRAX8 0 -%define CONFIG_LGPLV3 0 -%define CONFIG_LPC 0 -%define CONFIG_ME_CMP 0 -%define CONFIG_MPEG_ER 0 -%define CONFIG_MPEGAUDIO 0 -%define CONFIG_MPEGAUDIODSP 0 -%define CONFIG_MPEGVIDEO 0 -%define CONFIG_MPEGVIDEOENC 0 -%define CONFIG_NETTLE 0 -%define CONFIG_PIXBLOCKDSP 0 -%define CONFIG_QPELDSP 0 -%define CONFIG_RANGECODER 0 -%define CONFIG_RIFFDEC 0 -%define CONFIG_RIFFENC 0 -%define CONFIG_RTPDEC 0 -%define CONFIG_RTPENC_CHAIN 0 -%define CONFIG_SINEWIN 0 -%define CONFIG_STARTCODE 0 -%define CONFIG_TPELDSP 0 -%define CONFIG_VIDEODSP 0 -%define CONFIG_VP3DSP 0 -%define CONFIG_AAC_ADTSTOASC_BSF 0 -%define CONFIG_CHOMP_BSF 0 -%define CONFIG_DUMP_EXTRADATA_BSF 0 -%define CONFIG_H264_MP4TOANNEXB_BSF 0 -%define CONFIG_IMX_DUMP_HEADER_BSF 0 -%define CONFIG_MJPEG2JPEG_BSF 0 -%define CONFIG_MJPEGA_DUMP_HEADER_BSF 0 -%define CONFIG_MOV2TEXTSUB_BSF 0 -%define CONFIG_NOISE_BSF 0 -%define CONFIG_REMOVE_EXTRADATA_BSF 0 -%define CONFIG_TEXT2MOVSUB_BSF 0 -%define CONFIG_AASC_DECODER 0 -%define CONFIG_AIC_DECODER 0 -%define CONFIG_ALIAS_PIX_DECODER 0 -%define CONFIG_AMV_DECODER 0 -%define CONFIG_ANM_DECODER 0 -%define CONFIG_ANSI_DECODER 0 -%define CONFIG_ASV1_DECODER 0 -%define CONFIG_ASV2_DECODER 0 -%define CONFIG_AURA_DECODER 0 -%define CONFIG_AURA2_DECODER 0 -%define CONFIG_AVS_DECODER 0 -%define CONFIG_BETHSOFTVID_DECODER 0 -%define CONFIG_BFI_DECODER 0 -%define CONFIG_BINK_DECODER 0 -%define CONFIG_BMP_DECODER 0 -%define CONFIG_BMV_VIDEO_DECODER 0 -%define CONFIG_BRENDER_PIX_DECODER 0 -%define CONFIG_C93_DECODER 0 -%define CONFIG_CAVS_DECODER 0 -%define CONFIG_CDGRAPHICS_DECODER 0 -%define CONFIG_CDXL_DECODER 0 -%define CONFIG_CINEPAK_DECODER 0 -%define CONFIG_CLJR_DECODER 0 -%define CONFIG_CLLC_DECODER 0 -%define CONFIG_COMFORTNOISE_DECODER 0 -%define CONFIG_CSCD_DECODER 0 -%define CONFIG_CYUV_DECODER 0 -%define CONFIG_DFA_DECODER 0 -%define CONFIG_DNXHD_DECODER 0 -%define CONFIG_DPX_DECODER 0 -%define CONFIG_DSICINVIDEO_DECODER 0 -%define CONFIG_DVVIDEO_DECODER 0 -%define CONFIG_DXA_DECODER 0 -%define CONFIG_DXTORY_DECODER 0 -%define CONFIG_EACMV_DECODER 0 -%define CONFIG_EAMAD_DECODER 0 -%define CONFIG_EATGQ_DECODER 0 -%define CONFIG_EATGV_DECODER 0 -%define CONFIG_EATQI_DECODER 0 -%define CONFIG_EIGHTBPS_DECODER 0 -%define CONFIG_EIGHTSVX_EXP_DECODER 0 -%define CONFIG_EIGHTSVX_FIB_DECODER 0 -%define CONFIG_ESCAPE124_DECODER 0 -%define CONFIG_ESCAPE130_DECODER 0 -%define CONFIG_EXR_DECODER 0 -%define CONFIG_FFV1_DECODER 0 -%define CONFIG_FFVHUFF_DECODER 0 -%define CONFIG_FIC_DECODER 0 -%define CONFIG_FLASHSV_DECODER 0 -%define CONFIG_FLASHSV2_DECODER 0 -%define CONFIG_FLIC_DECODER 0 -%define CONFIG_FLV_DECODER 0 -%define CONFIG_FOURXM_DECODER 0 -%define CONFIG_FRAPS_DECODER 0 -%define CONFIG_FRWU_DECODER 0 -%define CONFIG_G2M_DECODER 0 -%define CONFIG_GIF_DECODER 0 -%define CONFIG_H261_DECODER 0 -%define CONFIG_H263_DECODER 0 -%define CONFIG_H263I_DECODER 0 -%define CONFIG_H264_DECODER 0 -%define CONFIG_HEVC_DECODER 0 -%define CONFIG_HNM4_VIDEO_DECODER 0 -%define CONFIG_HUFFYUV_DECODER 0 -%define CONFIG_IDCIN_DECODER 0 -%define CONFIG_IFF_BYTERUN1_DECODER 0 -%define CONFIG_IFF_ILBM_DECODER 0 -%define CONFIG_INDEO2_DECODER 0 -%define CONFIG_INDEO3_DECODER 0 -%define CONFIG_INDEO4_DECODER 0 -%define CONFIG_INDEO5_DECODER 0 -%define CONFIG_INTERPLAY_VIDEO_DECODER 0 -%define CONFIG_JPEG2000_DECODER 0 -%define CONFIG_JPEGLS_DECODER 0 -%define CONFIG_JV_DECODER 0 -%define CONFIG_KGV1_DECODER 0 -%define CONFIG_KMVC_DECODER 0 -%define CONFIG_LAGARITH_DECODER 0 -%define CONFIG_LOCO_DECODER 0 -%define CONFIG_MDEC_DECODER 0 -%define CONFIG_MIMIC_DECODER 0 -%define CONFIG_MJPEG_DECODER 0 -%define CONFIG_MJPEGB_DECODER 0 -%define CONFIG_MMVIDEO_DECODER 0 -%define CONFIG_MOTIONPIXELS_DECODER 0 -%define CONFIG_MPEG_XVMC_DECODER 0 -%define CONFIG_MPEG1VIDEO_DECODER 0 -%define CONFIG_MPEG2VIDEO_DECODER 0 -%define CONFIG_MPEG4_DECODER 0 -%define CONFIG_MSA1_DECODER 0 -%define CONFIG_MSMPEG4V1_DECODER 0 -%define CONFIG_MSMPEG4V2_DECODER 0 -%define CONFIG_MSMPEG4V3_DECODER 0 -%define CONFIG_MSRLE_DECODER 0 -%define CONFIG_MSS1_DECODER 0 -%define CONFIG_MSS2_DECODER 0 -%define CONFIG_MSVIDEO1_DECODER 0 -%define CONFIG_MSZH_DECODER 0 -%define CONFIG_MTS2_DECODER 0 -%define CONFIG_MVC1_DECODER 0 -%define CONFIG_MVC2_DECODER 0 -%define CONFIG_MXPEG_DECODER 0 -%define CONFIG_NUV_DECODER 0 -%define CONFIG_PAF_VIDEO_DECODER 0 -%define CONFIG_PAM_DECODER 0 -%define CONFIG_PBM_DECODER 0 -%define CONFIG_PCX_DECODER 0 -%define CONFIG_PGM_DECODER 0 -%define CONFIG_PGMYUV_DECODER 0 -%define CONFIG_PICTOR_DECODER 0 -%define CONFIG_PNG_DECODER 0 -%define CONFIG_PPM_DECODER 0 -%define CONFIG_PRORES_DECODER 0 -%define CONFIG_PTX_DECODER 0 -%define CONFIG_QDRAW_DECODER 0 -%define CONFIG_QPEG_DECODER 0 -%define CONFIG_QTRLE_DECODER 0 -%define CONFIG_R10K_DECODER 0 -%define CONFIG_R210_DECODER 0 -%define CONFIG_RAWVIDEO_DECODER 0 -%define CONFIG_RL2_DECODER 0 -%define CONFIG_ROQ_DECODER 0 -%define CONFIG_RPZA_DECODER 0 -%define CONFIG_RV10_DECODER 0 -%define CONFIG_RV20_DECODER 0 -%define CONFIG_RV30_DECODER 0 -%define CONFIG_RV40_DECODER 0 -%define CONFIG_S302M_DECODER 0 -%define CONFIG_SANM_DECODER 0 -%define CONFIG_SGI_DECODER 0 -%define CONFIG_SGIRLE_DECODER 0 -%define CONFIG_SMACKER_DECODER 0 -%define CONFIG_SMC_DECODER 0 -%define CONFIG_SP5X_DECODER 0 -%define CONFIG_SUNRAST_DECODER 0 -%define CONFIG_SVQ1_DECODER 0 -%define CONFIG_SVQ3_DECODER 0 -%define CONFIG_TARGA_DECODER 0 -%define CONFIG_THEORA_DECODER 0 -%define CONFIG_THP_DECODER 0 -%define CONFIG_TIERTEXSEQVIDEO_DECODER 0 -%define CONFIG_TIFF_DECODER 0 -%define CONFIG_TMV_DECODER 0 -%define CONFIG_TRUEMOTION1_DECODER 0 -%define CONFIG_TRUEMOTION2_DECODER 0 -%define CONFIG_TSCC_DECODER 0 -%define CONFIG_TSCC2_DECODER 0 -%define CONFIG_TXD_DECODER 0 -%define CONFIG_ULTI_DECODER 0 -%define CONFIG_UTVIDEO_DECODER 0 -%define CONFIG_V210_DECODER 0 -%define CONFIG_V210X_DECODER 0 -%define CONFIG_V410_DECODER 0 -%define CONFIG_VB_DECODER 0 -%define CONFIG_VBLE_DECODER 0 -%define CONFIG_VC1_DECODER 0 -%define CONFIG_VC1IMAGE_DECODER 0 -%define CONFIG_VCR1_DECODER 0 -%define CONFIG_VMDVIDEO_DECODER 0 -%define CONFIG_VMNC_DECODER 0 -%define CONFIG_VP3_DECODER 0 -%define CONFIG_VP5_DECODER 0 -%define CONFIG_VP6_DECODER 0 -%define CONFIG_VP6A_DECODER 0 -%define CONFIG_VP6F_DECODER 0 -%define CONFIG_VP7_DECODER 0 -%define CONFIG_VP8_DECODER 0 -%define CONFIG_VP9_DECODER 0 -%define CONFIG_VQA_DECODER 0 -%define CONFIG_WEBP_DECODER 0 -%define CONFIG_WMV1_DECODER 0 -%define CONFIG_WMV2_DECODER 0 -%define CONFIG_WMV3_DECODER 0 -%define CONFIG_WMV3IMAGE_DECODER 0 -%define CONFIG_WNV1_DECODER 0 -%define CONFIG_XAN_WC3_DECODER 0 -%define CONFIG_XAN_WC4_DECODER 0 -%define CONFIG_XBM_DECODER 0 -%define CONFIG_XL_DECODER 0 -%define CONFIG_XWD_DECODER 0 -%define CONFIG_YOP_DECODER 0 -%define CONFIG_ZEROCODEC_DECODER 0 -%define CONFIG_ZLIB_DECODER 0 -%define CONFIG_ZMBV_DECODER 0 -%define CONFIG_AAC_DECODER 0 -%define CONFIG_AAC_LATM_DECODER 0 -%define CONFIG_AC3_DECODER 0 -%define CONFIG_ALAC_DECODER 0 -%define CONFIG_ALS_DECODER 0 -%define CONFIG_AMRNB_DECODER 0 -%define CONFIG_AMRWB_DECODER 0 -%define CONFIG_APE_DECODER 0 -%define CONFIG_ATRAC1_DECODER 0 -%define CONFIG_ATRAC3_DECODER 0 -%define CONFIG_ATRAC3P_DECODER 0 -%define CONFIG_BINKAUDIO_DCT_DECODER 0 -%define CONFIG_BINKAUDIO_RDFT_DECODER 0 -%define CONFIG_BMV_AUDIO_DECODER 0 -%define CONFIG_COOK_DECODER 0 -%define CONFIG_DCA_DECODER 0 -%define CONFIG_DSICINAUDIO_DECODER 0 -%define CONFIG_EAC3_DECODER 0 -%define CONFIG_FLAC_DECODER 0 -%define CONFIG_G723_1_DECODER 0 -%define CONFIG_GSM_DECODER 0 -%define CONFIG_GSM_MS_DECODER 0 -%define CONFIG_IAC_DECODER 0 -%define CONFIG_IMC_DECODER 0 -%define CONFIG_MACE3_DECODER 0 -%define CONFIG_MACE6_DECODER 0 -%define CONFIG_METASOUND_DECODER 0 -%define CONFIG_MLP_DECODER 0 -%define CONFIG_MP1_DECODER 0 -%define CONFIG_MP1FLOAT_DECODER 0 -%define CONFIG_MP2_DECODER 0 -%define CONFIG_MP2FLOAT_DECODER 0 -%define CONFIG_MP3_DECODER 0 -%define CONFIG_MP3FLOAT_DECODER 0 -%define CONFIG_MP3ADU_DECODER 0 -%define CONFIG_MP3ADUFLOAT_DECODER 0 -%define CONFIG_MP3ON4_DECODER 0 -%define CONFIG_MP3ON4FLOAT_DECODER 0 -%define CONFIG_MPC7_DECODER 0 -%define CONFIG_MPC8_DECODER 0 -%define CONFIG_NELLYMOSER_DECODER 0 -%define CONFIG_ON2AVC_DECODER 0 -%define CONFIG_OPUS_DECODER 0 -%define CONFIG_PAF_AUDIO_DECODER 0 -%define CONFIG_QCELP_DECODER 0 -%define CONFIG_QDM2_DECODER 0 -%define CONFIG_RA_144_DECODER 0 -%define CONFIG_RA_288_DECODER 0 -%define CONFIG_RALF_DECODER 0 -%define CONFIG_SHORTEN_DECODER 0 -%define CONFIG_SIPR_DECODER 0 -%define CONFIG_SMACKAUD_DECODER 0 -%define CONFIG_TAK_DECODER 0 -%define CONFIG_TRUEHD_DECODER 0 -%define CONFIG_TRUESPEECH_DECODER 0 -%define CONFIG_TTA_DECODER 0 -%define CONFIG_TWINVQ_DECODER 0 -%define CONFIG_VMDAUDIO_DECODER 0 -%define CONFIG_VORBIS_DECODER 0 -%define CONFIG_WAVPACK_DECODER 0 -%define CONFIG_WMALOSSLESS_DECODER 0 -%define CONFIG_WMAPRO_DECODER 0 -%define CONFIG_WMAV1_DECODER 0 -%define CONFIG_WMAV2_DECODER 0 -%define CONFIG_WMAVOICE_DECODER 0 -%define CONFIG_WS_SND1_DECODER 0 -%define CONFIG_PCM_ALAW_DECODER 0 -%define CONFIG_PCM_BLURAY_DECODER 0 -%define CONFIG_PCM_DVD_DECODER 0 -%define CONFIG_PCM_F32BE_DECODER 0 -%define CONFIG_PCM_F32LE_DECODER 0 -%define CONFIG_PCM_F64BE_DECODER 0 -%define CONFIG_PCM_F64LE_DECODER 0 -%define CONFIG_PCM_LXF_DECODER 0 -%define CONFIG_PCM_MULAW_DECODER 0 -%define CONFIG_PCM_S8_DECODER 0 -%define CONFIG_PCM_S8_PLANAR_DECODER 0 -%define CONFIG_PCM_S16BE_DECODER 0 -%define CONFIG_PCM_S16LE_DECODER 0 -%define CONFIG_PCM_S16LE_PLANAR_DECODER 0 -%define CONFIG_PCM_S24BE_DECODER 0 -%define CONFIG_PCM_S24DAUD_DECODER 0 -%define CONFIG_PCM_S24LE_DECODER 0 -%define CONFIG_PCM_S24LE_PLANAR_DECODER 0 -%define CONFIG_PCM_S32BE_DECODER 0 -%define CONFIG_PCM_S32LE_DECODER 0 -%define CONFIG_PCM_S32LE_PLANAR_DECODER 0 -%define CONFIG_PCM_U8_DECODER 0 -%define CONFIG_PCM_U16BE_DECODER 0 -%define CONFIG_PCM_U16LE_DECODER 0 -%define CONFIG_PCM_U24BE_DECODER 0 -%define CONFIG_PCM_U24LE_DECODER 0 -%define CONFIG_PCM_U32BE_DECODER 0 -%define CONFIG_PCM_U32LE_DECODER 0 -%define CONFIG_PCM_ZORK_DECODER 0 -%define CONFIG_INTERPLAY_DPCM_DECODER 0 -%define CONFIG_ROQ_DPCM_DECODER 0 -%define CONFIG_SOL_DPCM_DECODER 0 -%define CONFIG_XAN_DPCM_DECODER 0 -%define CONFIG_ADPCM_4XM_DECODER 0 -%define CONFIG_ADPCM_ADX_DECODER 0 -%define CONFIG_ADPCM_CT_DECODER 0 -%define CONFIG_ADPCM_EA_DECODER 0 -%define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0 -%define CONFIG_ADPCM_EA_R1_DECODER 0 -%define CONFIG_ADPCM_EA_R2_DECODER 0 -%define CONFIG_ADPCM_EA_R3_DECODER 0 -%define CONFIG_ADPCM_EA_XAS_DECODER 0 -%define CONFIG_ADPCM_G722_DECODER 0 -%define CONFIG_ADPCM_G726_DECODER 0 -%define CONFIG_ADPCM_IMA_AMV_DECODER 0 -%define CONFIG_ADPCM_IMA_APC_DECODER 0 -%define CONFIG_ADPCM_IMA_DK3_DECODER 0 -%define CONFIG_ADPCM_IMA_DK4_DECODER 0 -%define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0 -%define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0 -%define CONFIG_ADPCM_IMA_ISS_DECODER 0 -%define CONFIG_ADPCM_IMA_QT_DECODER 0 -%define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0 -%define CONFIG_ADPCM_IMA_WAV_DECODER 0 -%define CONFIG_ADPCM_IMA_WS_DECODER 0 -%define CONFIG_ADPCM_MS_DECODER 0 -%define CONFIG_ADPCM_SBPRO_2_DECODER 0 -%define CONFIG_ADPCM_SBPRO_3_DECODER 0 -%define CONFIG_ADPCM_SBPRO_4_DECODER 0 -%define CONFIG_ADPCM_SWF_DECODER 0 -%define CONFIG_ADPCM_THP_DECODER 0 -%define CONFIG_ADPCM_VIMA_DECODER 0 -%define CONFIG_ADPCM_XA_DECODER 0 -%define CONFIG_ADPCM_YAMAHA_DECODER 0 -%define CONFIG_ASS_DECODER 0 -%define CONFIG_DVBSUB_DECODER 0 -%define CONFIG_DVDSUB_DECODER 0 -%define CONFIG_PGSSUB_DECODER 0 -%define CONFIG_SRT_DECODER 0 -%define CONFIG_XSUB_DECODER 0 -%define CONFIG_LIBFDK_AAC_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_LIBVPX_VP8_DECODER 0 -%define CONFIG_LIBVPX_VP9_DECODER 0 -%define CONFIG_AAC_DEMUXER 0 -%define CONFIG_AC3_DEMUXER 0 -%define CONFIG_ADX_DEMUXER 0 -%define CONFIG_AEA_DEMUXER 0 -%define CONFIG_AIFF_DEMUXER 0 -%define CONFIG_AMR_DEMUXER 0 -%define CONFIG_ANM_DEMUXER 0 -%define CONFIG_APC_DEMUXER 0 -%define CONFIG_APE_DEMUXER 0 -%define CONFIG_ASF_DEMUXER 0 -%define CONFIG_ASS_DEMUXER 0 -%define CONFIG_AU_DEMUXER 0 -%define CONFIG_AVI_DEMUXER 0 -%define CONFIG_AVISYNTH_DEMUXER 0 -%define CONFIG_AVS_DEMUXER 0 -%define CONFIG_BETHSOFTVID_DEMUXER 0 -%define CONFIG_BFI_DEMUXER 0 -%define CONFIG_BINK_DEMUXER 0 -%define CONFIG_BMV_DEMUXER 0 -%define CONFIG_C93_DEMUXER 0 -%define CONFIG_CAF_DEMUXER 0 -%define CONFIG_CAVSVIDEO_DEMUXER 0 -%define CONFIG_CDG_DEMUXER 0 -%define CONFIG_CDXL_DEMUXER 0 -%define CONFIG_DAUD_DEMUXER 0 -%define CONFIG_DFA_DEMUXER 0 -%define CONFIG_DIRAC_DEMUXER 0 -%define CONFIG_DNXHD_DEMUXER 0 -%define CONFIG_DSICIN_DEMUXER 0 -%define CONFIG_DTS_DEMUXER 0 -%define CONFIG_DV_DEMUXER 0 -%define CONFIG_DXA_DEMUXER 0 -%define CONFIG_EA_DEMUXER 0 -%define CONFIG_EA_CDATA_DEMUXER 0 -%define CONFIG_EAC3_DEMUXER 0 -%define CONFIG_FFMETADATA_DEMUXER 0 -%define CONFIG_FILMSTRIP_DEMUXER 0 -%define CONFIG_FLAC_DEMUXER 0 -%define CONFIG_FLIC_DEMUXER 0 -%define CONFIG_FLV_DEMUXER 0 -%define CONFIG_FOURXM_DEMUXER 0 -%define CONFIG_G722_DEMUXER 0 -%define CONFIG_G723_1_DEMUXER 0 -%define CONFIG_GSM_DEMUXER 0 -%define CONFIG_GXF_DEMUXER 0 -%define CONFIG_H261_DEMUXER 0 -%define CONFIG_H263_DEMUXER 0 -%define CONFIG_H264_DEMUXER 0 -%define CONFIG_HEVC_DEMUXER 0 -%define CONFIG_HLS_DEMUXER 0 -%define CONFIG_HNM_DEMUXER 0 -%define CONFIG_IDCIN_DEMUXER 0 -%define CONFIG_IFF_DEMUXER 0 -%define CONFIG_ILBC_DEMUXER 0 -%define CONFIG_IMAGE2_DEMUXER 0 -%define CONFIG_IMAGE2PIPE_DEMUXER 0 -%define CONFIG_INGENIENT_DEMUXER 0 -%define CONFIG_IPMOVIE_DEMUXER 0 -%define CONFIG_ISS_DEMUXER 0 -%define CONFIG_IV8_DEMUXER 0 -%define CONFIG_IVF_DEMUXER 0 -%define CONFIG_JV_DEMUXER 0 -%define CONFIG_LATM_DEMUXER 0 -%define CONFIG_LMLM4_DEMUXER 0 -%define CONFIG_LXF_DEMUXER 0 -%define CONFIG_M4V_DEMUXER 0 -%define CONFIG_MATROSKA_DEMUXER 0 -%define CONFIG_MJPEG_DEMUXER 0 -%define CONFIG_MLP_DEMUXER 0 -%define CONFIG_MM_DEMUXER 0 -%define CONFIG_MMF_DEMUXER 0 -%define CONFIG_MOV_DEMUXER 0 -%define CONFIG_MP3_DEMUXER 0 -%define CONFIG_MPC_DEMUXER 0 -%define CONFIG_MPC8_DEMUXER 0 -%define CONFIG_MPEGPS_DEMUXER 0 -%define CONFIG_MPEGTS_DEMUXER 0 -%define CONFIG_MPEGTSRAW_DEMUXER 0 -%define CONFIG_MPEGVIDEO_DEMUXER 0 -%define CONFIG_MSNWC_TCP_DEMUXER 0 -%define CONFIG_MTV_DEMUXER 0 -%define CONFIG_MV_DEMUXER 0 -%define CONFIG_MVI_DEMUXER 0 -%define CONFIG_MXF_DEMUXER 0 -%define CONFIG_MXG_DEMUXER 0 -%define CONFIG_NC_DEMUXER 0 -%define CONFIG_NSV_DEMUXER 0 -%define CONFIG_NUT_DEMUXER 0 -%define CONFIG_NUV_DEMUXER 0 -%define CONFIG_OGG_DEMUXER 0 -%define CONFIG_OMA_DEMUXER 0 -%define CONFIG_PAF_DEMUXER 0 -%define CONFIG_PCM_ALAW_DEMUXER 0 -%define CONFIG_PCM_MULAW_DEMUXER 0 -%define CONFIG_PCM_F64BE_DEMUXER 0 -%define CONFIG_PCM_F64LE_DEMUXER 0 -%define CONFIG_PCM_F32BE_DEMUXER 0 -%define CONFIG_PCM_F32LE_DEMUXER 0 -%define CONFIG_PCM_S32BE_DEMUXER 0 -%define CONFIG_PCM_S32LE_DEMUXER 0 -%define CONFIG_PCM_S24BE_DEMUXER 0 -%define CONFIG_PCM_S24LE_DEMUXER 0 -%define CONFIG_PCM_S16BE_DEMUXER 0 -%define CONFIG_PCM_S16LE_DEMUXER 0 -%define CONFIG_PCM_S8_DEMUXER 0 -%define CONFIG_PCM_U32BE_DEMUXER 0 -%define CONFIG_PCM_U32LE_DEMUXER 0 -%define CONFIG_PCM_U24BE_DEMUXER 0 -%define CONFIG_PCM_U24LE_DEMUXER 0 -%define CONFIG_PCM_U16BE_DEMUXER 0 -%define CONFIG_PCM_U16LE_DEMUXER 0 -%define CONFIG_PCM_U8_DEMUXER 0 -%define CONFIG_PMP_DEMUXER 0 -%define CONFIG_PVA_DEMUXER 0 -%define CONFIG_QCP_DEMUXER 0 -%define CONFIG_R3D_DEMUXER 0 -%define CONFIG_RAWVIDEO_DEMUXER 0 -%define CONFIG_RL2_DEMUXER 0 -%define CONFIG_RM_DEMUXER 0 -%define CONFIG_ROQ_DEMUXER 0 -%define CONFIG_RPL_DEMUXER 0 -%define CONFIG_RSO_DEMUXER 0 -%define CONFIG_RTP_DEMUXER 0 -%define CONFIG_RTSP_DEMUXER 0 -%define CONFIG_SAP_DEMUXER 0 -%define CONFIG_SDP_DEMUXER 0 -%define CONFIG_SEGAFILM_DEMUXER 0 -%define CONFIG_SHORTEN_DEMUXER 0 -%define CONFIG_SIFF_DEMUXER 0 -%define CONFIG_SMACKER_DEMUXER 0 -%define CONFIG_SMJPEG_DEMUXER 0 -%define CONFIG_SMUSH_DEMUXER 0 -%define CONFIG_SOL_DEMUXER 0 -%define CONFIG_SOX_DEMUXER 0 -%define CONFIG_SPDIF_DEMUXER 0 -%define CONFIG_SRT_DEMUXER 0 -%define CONFIG_STR_DEMUXER 0 -%define CONFIG_SWF_DEMUXER 0 -%define CONFIG_TAK_DEMUXER 0 -%define CONFIG_THP_DEMUXER 0 -%define CONFIG_TIERTEXSEQ_DEMUXER 0 -%define CONFIG_TMV_DEMUXER 0 -%define CONFIG_TRUEHD_DEMUXER 0 -%define CONFIG_TTA_DEMUXER 0 -%define CONFIG_TXD_DEMUXER 0 -%define CONFIG_TTY_DEMUXER 0 -%define CONFIG_VC1_DEMUXER 0 -%define CONFIG_VC1T_DEMUXER 0 -%define CONFIG_VMD_DEMUXER 0 -%define CONFIG_VOC_DEMUXER 0 -%define CONFIG_VQF_DEMUXER 0 -%define CONFIG_W64_DEMUXER 0 -%define CONFIG_WAV_DEMUXER 0 -%define CONFIG_WC3_DEMUXER 0 -%define CONFIG_WSAUD_DEMUXER 0 -%define CONFIG_WSVQA_DEMUXER 0 -%define CONFIG_WTV_DEMUXER 0 -%define CONFIG_WV_DEMUXER 0 -%define CONFIG_XA_DEMUXER 0 -%define CONFIG_XMV_DEMUXER 0 -%define CONFIG_XWMA_DEMUXER 0 -%define CONFIG_YOP_DEMUXER 0 -%define CONFIG_YUV4MPEGPIPE_DEMUXER 0 -%define CONFIG_A64MULTI_ENCODER 0 -%define CONFIG_A64MULTI5_ENCODER 0 -%define CONFIG_ALIAS_PIX_ENCODER 0 -%define CONFIG_ASV1_ENCODER 0 -%define CONFIG_ASV2_ENCODER 0 -%define CONFIG_BMP_ENCODER 0 -%define CONFIG_CLJR_ENCODER 0 -%define CONFIG_COMFORTNOISE_ENCODER 0 -%define CONFIG_DNXHD_ENCODER 0 -%define CONFIG_DPX_ENCODER 0 -%define CONFIG_DVVIDEO_ENCODER 0 -%define CONFIG_FFV1_ENCODER 0 -%define CONFIG_FFVHUFF_ENCODER 0 -%define CONFIG_FLASHSV_ENCODER 0 -%define CONFIG_FLV_ENCODER 0 -%define CONFIG_GIF_ENCODER 0 -%define CONFIG_H261_ENCODER 0 -%define CONFIG_H263_ENCODER 0 -%define CONFIG_H263P_ENCODER 0 -%define CONFIG_HUFFYUV_ENCODER 0 -%define CONFIG_JPEGLS_ENCODER 0 -%define CONFIG_LJPEG_ENCODER 0 -%define CONFIG_MJPEG_ENCODER 0 -%define CONFIG_MPEG1VIDEO_ENCODER 0 -%define CONFIG_MPEG2VIDEO_ENCODER 0 -%define CONFIG_MPEG4_ENCODER 0 -%define CONFIG_MSMPEG4V2_ENCODER 0 -%define CONFIG_MSMPEG4V3_ENCODER 0 -%define CONFIG_PAM_ENCODER 0 -%define CONFIG_PBM_ENCODER 0 -%define CONFIG_PCX_ENCODER 0 -%define CONFIG_PGM_ENCODER 0 -%define CONFIG_PGMYUV_ENCODER 0 -%define CONFIG_PNG_ENCODER 0 -%define CONFIG_PPM_ENCODER 0 -%define CONFIG_PRORES_ENCODER 0 -%define CONFIG_QTRLE_ENCODER 0 -%define CONFIG_RAWVIDEO_ENCODER 0 -%define CONFIG_ROQ_ENCODER 0 -%define CONFIG_RV10_ENCODER 0 -%define CONFIG_RV20_ENCODER 0 -%define CONFIG_SGI_ENCODER 0 -%define CONFIG_SUNRAST_ENCODER 0 -%define CONFIG_SVQ1_ENCODER 0 -%define CONFIG_TARGA_ENCODER 0 -%define CONFIG_TIFF_ENCODER 0 -%define CONFIG_UTVIDEO_ENCODER 0 -%define CONFIG_V210_ENCODER 0 -%define CONFIG_V410_ENCODER 0 -%define CONFIG_WMV1_ENCODER 0 -%define CONFIG_WMV2_ENCODER 0 -%define CONFIG_XBM_ENCODER 0 -%define CONFIG_XWD_ENCODER 0 -%define CONFIG_ZLIB_ENCODER 0 -%define CONFIG_ZMBV_ENCODER 0 -%define CONFIG_AAC_ENCODER 0 -%define CONFIG_AC3_ENCODER 0 -%define CONFIG_AC3_FIXED_ENCODER 0 -%define CONFIG_ALAC_ENCODER 0 -%define CONFIG_EAC3_ENCODER 0 -%define CONFIG_FLAC_ENCODER 0 -%define CONFIG_MP2_ENCODER 0 -%define CONFIG_NELLYMOSER_ENCODER 0 -%define CONFIG_RA_144_ENCODER 0 -%define CONFIG_VORBIS_ENCODER 0 -%define CONFIG_WMAV1_ENCODER 0 -%define CONFIG_WMAV2_ENCODER 0 -%define CONFIG_PCM_ALAW_ENCODER 0 -%define CONFIG_PCM_F32BE_ENCODER 0 -%define CONFIG_PCM_F32LE_ENCODER 0 -%define CONFIG_PCM_F64BE_ENCODER 0 -%define CONFIG_PCM_F64LE_ENCODER 0 -%define CONFIG_PCM_MULAW_ENCODER 0 -%define CONFIG_PCM_S8_ENCODER 0 -%define CONFIG_PCM_S16BE_ENCODER 0 -%define CONFIG_PCM_S16LE_ENCODER 0 -%define CONFIG_PCM_S24BE_ENCODER 0 -%define CONFIG_PCM_S24DAUD_ENCODER 0 -%define CONFIG_PCM_S24LE_ENCODER 0 -%define CONFIG_PCM_S32BE_ENCODER 0 -%define CONFIG_PCM_S32LE_ENCODER 0 -%define CONFIG_PCM_U8_ENCODER 0 -%define CONFIG_PCM_U16BE_ENCODER 0 -%define CONFIG_PCM_U16LE_ENCODER 0 -%define CONFIG_PCM_U24BE_ENCODER 0 -%define CONFIG_PCM_U24LE_ENCODER 0 -%define CONFIG_PCM_U32BE_ENCODER 0 -%define CONFIG_PCM_U32LE_ENCODER 0 -%define CONFIG_ROQ_DPCM_ENCODER 0 -%define CONFIG_ADPCM_ADX_ENCODER 0 -%define CONFIG_ADPCM_G722_ENCODER 0 -%define CONFIG_ADPCM_G726_ENCODER 0 -%define CONFIG_ADPCM_IMA_QT_ENCODER 0 -%define CONFIG_ADPCM_IMA_WAV_ENCODER 0 -%define CONFIG_ADPCM_MS_ENCODER 0 -%define CONFIG_ADPCM_SWF_ENCODER 0 -%define CONFIG_ADPCM_YAMAHA_ENCODER 0 -%define CONFIG_ASS_ENCODER 0 -%define CONFIG_DVBSUB_ENCODER 0 -%define CONFIG_DVDSUB_ENCODER 0 -%define CONFIG_XSUB_ENCODER 0 -%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 0 -%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_LIBVO_AACENC_ENCODER 0 -%define CONFIG_LIBVO_AMRWBENC_ENCODER 0 -%define CONFIG_LIBVORBIS_ENCODER 0 -%define CONFIG_LIBVPX_VP8_ENCODER 0 -%define CONFIG_LIBVPX_VP9_ENCODER 0 -%define CONFIG_LIBWAVPACK_ENCODER 0 -%define CONFIG_LIBWEBP_ENCODER 0 -%define CONFIG_LIBX264_ENCODER 0 -%define CONFIG_LIBX265_ENCODER 0 -%define CONFIG_LIBXAVS_ENCODER 0 -%define CONFIG_LIBXVID_ENCODER 0 -%define CONFIG_AFORMAT_FILTER 0 -%define CONFIG_AMIX_FILTER 0 -%define CONFIG_ANULL_FILTER 0 -%define CONFIG_ASETPTS_FILTER 0 -%define CONFIG_ASETTB_FILTER 0 -%define CONFIG_ASHOWINFO_FILTER 0 -%define CONFIG_ASPLIT_FILTER 0 -%define CONFIG_ASYNCTS_FILTER 0 -%define CONFIG_ATRIM_FILTER 0 -%define CONFIG_BS2B_FILTER 0 -%define CONFIG_CHANNELMAP_FILTER 0 -%define CONFIG_CHANNELSPLIT_FILTER 0 -%define CONFIG_COMPAND_FILTER 0 -%define CONFIG_JOIN_FILTER 0 -%define CONFIG_RESAMPLE_FILTER 0 -%define CONFIG_VOLUME_FILTER 0 -%define CONFIG_ANULLSRC_FILTER 0 -%define CONFIG_ANULLSINK_FILTER 0 -%define CONFIG_BLACKFRAME_FILTER 0 -%define CONFIG_BOXBLUR_FILTER 0 -%define CONFIG_COPY_FILTER 0 -%define CONFIG_CROP_FILTER 0 -%define CONFIG_CROPDETECT_FILTER 0 -%define CONFIG_DELOGO_FILTER 0 -%define CONFIG_DRAWBOX_FILTER 0 -%define CONFIG_DRAWTEXT_FILTER 0 -%define CONFIG_FADE_FILTER 0 -%define CONFIG_FIELDORDER_FILTER 0 -%define CONFIG_FORMAT_FILTER 0 -%define CONFIG_FPS_FILTER 0 -%define CONFIG_FRAMEPACK_FILTER 0 -%define CONFIG_FREI0R_FILTER 0 -%define CONFIG_GRADFUN_FILTER 0 -%define CONFIG_HFLIP_FILTER 0 -%define CONFIG_HQDN3D_FILTER 0 -%define CONFIG_INTERLACE_FILTER 0 -%define CONFIG_LUT_FILTER 0 -%define CONFIG_LUTRGB_FILTER 0 -%define CONFIG_LUTYUV_FILTER 0 -%define CONFIG_NEGATE_FILTER 0 -%define CONFIG_NOFORMAT_FILTER 0 -%define CONFIG_NULL_FILTER 0 -%define CONFIG_OCV_FILTER 0 -%define CONFIG_OVERLAY_FILTER 0 -%define CONFIG_PAD_FILTER 0 -%define CONFIG_PIXDESCTEST_FILTER 0 -%define CONFIG_SCALE_FILTER 0 -%define CONFIG_SELECT_FILTER 0 -%define CONFIG_SETDAR_FILTER 0 -%define CONFIG_SETPTS_FILTER 0 -%define CONFIG_SETSAR_FILTER 0 -%define CONFIG_SETTB_FILTER 0 -%define CONFIG_SHOWINFO_FILTER 0 -%define CONFIG_SHUFFLEPLANES_FILTER 0 -%define CONFIG_SPLIT_FILTER 0 -%define CONFIG_TRANSPOSE_FILTER 0 -%define CONFIG_TRIM_FILTER 0 -%define CONFIG_UNSHARP_FILTER 0 -%define CONFIG_VFLIP_FILTER 0 -%define CONFIG_YADIF_FILTER 0 -%define CONFIG_COLOR_FILTER 0 -%define CONFIG_FREI0R_SRC_FILTER 0 -%define CONFIG_MOVIE_FILTER 0 -%define CONFIG_NULLSRC_FILTER 0 -%define CONFIG_RGBTESTSRC_FILTER 0 -%define CONFIG_TESTSRC_FILTER 0 -%define CONFIG_NULLSINK_FILTER 0 -%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_VDA_OLD_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 0 -%define CONFIG_BKTR_INDEV 0 -%define CONFIG_DV1394_INDEV 0 -%define CONFIG_FBDEV_INDEV 0 -%define CONFIG_JACK_INDEV 0 -%define CONFIG_OSS_INDEV 0 -%define CONFIG_PULSE_INDEV 0 -%define CONFIG_SNDIO_INDEV 0 -%define CONFIG_V4L2_INDEV 0 -%define CONFIG_VFWCAP_INDEV 0 -%define CONFIG_X11GRAB_INDEV 0 -%define CONFIG_LIBCDIO_INDEV 0 -%define CONFIG_LIBDC1394_INDEV 0 -%define CONFIG_A64_MUXER 0 -%define CONFIG_AC3_MUXER 0 -%define CONFIG_ADTS_MUXER 0 -%define CONFIG_ADX_MUXER 0 -%define CONFIG_AIFF_MUXER 0 -%define CONFIG_AMR_MUXER 0 -%define CONFIG_ASF_MUXER 0 -%define CONFIG_ASS_MUXER 0 -%define CONFIG_ASF_STREAM_MUXER 0 -%define CONFIG_AU_MUXER 0 -%define CONFIG_AVI_MUXER 0 -%define CONFIG_AVM2_MUXER 0 -%define CONFIG_CAVSVIDEO_MUXER 0 -%define CONFIG_CRC_MUXER 0 -%define CONFIG_DAUD_MUXER 0 -%define CONFIG_DIRAC_MUXER 0 -%define CONFIG_DNXHD_MUXER 0 -%define CONFIG_DTS_MUXER 0 -%define CONFIG_DV_MUXER 0 -%define CONFIG_EAC3_MUXER 0 -%define CONFIG_F4V_MUXER 0 -%define CONFIG_FFMETADATA_MUXER 0 -%define CONFIG_FILMSTRIP_MUXER 0 -%define CONFIG_FLAC_MUXER 0 -%define CONFIG_FLV_MUXER 0 -%define CONFIG_FRAMECRC_MUXER 0 -%define CONFIG_FRAMEMD5_MUXER 0 -%define CONFIG_G722_MUXER 0 -%define CONFIG_GIF_MUXER 0 -%define CONFIG_GXF_MUXER 0 -%define CONFIG_H261_MUXER 0 -%define CONFIG_H263_MUXER 0 -%define CONFIG_H264_MUXER 0 -%define CONFIG_HDS_MUXER 0 -%define CONFIG_HEVC_MUXER 0 -%define CONFIG_HLS_MUXER 0 -%define CONFIG_ILBC_MUXER 0 -%define CONFIG_IMAGE2_MUXER 0 -%define CONFIG_IMAGE2PIPE_MUXER 0 -%define CONFIG_IPOD_MUXER 0 -%define CONFIG_ISMV_MUXER 0 -%define CONFIG_IVF_MUXER 0 -%define CONFIG_LATM_MUXER 0 -%define CONFIG_M4V_MUXER 0 -%define CONFIG_MD5_MUXER 0 -%define CONFIG_MATROSKA_MUXER 0 -%define CONFIG_MATROSKA_AUDIO_MUXER 0 -%define CONFIG_MJPEG_MUXER 0 -%define CONFIG_MLP_MUXER 0 -%define CONFIG_MMF_MUXER 0 -%define CONFIG_MOV_MUXER 0 -%define CONFIG_MP2_MUXER 0 -%define CONFIG_MP3_MUXER 0 -%define CONFIG_MP4_MUXER 0 -%define CONFIG_MPEG1SYSTEM_MUXER 0 -%define CONFIG_MPEG1VCD_MUXER 0 -%define CONFIG_MPEG1VIDEO_MUXER 0 -%define CONFIG_MPEG2DVD_MUXER 0 -%define CONFIG_MPEG2SVCD_MUXER 0 -%define CONFIG_MPEG2VIDEO_MUXER 0 -%define CONFIG_MPEG2VOB_MUXER 0 -%define CONFIG_MPEGTS_MUXER 0 -%define CONFIG_MPJPEG_MUXER 0 -%define CONFIG_MXF_MUXER 0 -%define CONFIG_MXF_D10_MUXER 0 -%define CONFIG_NULL_MUXER 0 -%define CONFIG_NUT_MUXER 0 -%define CONFIG_OGG_MUXER 0 -%define CONFIG_OMA_MUXER 0 -%define CONFIG_PCM_ALAW_MUXER 0 -%define CONFIG_PCM_MULAW_MUXER 0 -%define CONFIG_PCM_F64BE_MUXER 0 -%define CONFIG_PCM_F64LE_MUXER 0 -%define CONFIG_PCM_F32BE_MUXER 0 -%define CONFIG_PCM_F32LE_MUXER 0 -%define CONFIG_PCM_S32BE_MUXER 0 -%define CONFIG_PCM_S32LE_MUXER 0 -%define CONFIG_PCM_S24BE_MUXER 0 -%define CONFIG_PCM_S24LE_MUXER 0 -%define CONFIG_PCM_S16BE_MUXER 0 -%define CONFIG_PCM_S16LE_MUXER 0 -%define CONFIG_PCM_S8_MUXER 0 -%define CONFIG_PCM_U32BE_MUXER 0 -%define CONFIG_PCM_U32LE_MUXER 0 -%define CONFIG_PCM_U24BE_MUXER 0 -%define CONFIG_PCM_U24LE_MUXER 0 -%define CONFIG_PCM_U16BE_MUXER 0 -%define CONFIG_PCM_U16LE_MUXER 0 -%define CONFIG_PCM_U8_MUXER 0 -%define CONFIG_PSP_MUXER 0 -%define CONFIG_RAWVIDEO_MUXER 0 -%define CONFIG_RM_MUXER 0 -%define CONFIG_ROQ_MUXER 0 -%define CONFIG_RSO_MUXER 0 -%define CONFIG_RTP_MUXER 0 -%define CONFIG_RTSP_MUXER 0 -%define CONFIG_SAP_MUXER 0 -%define CONFIG_SEGMENT_MUXER 0 -%define CONFIG_SMJPEG_MUXER 0 -%define CONFIG_SMOOTHSTREAMING_MUXER 0 -%define CONFIG_SOX_MUXER 0 -%define CONFIG_SPDIF_MUXER 0 -%define CONFIG_SRT_MUXER 0 -%define CONFIG_SWF_MUXER 0 -%define CONFIG_TG2_MUXER 0 -%define CONFIG_TGP_MUXER 0 -%define CONFIG_TRUEHD_MUXER 0 -%define CONFIG_VC1T_MUXER 0 -%define CONFIG_VOC_MUXER 0 -%define CONFIG_WAV_MUXER 0 -%define CONFIG_WEBM_MUXER 0 -%define CONFIG_WV_MUXER 0 -%define CONFIG_YUV4MPEGPIPE_MUXER 0 -%define CONFIG_ALSA_OUTDEV 0 -%define CONFIG_OSS_OUTDEV 0 -%define CONFIG_SNDIO_OUTDEV 0 -%define CONFIG_AAC_PARSER 0 -%define CONFIG_AAC_LATM_PARSER 0 -%define CONFIG_AC3_PARSER 0 -%define CONFIG_ADX_PARSER 0 -%define CONFIG_BMP_PARSER 0 -%define CONFIG_CAVSVIDEO_PARSER 0 -%define CONFIG_COOK_PARSER 0 -%define CONFIG_DCA_PARSER 0 -%define CONFIG_DIRAC_PARSER 0 -%define CONFIG_DNXHD_PARSER 0 -%define CONFIG_DVBSUB_PARSER 0 -%define CONFIG_DVDSUB_PARSER 0 -%define CONFIG_FLAC_PARSER 0 -%define CONFIG_GSM_PARSER 0 -%define CONFIG_H261_PARSER 0 -%define CONFIG_H263_PARSER 0 -%define CONFIG_H264_PARSER 0 -%define CONFIG_HEVC_PARSER 0 -%define CONFIG_MJPEG_PARSER 0 -%define CONFIG_MLP_PARSER 0 -%define CONFIG_MPEG4VIDEO_PARSER 0 -%define CONFIG_MPEGAUDIO_PARSER 0 -%define CONFIG_MPEGVIDEO_PARSER 0 -%define CONFIG_OPUS_PARSER 0 -%define CONFIG_PNG_PARSER 0 -%define CONFIG_PNM_PARSER 0 -%define CONFIG_RV30_PARSER 0 -%define CONFIG_RV40_PARSER 0 -%define CONFIG_TAK_PARSER 0 -%define CONFIG_VC1_PARSER 0 -%define CONFIG_VORBIS_PARSER 0 -%define CONFIG_VP3_PARSER 0 -%define CONFIG_VP8_PARSER 0 -%define CONFIG_CONCAT_PROTOCOL 0 -%define CONFIG_CRYPTO_PROTOCOL 0 -%define CONFIG_FFRTMPCRYPT_PROTOCOL 0 -%define CONFIG_FFRTMPHTTP_PROTOCOL 0 -%define CONFIG_FILE_PROTOCOL 0 -%define CONFIG_GOPHER_PROTOCOL 0 -%define CONFIG_HLS_PROTOCOL 0 -%define CONFIG_HTTP_PROTOCOL 0 -%define CONFIG_HTTPPROXY_PROTOCOL 0 -%define CONFIG_HTTPS_PROTOCOL 0 -%define CONFIG_ICECAST_PROTOCOL 0 -%define CONFIG_MMSH_PROTOCOL 0 -%define CONFIG_MMST_PROTOCOL 0 -%define CONFIG_MD5_PROTOCOL 0 -%define CONFIG_PIPE_PROTOCOL 0 -%define CONFIG_RTMP_PROTOCOL 0 -%define CONFIG_RTMPE_PROTOCOL 0 -%define CONFIG_RTMPS_PROTOCOL 0 -%define CONFIG_RTMPT_PROTOCOL 0 -%define CONFIG_RTMPTE_PROTOCOL 0 -%define CONFIG_RTMPTS_PROTOCOL 0 -%define CONFIG_RTP_PROTOCOL 0 -%define CONFIG_SCTP_PROTOCOL 0 -%define CONFIG_SRTP_PROTOCOL 0 -%define CONFIG_TCP_PROTOCOL 0 -%define CONFIG_TLS_PROTOCOL 0 -%define CONFIG_UDP_PROTOCOL 0 -%define CONFIG_UNIX_PROTOCOL 0 -%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 - diff --git a/media/libav/config_common.h b/media/libav/config_common.h deleted file mode 100644 index 984056dac..000000000 --- a/media/libav/config_common.h +++ /dev/null @@ -1,1085 +0,0 @@ -#ifndef MOZ_LIBAV_CONFIG_COMMON_H -#define MOZ_LIBAV_CONFIG_COMMON_H -#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 1 -#if defined(i386) || defined(__i386__) || defined(_M_IX86) -#define ARCH_X86_32 1 -#define ARCH_X86_64 0 -#else -#define ARCH_X86_32 0 -#define ARCH_X86_64 1 -#endif -#define CONFIG_BSFS 0 -#define CONFIG_DECODERS 0 -#define CONFIG_DEMUXERS 0 -#define CONFIG_ENCODERS 0 -#define CONFIG_FILTERS 0 -#define CONFIG_HWACCELS 0 -#define CONFIG_INDEVS 0 -#define CONFIG_MUXERS 0 -#define CONFIG_OUTDEVS 0 -#define CONFIG_PARSERS 0 -#define CONFIG_PROTOCOLS 0 -#define CONFIG_AVCODEC_EXAMPLE 0 -#define CONFIG_FILTER_AUDIO_EXAMPLE 0 -#define CONFIG_METADATA_EXAMPLE 0 -#define CONFIG_OUTPUT_EXAMPLE 0 -#define CONFIG_TRANSCODE_AAC_EXAMPLE 0 -#define CONFIG_AVISYNTH 0 -#define CONFIG_BZLIB 0 -#define CONFIG_FREI0R 0 -#define CONFIG_GNUTLS 0 -#define CONFIG_LIBBS2B 0 -#define CONFIG_LIBCDIO 0 -#define CONFIG_LIBDC1394 0 -#define CONFIG_LIBFAAC 0 -#define CONFIG_LIBFDK_AAC 0 -#define CONFIG_LIBFONTCONFIG 0 -#define CONFIG_LIBFREETYPE 0 -#define CONFIG_LIBGSM 0 -#define CONFIG_LIBILBC 0 -#define CONFIG_LIBMP3LAME 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_LIBSPEEX 0 -#define CONFIG_LIBTHEORA 0 -#define CONFIG_LIBTWOLAME 0 -#define CONFIG_LIBVO_AACENC 0 -#define CONFIG_LIBVO_AMRWBENC 0 -#define CONFIG_LIBVORBIS 0 -#define CONFIG_LIBVPX 0 -#define CONFIG_LIBWAVPACK 0 -#define CONFIG_LIBWEBP 0 -#define CONFIG_LIBX264 0 -#define CONFIG_LIBX265 0 -#define CONFIG_LIBXAVS 0 -#define CONFIG_LIBXVID 0 -#define CONFIG_OPENSSL 0 -#define CONFIG_X11GRAB 0 -#define CONFIG_ZLIB 0 -#define CONFIG_GRAY 0 -#define CONFIG_HARDCODED_TABLES 0 -#define CONFIG_RUNTIME_CPUDETECT 0 -#define CONFIG_SAFE_BITSTREAM_READER 0 -#define CONFIG_SHARED 0 -#define CONFIG_SMALL 0 -#define CONFIG_SRAM 0 -#define CONFIG_STATIC 0 -#define CONFIG_SWSCALE_ALPHA 0 -#define CONFIG_DXVA2 0 -#define CONFIG_VAAPI 0 -#define CONFIG_VDA 0 -#define CONFIG_VDPAU 0 -#define CONFIG_GPL 0 -#define CONFIG_NONFREE 0 -#define CONFIG_VERSION3 0 -#define CONFIG_AVCODEC 0 -#define CONFIG_AVDEVICE 0 -#define CONFIG_AVFILTER 0 -#define CONFIG_AVFORMAT 0 -#define CONFIG_AVRESAMPLE 0 -#define CONFIG_AVUTIL 0 -#define CONFIG_SWSCALE 0 -#define CONFIG_AVCONV 0 -#define CONFIG_AVPLAY 0 -#define CONFIG_AVPROBE 0 -#define CONFIG_DCT 0 -#define CONFIG_DOC 0 -#define CONFIG_ERROR_RESILIENCE 0 -#define CONFIG_FFT 0 -#define CONFIG_LSP 0 -#define CONFIG_LZO 0 -#define CONFIG_MDCT 0 -#define CONFIG_NETWORK 0 -#define CONFIG_RDFT 1 -#define CONFIG_MEMALIGN_HACK 0 -#define CONFIG_NEON_CLOBBER_TEST 0 -#define CONFIG_PIC 0 -#define CONFIG_POD2MAN 0 -#define CONFIG_TEXI2HTML 0 -#define CONFIG_THUMB 0 -#define CONFIG_XMM_CLOBBER_TEST 0 -#define CONFIG_AANDCTTABLES 0 -#define CONFIG_AC3DSP 0 -#define CONFIG_AUDIO_FRAME_QUEUE 0 -#define CONFIG_AUDIODSP 0 -#define CONFIG_BLOCKDSP 0 -#define CONFIG_BSWAPDSP 0 -#define CONFIG_CABAC 0 -#define CONFIG_DVPROFILE 0 -#define CONFIG_FDCTDSP 0 -#define CONFIG_GCRYPT 0 -#define CONFIG_GOLOMB 0 -#define CONFIG_GPLV3 0 -#define CONFIG_H263DSP 0 -#define CONFIG_H264CHROMA 0 -#define CONFIG_H264DSP 0 -#define CONFIG_H264PRED 0 -#define CONFIG_H264QPEL 0 -#define CONFIG_HPELDSP 0 -#define CONFIG_HUFFMAN 0 -#define CONFIG_HUFFYUVDSP 0 -#define CONFIG_HUFFYUVENCDSP 0 -#define CONFIG_IDCTDSP 0 -#define CONFIG_IIRFILTER 0 -#define CONFIG_INTRAX8 0 -#define CONFIG_LGPLV3 0 -#define CONFIG_LPC 0 -#define CONFIG_ME_CMP 0 -#define CONFIG_MPEG_ER 0 -#define CONFIG_MPEGAUDIO 0 -#define CONFIG_MPEGAUDIODSP 0 -#define CONFIG_MPEGVIDEO 0 -#define CONFIG_MPEGVIDEOENC 0 -#define CONFIG_NETTLE 0 -#define CONFIG_PIXBLOCKDSP 0 -#define CONFIG_QPELDSP 0 -#define CONFIG_RANGECODER 0 -#define CONFIG_RIFFDEC 0 -#define CONFIG_RIFFENC 0 -#define CONFIG_RTPDEC 0 -#define CONFIG_RTPENC_CHAIN 0 -#define CONFIG_SINEWIN 0 -#define CONFIG_STARTCODE 0 -#define CONFIG_TPELDSP 0 -#define CONFIG_VIDEODSP 0 -#define CONFIG_VP3DSP 0 -#define CONFIG_AAC_ADTSTOASC_BSF 0 -#define CONFIG_CHOMP_BSF 0 -#define CONFIG_DUMP_EXTRADATA_BSF 0 -#define CONFIG_H264_MP4TOANNEXB_BSF 0 -#define CONFIG_IMX_DUMP_HEADER_BSF 0 -#define CONFIG_MJPEG2JPEG_BSF 0 -#define CONFIG_MJPEGA_DUMP_HEADER_BSF 0 -#define CONFIG_MOV2TEXTSUB_BSF 0 -#define CONFIG_NOISE_BSF 0 -#define CONFIG_REMOVE_EXTRADATA_BSF 0 -#define CONFIG_TEXT2MOVSUB_BSF 0 -#define CONFIG_AASC_DECODER 0 -#define CONFIG_AIC_DECODER 0 -#define CONFIG_ALIAS_PIX_DECODER 0 -#define CONFIG_AMV_DECODER 0 -#define CONFIG_ANM_DECODER 0 -#define CONFIG_ANSI_DECODER 0 -#define CONFIG_ASV1_DECODER 0 -#define CONFIG_ASV2_DECODER 0 -#define CONFIG_AURA_DECODER 0 -#define CONFIG_AURA2_DECODER 0 -#define CONFIG_AVS_DECODER 0 -#define CONFIG_BETHSOFTVID_DECODER 0 -#define CONFIG_BFI_DECODER 0 -#define CONFIG_BINK_DECODER 0 -#define CONFIG_BMP_DECODER 0 -#define CONFIG_BMV_VIDEO_DECODER 0 -#define CONFIG_BRENDER_PIX_DECODER 0 -#define CONFIG_C93_DECODER 0 -#define CONFIG_CAVS_DECODER 0 -#define CONFIG_CDGRAPHICS_DECODER 0 -#define CONFIG_CDXL_DECODER 0 -#define CONFIG_CINEPAK_DECODER 0 -#define CONFIG_CLJR_DECODER 0 -#define CONFIG_CLLC_DECODER 0 -#define CONFIG_COMFORTNOISE_DECODER 0 -#define CONFIG_CSCD_DECODER 0 -#define CONFIG_CYUV_DECODER 0 -#define CONFIG_DFA_DECODER 0 -#define CONFIG_DNXHD_DECODER 0 -#define CONFIG_DPX_DECODER 0 -#define CONFIG_DSICINVIDEO_DECODER 0 -#define CONFIG_DVVIDEO_DECODER 0 -#define CONFIG_DXA_DECODER 0 -#define CONFIG_DXTORY_DECODER 0 -#define CONFIG_EACMV_DECODER 0 -#define CONFIG_EAMAD_DECODER 0 -#define CONFIG_EATGQ_DECODER 0 -#define CONFIG_EATGV_DECODER 0 -#define CONFIG_EATQI_DECODER 0 -#define CONFIG_EIGHTBPS_DECODER 0 -#define CONFIG_EIGHTSVX_EXP_DECODER 0 -#define CONFIG_EIGHTSVX_FIB_DECODER 0 -#define CONFIG_ESCAPE124_DECODER 0 -#define CONFIG_ESCAPE130_DECODER 0 -#define CONFIG_EXR_DECODER 0 -#define CONFIG_FFV1_DECODER 0 -#define CONFIG_FFVHUFF_DECODER 0 -#define CONFIG_FIC_DECODER 0 -#define CONFIG_FLASHSV_DECODER 0 -#define CONFIG_FLASHSV2_DECODER 0 -#define CONFIG_FLIC_DECODER 0 -#define CONFIG_FLV_DECODER 0 -#define CONFIG_FOURXM_DECODER 0 -#define CONFIG_FRAPS_DECODER 0 -#define CONFIG_FRWU_DECODER 0 -#define CONFIG_G2M_DECODER 0 -#define CONFIG_GIF_DECODER 0 -#define CONFIG_H261_DECODER 0 -#define CONFIG_H263_DECODER 0 -#define CONFIG_H263I_DECODER 0 -#define CONFIG_H264_DECODER 0 -#define CONFIG_HEVC_DECODER 0 -#define CONFIG_HNM4_VIDEO_DECODER 0 -#define CONFIG_HUFFYUV_DECODER 0 -#define CONFIG_IDCIN_DECODER 0 -#define CONFIG_IFF_BYTERUN1_DECODER 0 -#define CONFIG_IFF_ILBM_DECODER 0 -#define CONFIG_INDEO2_DECODER 0 -#define CONFIG_INDEO3_DECODER 0 -#define CONFIG_INDEO4_DECODER 0 -#define CONFIG_INDEO5_DECODER 0 -#define CONFIG_INTERPLAY_VIDEO_DECODER 0 -#define CONFIG_JPEG2000_DECODER 0 -#define CONFIG_JPEGLS_DECODER 0 -#define CONFIG_JV_DECODER 0 -#define CONFIG_KGV1_DECODER 0 -#define CONFIG_KMVC_DECODER 0 -#define CONFIG_LAGARITH_DECODER 0 -#define CONFIG_LOCO_DECODER 0 -#define CONFIG_MDEC_DECODER 0 -#define CONFIG_MIMIC_DECODER 0 -#define CONFIG_MJPEG_DECODER 0 -#define CONFIG_MJPEGB_DECODER 0 -#define CONFIG_MMVIDEO_DECODER 0 -#define CONFIG_MOTIONPIXELS_DECODER 0 -#define CONFIG_MPEG_XVMC_DECODER 0 -#define CONFIG_MPEG1VIDEO_DECODER 0 -#define CONFIG_MPEG2VIDEO_DECODER 0 -#define CONFIG_MPEG4_DECODER 0 -#define CONFIG_MSA1_DECODER 0 -#define CONFIG_MSMPEG4V1_DECODER 0 -#define CONFIG_MSMPEG4V2_DECODER 0 -#define CONFIG_MSMPEG4V3_DECODER 0 -#define CONFIG_MSRLE_DECODER 0 -#define CONFIG_MSS1_DECODER 0 -#define CONFIG_MSS2_DECODER 0 -#define CONFIG_MSVIDEO1_DECODER 0 -#define CONFIG_MSZH_DECODER 0 -#define CONFIG_MTS2_DECODER 0 -#define CONFIG_MVC1_DECODER 0 -#define CONFIG_MVC2_DECODER 0 -#define CONFIG_MXPEG_DECODER 0 -#define CONFIG_NUV_DECODER 0 -#define CONFIG_PAF_VIDEO_DECODER 0 -#define CONFIG_PAM_DECODER 0 -#define CONFIG_PBM_DECODER 0 -#define CONFIG_PCX_DECODER 0 -#define CONFIG_PGM_DECODER 0 -#define CONFIG_PGMYUV_DECODER 0 -#define CONFIG_PICTOR_DECODER 0 -#define CONFIG_PNG_DECODER 0 -#define CONFIG_PPM_DECODER 0 -#define CONFIG_PRORES_DECODER 0 -#define CONFIG_PTX_DECODER 0 -#define CONFIG_QDRAW_DECODER 0 -#define CONFIG_QPEG_DECODER 0 -#define CONFIG_QTRLE_DECODER 0 -#define CONFIG_R10K_DECODER 0 -#define CONFIG_R210_DECODER 0 -#define CONFIG_RAWVIDEO_DECODER 0 -#define CONFIG_RL2_DECODER 0 -#define CONFIG_ROQ_DECODER 0 -#define CONFIG_RPZA_DECODER 0 -#define CONFIG_RV10_DECODER 0 -#define CONFIG_RV20_DECODER 0 -#define CONFIG_RV30_DECODER 0 -#define CONFIG_RV40_DECODER 0 -#define CONFIG_S302M_DECODER 0 -#define CONFIG_SANM_DECODER 0 -#define CONFIG_SGI_DECODER 0 -#define CONFIG_SGIRLE_DECODER 0 -#define CONFIG_SMACKER_DECODER 0 -#define CONFIG_SMC_DECODER 0 -#define CONFIG_SP5X_DECODER 0 -#define CONFIG_SUNRAST_DECODER 0 -#define CONFIG_SVQ1_DECODER 0 -#define CONFIG_SVQ3_DECODER 0 -#define CONFIG_TARGA_DECODER 0 -#define CONFIG_THEORA_DECODER 0 -#define CONFIG_THP_DECODER 0 -#define CONFIG_TIERTEXSEQVIDEO_DECODER 0 -#define CONFIG_TIFF_DECODER 0 -#define CONFIG_TMV_DECODER 0 -#define CONFIG_TRUEMOTION1_DECODER 0 -#define CONFIG_TRUEMOTION2_DECODER 0 -#define CONFIG_TSCC_DECODER 0 -#define CONFIG_TSCC2_DECODER 0 -#define CONFIG_TXD_DECODER 0 -#define CONFIG_ULTI_DECODER 0 -#define CONFIG_UTVIDEO_DECODER 0 -#define CONFIG_V210_DECODER 0 -#define CONFIG_V210X_DECODER 0 -#define CONFIG_V410_DECODER 0 -#define CONFIG_VB_DECODER 0 -#define CONFIG_VBLE_DECODER 0 -#define CONFIG_VC1_DECODER 0 -#define CONFIG_VC1IMAGE_DECODER 0 -#define CONFIG_VCR1_DECODER 0 -#define CONFIG_VMDVIDEO_DECODER 0 -#define CONFIG_VMNC_DECODER 0 -#define CONFIG_VP3_DECODER 0 -#define CONFIG_VP5_DECODER 0 -#define CONFIG_VP6_DECODER 0 -#define CONFIG_VP6A_DECODER 0 -#define CONFIG_VP6F_DECODER 0 -#define CONFIG_VP7_DECODER 0 -#define CONFIG_VP8_DECODER 0 -#define CONFIG_VP9_DECODER 0 -#define CONFIG_VQA_DECODER 0 -#define CONFIG_WEBP_DECODER 0 -#define CONFIG_WMV1_DECODER 0 -#define CONFIG_WMV2_DECODER 0 -#define CONFIG_WMV3_DECODER 0 -#define CONFIG_WMV3IMAGE_DECODER 0 -#define CONFIG_WNV1_DECODER 0 -#define CONFIG_XAN_WC3_DECODER 0 -#define CONFIG_XAN_WC4_DECODER 0 -#define CONFIG_XBM_DECODER 0 -#define CONFIG_XL_DECODER 0 -#define CONFIG_XWD_DECODER 0 -#define CONFIG_YOP_DECODER 0 -#define CONFIG_ZEROCODEC_DECODER 0 -#define CONFIG_ZLIB_DECODER 0 -#define CONFIG_ZMBV_DECODER 0 -#define CONFIG_AAC_DECODER 0 -#define CONFIG_AAC_LATM_DECODER 0 -#define CONFIG_AC3_DECODER 0 -#define CONFIG_ALAC_DECODER 0 -#define CONFIG_ALS_DECODER 0 -#define CONFIG_AMRNB_DECODER 0 -#define CONFIG_AMRWB_DECODER 0 -#define CONFIG_APE_DECODER 0 -#define CONFIG_ATRAC1_DECODER 0 -#define CONFIG_ATRAC3_DECODER 0 -#define CONFIG_ATRAC3P_DECODER 0 -#define CONFIG_BINKAUDIO_DCT_DECODER 0 -#define CONFIG_BINKAUDIO_RDFT_DECODER 0 -#define CONFIG_BMV_AUDIO_DECODER 0 -#define CONFIG_COOK_DECODER 0 -#define CONFIG_DCA_DECODER 0 -#define CONFIG_DSICINAUDIO_DECODER 0 -#define CONFIG_EAC3_DECODER 0 -#define CONFIG_FLAC_DECODER 0 -#define CONFIG_G723_1_DECODER 0 -#define CONFIG_GSM_DECODER 0 -#define CONFIG_GSM_MS_DECODER 0 -#define CONFIG_IAC_DECODER 0 -#define CONFIG_IMC_DECODER 0 -#define CONFIG_MACE3_DECODER 0 -#define CONFIG_MACE6_DECODER 0 -#define CONFIG_METASOUND_DECODER 0 -#define CONFIG_MLP_DECODER 0 -#define CONFIG_MP1_DECODER 0 -#define CONFIG_MP1FLOAT_DECODER 0 -#define CONFIG_MP2_DECODER 0 -#define CONFIG_MP2FLOAT_DECODER 0 -#define CONFIG_MP3_DECODER 0 -#define CONFIG_MP3FLOAT_DECODER 0 -#define CONFIG_MP3ADU_DECODER 0 -#define CONFIG_MP3ADUFLOAT_DECODER 0 -#define CONFIG_MP3ON4_DECODER 0 -#define CONFIG_MP3ON4FLOAT_DECODER 0 -#define CONFIG_MPC7_DECODER 0 -#define CONFIG_MPC8_DECODER 0 -#define CONFIG_NELLYMOSER_DECODER 0 -#define CONFIG_ON2AVC_DECODER 0 -#define CONFIG_OPUS_DECODER 0 -#define CONFIG_PAF_AUDIO_DECODER 0 -#define CONFIG_QCELP_DECODER 0 -#define CONFIG_QDM2_DECODER 0 -#define CONFIG_RA_144_DECODER 0 -#define CONFIG_RA_288_DECODER 0 -#define CONFIG_RALF_DECODER 0 -#define CONFIG_SHORTEN_DECODER 0 -#define CONFIG_SIPR_DECODER 0 -#define CONFIG_SMACKAUD_DECODER 0 -#define CONFIG_TAK_DECODER 0 -#define CONFIG_TRUEHD_DECODER 0 -#define CONFIG_TRUESPEECH_DECODER 0 -#define CONFIG_TTA_DECODER 0 -#define CONFIG_TWINVQ_DECODER 0 -#define CONFIG_VMDAUDIO_DECODER 0 -#define CONFIG_VORBIS_DECODER 0 -#define CONFIG_WAVPACK_DECODER 0 -#define CONFIG_WMALOSSLESS_DECODER 0 -#define CONFIG_WMAPRO_DECODER 0 -#define CONFIG_WMAV1_DECODER 0 -#define CONFIG_WMAV2_DECODER 0 -#define CONFIG_WMAVOICE_DECODER 0 -#define CONFIG_WS_SND1_DECODER 0 -#define CONFIG_PCM_ALAW_DECODER 0 -#define CONFIG_PCM_BLURAY_DECODER 0 -#define CONFIG_PCM_DVD_DECODER 0 -#define CONFIG_PCM_F32BE_DECODER 0 -#define CONFIG_PCM_F32LE_DECODER 0 -#define CONFIG_PCM_F64BE_DECODER 0 -#define CONFIG_PCM_F64LE_DECODER 0 -#define CONFIG_PCM_LXF_DECODER 0 -#define CONFIG_PCM_MULAW_DECODER 0 -#define CONFIG_PCM_S8_DECODER 0 -#define CONFIG_PCM_S8_PLANAR_DECODER 0 -#define CONFIG_PCM_S16BE_DECODER 0 -#define CONFIG_PCM_S16LE_DECODER 0 -#define CONFIG_PCM_S16LE_PLANAR_DECODER 0 -#define CONFIG_PCM_S24BE_DECODER 0 -#define CONFIG_PCM_S24DAUD_DECODER 0 -#define CONFIG_PCM_S24LE_DECODER 0 -#define CONFIG_PCM_S24LE_PLANAR_DECODER 0 -#define CONFIG_PCM_S32BE_DECODER 0 -#define CONFIG_PCM_S32LE_DECODER 0 -#define CONFIG_PCM_S32LE_PLANAR_DECODER 0 -#define CONFIG_PCM_U8_DECODER 0 -#define CONFIG_PCM_U16BE_DECODER 0 -#define CONFIG_PCM_U16LE_DECODER 0 -#define CONFIG_PCM_U24BE_DECODER 0 -#define CONFIG_PCM_U24LE_DECODER 0 -#define CONFIG_PCM_U32BE_DECODER 0 -#define CONFIG_PCM_U32LE_DECODER 0 -#define CONFIG_PCM_ZORK_DECODER 0 -#define CONFIG_INTERPLAY_DPCM_DECODER 0 -#define CONFIG_ROQ_DPCM_DECODER 0 -#define CONFIG_SOL_DPCM_DECODER 0 -#define CONFIG_XAN_DPCM_DECODER 0 -#define CONFIG_ADPCM_4XM_DECODER 0 -#define CONFIG_ADPCM_ADX_DECODER 0 -#define CONFIG_ADPCM_CT_DECODER 0 -#define CONFIG_ADPCM_EA_DECODER 0 -#define CONFIG_ADPCM_EA_MAXIS_XA_DECODER 0 -#define CONFIG_ADPCM_EA_R1_DECODER 0 -#define CONFIG_ADPCM_EA_R2_DECODER 0 -#define CONFIG_ADPCM_EA_R3_DECODER 0 -#define CONFIG_ADPCM_EA_XAS_DECODER 0 -#define CONFIG_ADPCM_G722_DECODER 0 -#define CONFIG_ADPCM_G726_DECODER 0 -#define CONFIG_ADPCM_IMA_AMV_DECODER 0 -#define CONFIG_ADPCM_IMA_APC_DECODER 0 -#define CONFIG_ADPCM_IMA_DK3_DECODER 0 -#define CONFIG_ADPCM_IMA_DK4_DECODER 0 -#define CONFIG_ADPCM_IMA_EA_EACS_DECODER 0 -#define CONFIG_ADPCM_IMA_EA_SEAD_DECODER 0 -#define CONFIG_ADPCM_IMA_ISS_DECODER 0 -#define CONFIG_ADPCM_IMA_QT_DECODER 0 -#define CONFIG_ADPCM_IMA_SMJPEG_DECODER 0 -#define CONFIG_ADPCM_IMA_WAV_DECODER 0 -#define CONFIG_ADPCM_IMA_WS_DECODER 0 -#define CONFIG_ADPCM_MS_DECODER 0 -#define CONFIG_ADPCM_SBPRO_2_DECODER 0 -#define CONFIG_ADPCM_SBPRO_3_DECODER 0 -#define CONFIG_ADPCM_SBPRO_4_DECODER 0 -#define CONFIG_ADPCM_SWF_DECODER 0 -#define CONFIG_ADPCM_THP_DECODER 0 -#define CONFIG_ADPCM_VIMA_DECODER 0 -#define CONFIG_ADPCM_XA_DECODER 0 -#define CONFIG_ADPCM_YAMAHA_DECODER 0 -#define CONFIG_ASS_DECODER 0 -#define CONFIG_DVBSUB_DECODER 0 -#define CONFIG_DVDSUB_DECODER 0 -#define CONFIG_PGSSUB_DECODER 0 -#define CONFIG_SRT_DECODER 0 -#define CONFIG_XSUB_DECODER 0 -#define CONFIG_LIBFDK_AAC_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_LIBVPX_VP8_DECODER 0 -#define CONFIG_LIBVPX_VP9_DECODER 0 -#define CONFIG_AAC_DEMUXER 0 -#define CONFIG_AC3_DEMUXER 0 -#define CONFIG_ADX_DEMUXER 0 -#define CONFIG_AEA_DEMUXER 0 -#define CONFIG_AIFF_DEMUXER 0 -#define CONFIG_AMR_DEMUXER 0 -#define CONFIG_ANM_DEMUXER 0 -#define CONFIG_APC_DEMUXER 0 -#define CONFIG_APE_DEMUXER 0 -#define CONFIG_ASF_DEMUXER 0 -#define CONFIG_ASS_DEMUXER 0 -#define CONFIG_AU_DEMUXER 0 -#define CONFIG_AVI_DEMUXER 0 -#define CONFIG_AVISYNTH_DEMUXER 0 -#define CONFIG_AVS_DEMUXER 0 -#define CONFIG_BETHSOFTVID_DEMUXER 0 -#define CONFIG_BFI_DEMUXER 0 -#define CONFIG_BINK_DEMUXER 0 -#define CONFIG_BMV_DEMUXER 0 -#define CONFIG_C93_DEMUXER 0 -#define CONFIG_CAF_DEMUXER 0 -#define CONFIG_CAVSVIDEO_DEMUXER 0 -#define CONFIG_CDG_DEMUXER 0 -#define CONFIG_CDXL_DEMUXER 0 -#define CONFIG_DAUD_DEMUXER 0 -#define CONFIG_DFA_DEMUXER 0 -#define CONFIG_DIRAC_DEMUXER 0 -#define CONFIG_DNXHD_DEMUXER 0 -#define CONFIG_DSICIN_DEMUXER 0 -#define CONFIG_DTS_DEMUXER 0 -#define CONFIG_DV_DEMUXER 0 -#define CONFIG_DXA_DEMUXER 0 -#define CONFIG_EA_DEMUXER 0 -#define CONFIG_EA_CDATA_DEMUXER 0 -#define CONFIG_EAC3_DEMUXER 0 -#define CONFIG_FFMETADATA_DEMUXER 0 -#define CONFIG_FILMSTRIP_DEMUXER 0 -#define CONFIG_FLAC_DEMUXER 0 -#define CONFIG_FLIC_DEMUXER 0 -#define CONFIG_FLV_DEMUXER 0 -#define CONFIG_FOURXM_DEMUXER 0 -#define CONFIG_G722_DEMUXER 0 -#define CONFIG_G723_1_DEMUXER 0 -#define CONFIG_GSM_DEMUXER 0 -#define CONFIG_GXF_DEMUXER 0 -#define CONFIG_H261_DEMUXER 0 -#define CONFIG_H263_DEMUXER 0 -#define CONFIG_H264_DEMUXER 0 -#define CONFIG_HEVC_DEMUXER 0 -#define CONFIG_HLS_DEMUXER 0 -#define CONFIG_HNM_DEMUXER 0 -#define CONFIG_IDCIN_DEMUXER 0 -#define CONFIG_IFF_DEMUXER 0 -#define CONFIG_ILBC_DEMUXER 0 -#define CONFIG_IMAGE2_DEMUXER 0 -#define CONFIG_IMAGE2PIPE_DEMUXER 0 -#define CONFIG_INGENIENT_DEMUXER 0 -#define CONFIG_IPMOVIE_DEMUXER 0 -#define CONFIG_ISS_DEMUXER 0 -#define CONFIG_IV8_DEMUXER 0 -#define CONFIG_IVF_DEMUXER 0 -#define CONFIG_JV_DEMUXER 0 -#define CONFIG_LATM_DEMUXER 0 -#define CONFIG_LMLM4_DEMUXER 0 -#define CONFIG_LXF_DEMUXER 0 -#define CONFIG_M4V_DEMUXER 0 -#define CONFIG_MATROSKA_DEMUXER 0 -#define CONFIG_MJPEG_DEMUXER 0 -#define CONFIG_MLP_DEMUXER 0 -#define CONFIG_MM_DEMUXER 0 -#define CONFIG_MMF_DEMUXER 0 -#define CONFIG_MOV_DEMUXER 0 -#define CONFIG_MP3_DEMUXER 0 -#define CONFIG_MPC_DEMUXER 0 -#define CONFIG_MPC8_DEMUXER 0 -#define CONFIG_MPEGPS_DEMUXER 0 -#define CONFIG_MPEGTS_DEMUXER 0 -#define CONFIG_MPEGTSRAW_DEMUXER 0 -#define CONFIG_MPEGVIDEO_DEMUXER 0 -#define CONFIG_MSNWC_TCP_DEMUXER 0 -#define CONFIG_MTV_DEMUXER 0 -#define CONFIG_MV_DEMUXER 0 -#define CONFIG_MVI_DEMUXER 0 -#define CONFIG_MXF_DEMUXER 0 -#define CONFIG_MXG_DEMUXER 0 -#define CONFIG_NC_DEMUXER 0 -#define CONFIG_NSV_DEMUXER 0 -#define CONFIG_NUT_DEMUXER 0 -#define CONFIG_NUV_DEMUXER 0 -#define CONFIG_OGG_DEMUXER 0 -#define CONFIG_OMA_DEMUXER 0 -#define CONFIG_PAF_DEMUXER 0 -#define CONFIG_PCM_ALAW_DEMUXER 0 -#define CONFIG_PCM_MULAW_DEMUXER 0 -#define CONFIG_PCM_F64BE_DEMUXER 0 -#define CONFIG_PCM_F64LE_DEMUXER 0 -#define CONFIG_PCM_F32BE_DEMUXER 0 -#define CONFIG_PCM_F32LE_DEMUXER 0 -#define CONFIG_PCM_S32BE_DEMUXER 0 -#define CONFIG_PCM_S32LE_DEMUXER 0 -#define CONFIG_PCM_S24BE_DEMUXER 0 -#define CONFIG_PCM_S24LE_DEMUXER 0 -#define CONFIG_PCM_S16BE_DEMUXER 0 -#define CONFIG_PCM_S16LE_DEMUXER 0 -#define CONFIG_PCM_S8_DEMUXER 0 -#define CONFIG_PCM_U32BE_DEMUXER 0 -#define CONFIG_PCM_U32LE_DEMUXER 0 -#define CONFIG_PCM_U24BE_DEMUXER 0 -#define CONFIG_PCM_U24LE_DEMUXER 0 -#define CONFIG_PCM_U16BE_DEMUXER 0 -#define CONFIG_PCM_U16LE_DEMUXER 0 -#define CONFIG_PCM_U8_DEMUXER 0 -#define CONFIG_PMP_DEMUXER 0 -#define CONFIG_PVA_DEMUXER 0 -#define CONFIG_QCP_DEMUXER 0 -#define CONFIG_R3D_DEMUXER 0 -#define CONFIG_RAWVIDEO_DEMUXER 0 -#define CONFIG_RL2_DEMUXER 0 -#define CONFIG_RM_DEMUXER 0 -#define CONFIG_ROQ_DEMUXER 0 -#define CONFIG_RPL_DEMUXER 0 -#define CONFIG_RSO_DEMUXER 0 -#define CONFIG_RTP_DEMUXER 0 -#define CONFIG_RTSP_DEMUXER 0 -#define CONFIG_SAP_DEMUXER 0 -#define CONFIG_SDP_DEMUXER 0 -#define CONFIG_SEGAFILM_DEMUXER 0 -#define CONFIG_SHORTEN_DEMUXER 0 -#define CONFIG_SIFF_DEMUXER 0 -#define CONFIG_SMACKER_DEMUXER 0 -#define CONFIG_SMJPEG_DEMUXER 0 -#define CONFIG_SMUSH_DEMUXER 0 -#define CONFIG_SOL_DEMUXER 0 -#define CONFIG_SOX_DEMUXER 0 -#define CONFIG_SPDIF_DEMUXER 0 -#define CONFIG_SRT_DEMUXER 0 -#define CONFIG_STR_DEMUXER 0 -#define CONFIG_SWF_DEMUXER 0 -#define CONFIG_TAK_DEMUXER 0 -#define CONFIG_THP_DEMUXER 0 -#define CONFIG_TIERTEXSEQ_DEMUXER 0 -#define CONFIG_TMV_DEMUXER 0 -#define CONFIG_TRUEHD_DEMUXER 0 -#define CONFIG_TTA_DEMUXER 0 -#define CONFIG_TXD_DEMUXER 0 -#define CONFIG_TTY_DEMUXER 0 -#define CONFIG_VC1_DEMUXER 0 -#define CONFIG_VC1T_DEMUXER 0 -#define CONFIG_VMD_DEMUXER 0 -#define CONFIG_VOC_DEMUXER 0 -#define CONFIG_VQF_DEMUXER 0 -#define CONFIG_W64_DEMUXER 0 -#define CONFIG_WAV_DEMUXER 0 -#define CONFIG_WC3_DEMUXER 0 -#define CONFIG_WSAUD_DEMUXER 0 -#define CONFIG_WSVQA_DEMUXER 0 -#define CONFIG_WTV_DEMUXER 0 -#define CONFIG_WV_DEMUXER 0 -#define CONFIG_XA_DEMUXER 0 -#define CONFIG_XMV_DEMUXER 0 -#define CONFIG_XWMA_DEMUXER 0 -#define CONFIG_YOP_DEMUXER 0 -#define CONFIG_YUV4MPEGPIPE_DEMUXER 0 -#define CONFIG_A64MULTI_ENCODER 0 -#define CONFIG_A64MULTI5_ENCODER 0 -#define CONFIG_ALIAS_PIX_ENCODER 0 -#define CONFIG_ASV1_ENCODER 0 -#define CONFIG_ASV2_ENCODER 0 -#define CONFIG_BMP_ENCODER 0 -#define CONFIG_CLJR_ENCODER 0 -#define CONFIG_COMFORTNOISE_ENCODER 0 -#define CONFIG_DNXHD_ENCODER 0 -#define CONFIG_DPX_ENCODER 0 -#define CONFIG_DVVIDEO_ENCODER 0 -#define CONFIG_FFV1_ENCODER 0 -#define CONFIG_FFVHUFF_ENCODER 0 -#define CONFIG_FLASHSV_ENCODER 0 -#define CONFIG_FLV_ENCODER 0 -#define CONFIG_GIF_ENCODER 0 -#define CONFIG_H261_ENCODER 0 -#define CONFIG_H263_ENCODER 0 -#define CONFIG_H263P_ENCODER 0 -#define CONFIG_HUFFYUV_ENCODER 0 -#define CONFIG_JPEGLS_ENCODER 0 -#define CONFIG_LJPEG_ENCODER 0 -#define CONFIG_MJPEG_ENCODER 0 -#define CONFIG_MPEG1VIDEO_ENCODER 0 -#define CONFIG_MPEG2VIDEO_ENCODER 0 -#define CONFIG_MPEG4_ENCODER 0 -#define CONFIG_MSMPEG4V2_ENCODER 0 -#define CONFIG_MSMPEG4V3_ENCODER 0 -#define CONFIG_PAM_ENCODER 0 -#define CONFIG_PBM_ENCODER 0 -#define CONFIG_PCX_ENCODER 0 -#define CONFIG_PGM_ENCODER 0 -#define CONFIG_PGMYUV_ENCODER 0 -#define CONFIG_PNG_ENCODER 0 -#define CONFIG_PPM_ENCODER 0 -#define CONFIG_PRORES_ENCODER 0 -#define CONFIG_QTRLE_ENCODER 0 -#define CONFIG_RAWVIDEO_ENCODER 0 -#define CONFIG_ROQ_ENCODER 0 -#define CONFIG_RV10_ENCODER 0 -#define CONFIG_RV20_ENCODER 0 -#define CONFIG_SGI_ENCODER 0 -#define CONFIG_SUNRAST_ENCODER 0 -#define CONFIG_SVQ1_ENCODER 0 -#define CONFIG_TARGA_ENCODER 0 -#define CONFIG_TIFF_ENCODER 0 -#define CONFIG_UTVIDEO_ENCODER 0 -#define CONFIG_V210_ENCODER 0 -#define CONFIG_V410_ENCODER 0 -#define CONFIG_WMV1_ENCODER 0 -#define CONFIG_WMV2_ENCODER 0 -#define CONFIG_XBM_ENCODER 0 -#define CONFIG_XWD_ENCODER 0 -#define CONFIG_ZLIB_ENCODER 0 -#define CONFIG_ZMBV_ENCODER 0 -#define CONFIG_AAC_ENCODER 0 -#define CONFIG_AC3_ENCODER 0 -#define CONFIG_AC3_FIXED_ENCODER 0 -#define CONFIG_ALAC_ENCODER 0 -#define CONFIG_EAC3_ENCODER 0 -#define CONFIG_FLAC_ENCODER 0 -#define CONFIG_MP2_ENCODER 0 -#define CONFIG_NELLYMOSER_ENCODER 0 -#define CONFIG_RA_144_ENCODER 0 -#define CONFIG_VORBIS_ENCODER 0 -#define CONFIG_WMAV1_ENCODER 0 -#define CONFIG_WMAV2_ENCODER 0 -#define CONFIG_PCM_ALAW_ENCODER 0 -#define CONFIG_PCM_F32BE_ENCODER 0 -#define CONFIG_PCM_F32LE_ENCODER 0 -#define CONFIG_PCM_F64BE_ENCODER 0 -#define CONFIG_PCM_F64LE_ENCODER 0 -#define CONFIG_PCM_MULAW_ENCODER 0 -#define CONFIG_PCM_S8_ENCODER 0 -#define CONFIG_PCM_S16BE_ENCODER 0 -#define CONFIG_PCM_S16LE_ENCODER 0 -#define CONFIG_PCM_S24BE_ENCODER 0 -#define CONFIG_PCM_S24DAUD_ENCODER 0 -#define CONFIG_PCM_S24LE_ENCODER 0 -#define CONFIG_PCM_S32BE_ENCODER 0 -#define CONFIG_PCM_S32LE_ENCODER 0 -#define CONFIG_PCM_U8_ENCODER 0 -#define CONFIG_PCM_U16BE_ENCODER 0 -#define CONFIG_PCM_U16LE_ENCODER 0 -#define CONFIG_PCM_U24BE_ENCODER 0 -#define CONFIG_PCM_U24LE_ENCODER 0 -#define CONFIG_PCM_U32BE_ENCODER 0 -#define CONFIG_PCM_U32LE_ENCODER 0 -#define CONFIG_ROQ_DPCM_ENCODER 0 -#define CONFIG_ADPCM_ADX_ENCODER 0 -#define CONFIG_ADPCM_G722_ENCODER 0 -#define CONFIG_ADPCM_G726_ENCODER 0 -#define CONFIG_ADPCM_IMA_QT_ENCODER 0 -#define CONFIG_ADPCM_IMA_WAV_ENCODER 0 -#define CONFIG_ADPCM_MS_ENCODER 0 -#define CONFIG_ADPCM_SWF_ENCODER 0 -#define CONFIG_ADPCM_YAMAHA_ENCODER 0 -#define CONFIG_ASS_ENCODER 0 -#define CONFIG_DVBSUB_ENCODER 0 -#define CONFIG_DVDSUB_ENCODER 0 -#define CONFIG_XSUB_ENCODER 0 -#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 0 -#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_LIBVO_AACENC_ENCODER 0 -#define CONFIG_LIBVO_AMRWBENC_ENCODER 0 -#define CONFIG_LIBVORBIS_ENCODER 0 -#define CONFIG_LIBVPX_VP8_ENCODER 0 -#define CONFIG_LIBVPX_VP9_ENCODER 0 -#define CONFIG_LIBWAVPACK_ENCODER 0 -#define CONFIG_LIBWEBP_ENCODER 0 -#define CONFIG_LIBX264_ENCODER 0 -#define CONFIG_LIBX265_ENCODER 0 -#define CONFIG_LIBXAVS_ENCODER 0 -#define CONFIG_LIBXVID_ENCODER 0 -#define CONFIG_AFORMAT_FILTER 0 -#define CONFIG_AMIX_FILTER 0 -#define CONFIG_ANULL_FILTER 0 -#define CONFIG_ASETPTS_FILTER 0 -#define CONFIG_ASETTB_FILTER 0 -#define CONFIG_ASHOWINFO_FILTER 0 -#define CONFIG_ASPLIT_FILTER 0 -#define CONFIG_ASYNCTS_FILTER 0 -#define CONFIG_ATRIM_FILTER 0 -#define CONFIG_BS2B_FILTER 0 -#define CONFIG_CHANNELMAP_FILTER 0 -#define CONFIG_CHANNELSPLIT_FILTER 0 -#define CONFIG_COMPAND_FILTER 0 -#define CONFIG_JOIN_FILTER 0 -#define CONFIG_RESAMPLE_FILTER 0 -#define CONFIG_VOLUME_FILTER 0 -#define CONFIG_ANULLSRC_FILTER 0 -#define CONFIG_ANULLSINK_FILTER 0 -#define CONFIG_BLACKFRAME_FILTER 0 -#define CONFIG_BOXBLUR_FILTER 0 -#define CONFIG_COPY_FILTER 0 -#define CONFIG_CROP_FILTER 0 -#define CONFIG_CROPDETECT_FILTER 0 -#define CONFIG_DELOGO_FILTER 0 -#define CONFIG_DRAWBOX_FILTER 0 -#define CONFIG_DRAWTEXT_FILTER 0 -#define CONFIG_FADE_FILTER 0 -#define CONFIG_FIELDORDER_FILTER 0 -#define CONFIG_FORMAT_FILTER 0 -#define CONFIG_FPS_FILTER 0 -#define CONFIG_FRAMEPACK_FILTER 0 -#define CONFIG_FREI0R_FILTER 0 -#define CONFIG_GRADFUN_FILTER 0 -#define CONFIG_HFLIP_FILTER 0 -#define CONFIG_HQDN3D_FILTER 0 -#define CONFIG_INTERLACE_FILTER 0 -#define CONFIG_LUT_FILTER 0 -#define CONFIG_LUTRGB_FILTER 0 -#define CONFIG_LUTYUV_FILTER 0 -#define CONFIG_NEGATE_FILTER 0 -#define CONFIG_NOFORMAT_FILTER 0 -#define CONFIG_NULL_FILTER 0 -#define CONFIG_OCV_FILTER 0 -#define CONFIG_OVERLAY_FILTER 0 -#define CONFIG_PAD_FILTER 0 -#define CONFIG_PIXDESCTEST_FILTER 0 -#define CONFIG_SCALE_FILTER 0 -#define CONFIG_SELECT_FILTER 0 -#define CONFIG_SETDAR_FILTER 0 -#define CONFIG_SETPTS_FILTER 0 -#define CONFIG_SETSAR_FILTER 0 -#define CONFIG_SETTB_FILTER 0 -#define CONFIG_SHOWINFO_FILTER 0 -#define CONFIG_SHUFFLEPLANES_FILTER 0 -#define CONFIG_SPLIT_FILTER 0 -#define CONFIG_TRANSPOSE_FILTER 0 -#define CONFIG_TRIM_FILTER 0 -#define CONFIG_UNSHARP_FILTER 0 -#define CONFIG_VFLIP_FILTER 0 -#define CONFIG_YADIF_FILTER 0 -#define CONFIG_COLOR_FILTER 0 -#define CONFIG_FREI0R_SRC_FILTER 0 -#define CONFIG_MOVIE_FILTER 0 -#define CONFIG_NULLSRC_FILTER 0 -#define CONFIG_RGBTESTSRC_FILTER 0 -#define CONFIG_TESTSRC_FILTER 0 -#define CONFIG_NULLSINK_FILTER 0 -#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_VDA_OLD_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 0 -#define CONFIG_BKTR_INDEV 0 -#define CONFIG_DV1394_INDEV 0 -#define CONFIG_FBDEV_INDEV 0 -#define CONFIG_JACK_INDEV 0 -#define CONFIG_OSS_INDEV 0 -#define CONFIG_PULSE_INDEV 0 -#define CONFIG_SNDIO_INDEV 0 -#define CONFIG_V4L2_INDEV 0 -#define CONFIG_VFWCAP_INDEV 0 -#define CONFIG_X11GRAB_INDEV 0 -#define CONFIG_LIBCDIO_INDEV 0 -#define CONFIG_LIBDC1394_INDEV 0 -#define CONFIG_A64_MUXER 0 -#define CONFIG_AC3_MUXER 0 -#define CONFIG_ADTS_MUXER 0 -#define CONFIG_ADX_MUXER 0 -#define CONFIG_AIFF_MUXER 0 -#define CONFIG_AMR_MUXER 0 -#define CONFIG_ASF_MUXER 0 -#define CONFIG_ASS_MUXER 0 -#define CONFIG_ASF_STREAM_MUXER 0 -#define CONFIG_AU_MUXER 0 -#define CONFIG_AVI_MUXER 0 -#define CONFIG_AVM2_MUXER 0 -#define CONFIG_CAVSVIDEO_MUXER 0 -#define CONFIG_CRC_MUXER 0 -#define CONFIG_DAUD_MUXER 0 -#define CONFIG_DIRAC_MUXER 0 -#define CONFIG_DNXHD_MUXER 0 -#define CONFIG_DTS_MUXER 0 -#define CONFIG_DV_MUXER 0 -#define CONFIG_EAC3_MUXER 0 -#define CONFIG_F4V_MUXER 0 -#define CONFIG_FFMETADATA_MUXER 0 -#define CONFIG_FILMSTRIP_MUXER 0 -#define CONFIG_FLAC_MUXER 0 -#define CONFIG_FLV_MUXER 0 -#define CONFIG_FRAMECRC_MUXER 0 -#define CONFIG_FRAMEMD5_MUXER 0 -#define CONFIG_G722_MUXER 0 -#define CONFIG_GIF_MUXER 0 -#define CONFIG_GXF_MUXER 0 -#define CONFIG_H261_MUXER 0 -#define CONFIG_H263_MUXER 0 -#define CONFIG_H264_MUXER 0 -#define CONFIG_HDS_MUXER 0 -#define CONFIG_HEVC_MUXER 0 -#define CONFIG_HLS_MUXER 0 -#define CONFIG_ILBC_MUXER 0 -#define CONFIG_IMAGE2_MUXER 0 -#define CONFIG_IMAGE2PIPE_MUXER 0 -#define CONFIG_IPOD_MUXER 0 -#define CONFIG_ISMV_MUXER 0 -#define CONFIG_IVF_MUXER 0 -#define CONFIG_LATM_MUXER 0 -#define CONFIG_M4V_MUXER 0 -#define CONFIG_MD5_MUXER 0 -#define CONFIG_MATROSKA_MUXER 0 -#define CONFIG_MATROSKA_AUDIO_MUXER 0 -#define CONFIG_MJPEG_MUXER 0 -#define CONFIG_MLP_MUXER 0 -#define CONFIG_MMF_MUXER 0 -#define CONFIG_MOV_MUXER 0 -#define CONFIG_MP2_MUXER 0 -#define CONFIG_MP3_MUXER 0 -#define CONFIG_MP4_MUXER 0 -#define CONFIG_MPEG1SYSTEM_MUXER 0 -#define CONFIG_MPEG1VCD_MUXER 0 -#define CONFIG_MPEG1VIDEO_MUXER 0 -#define CONFIG_MPEG2DVD_MUXER 0 -#define CONFIG_MPEG2SVCD_MUXER 0 -#define CONFIG_MPEG2VIDEO_MUXER 0 -#define CONFIG_MPEG2VOB_MUXER 0 -#define CONFIG_MPEGTS_MUXER 0 -#define CONFIG_MPJPEG_MUXER 0 -#define CONFIG_MXF_MUXER 0 -#define CONFIG_MXF_D10_MUXER 0 -#define CONFIG_NULL_MUXER 0 -#define CONFIG_NUT_MUXER 0 -#define CONFIG_OGG_MUXER 0 -#define CONFIG_OMA_MUXER 0 -#define CONFIG_PCM_ALAW_MUXER 0 -#define CONFIG_PCM_MULAW_MUXER 0 -#define CONFIG_PCM_F64BE_MUXER 0 -#define CONFIG_PCM_F64LE_MUXER 0 -#define CONFIG_PCM_F32BE_MUXER 0 -#define CONFIG_PCM_F32LE_MUXER 0 -#define CONFIG_PCM_S32BE_MUXER 0 -#define CONFIG_PCM_S32LE_MUXER 0 -#define CONFIG_PCM_S24BE_MUXER 0 -#define CONFIG_PCM_S24LE_MUXER 0 -#define CONFIG_PCM_S16BE_MUXER 0 -#define CONFIG_PCM_S16LE_MUXER 0 -#define CONFIG_PCM_S8_MUXER 0 -#define CONFIG_PCM_U32BE_MUXER 0 -#define CONFIG_PCM_U32LE_MUXER 0 -#define CONFIG_PCM_U24BE_MUXER 0 -#define CONFIG_PCM_U24LE_MUXER 0 -#define CONFIG_PCM_U16BE_MUXER 0 -#define CONFIG_PCM_U16LE_MUXER 0 -#define CONFIG_PCM_U8_MUXER 0 -#define CONFIG_PSP_MUXER 0 -#define CONFIG_RAWVIDEO_MUXER 0 -#define CONFIG_RM_MUXER 0 -#define CONFIG_ROQ_MUXER 0 -#define CONFIG_RSO_MUXER 0 -#define CONFIG_RTP_MUXER 0 -#define CONFIG_RTSP_MUXER 0 -#define CONFIG_SAP_MUXER 0 -#define CONFIG_SEGMENT_MUXER 0 -#define CONFIG_SMJPEG_MUXER 0 -#define CONFIG_SMOOTHSTREAMING_MUXER 0 -#define CONFIG_SOX_MUXER 0 -#define CONFIG_SPDIF_MUXER 0 -#define CONFIG_SRT_MUXER 0 -#define CONFIG_SWF_MUXER 0 -#define CONFIG_TG2_MUXER 0 -#define CONFIG_TGP_MUXER 0 -#define CONFIG_TRUEHD_MUXER 0 -#define CONFIG_VC1T_MUXER 0 -#define CONFIG_VOC_MUXER 0 -#define CONFIG_WAV_MUXER 0 -#define CONFIG_WEBM_MUXER 0 -#define CONFIG_WV_MUXER 0 -#define CONFIG_YUV4MPEGPIPE_MUXER 0 -#define CONFIG_ALSA_OUTDEV 0 -#define CONFIG_OSS_OUTDEV 0 -#define CONFIG_SNDIO_OUTDEV 0 -#define CONFIG_AAC_PARSER 0 -#define CONFIG_AAC_LATM_PARSER 0 -#define CONFIG_AC3_PARSER 0 -#define CONFIG_ADX_PARSER 0 -#define CONFIG_BMP_PARSER 0 -#define CONFIG_CAVSVIDEO_PARSER 0 -#define CONFIG_COOK_PARSER 0 -#define CONFIG_DCA_PARSER 0 -#define CONFIG_DIRAC_PARSER 0 -#define CONFIG_DNXHD_PARSER 0 -#define CONFIG_DVBSUB_PARSER 0 -#define CONFIG_DVDSUB_PARSER 0 -#define CONFIG_FLAC_PARSER 0 -#define CONFIG_GSM_PARSER 0 -#define CONFIG_H261_PARSER 0 -#define CONFIG_H263_PARSER 0 -#define CONFIG_H264_PARSER 0 -#define CONFIG_HEVC_PARSER 0 -#define CONFIG_MJPEG_PARSER 0 -#define CONFIG_MLP_PARSER 0 -#define CONFIG_MPEG4VIDEO_PARSER 0 -#define CONFIG_MPEGAUDIO_PARSER 0 -#define CONFIG_MPEGVIDEO_PARSER 0 -#define CONFIG_OPUS_PARSER 0 -#define CONFIG_PNG_PARSER 0 -#define CONFIG_PNM_PARSER 0 -#define CONFIG_RV30_PARSER 0 -#define CONFIG_RV40_PARSER 0 -#define CONFIG_TAK_PARSER 0 -#define CONFIG_VC1_PARSER 0 -#define CONFIG_VORBIS_PARSER 0 -#define CONFIG_VP3_PARSER 0 -#define CONFIG_VP8_PARSER 0 -#define CONFIG_CONCAT_PROTOCOL 0 -#define CONFIG_CRYPTO_PROTOCOL 0 -#define CONFIG_FFRTMPCRYPT_PROTOCOL 0 -#define CONFIG_FFRTMPHTTP_PROTOCOL 0 -#define CONFIG_FILE_PROTOCOL 0 -#define CONFIG_GOPHER_PROTOCOL 0 -#define CONFIG_HLS_PROTOCOL 0 -#define CONFIG_HTTP_PROTOCOL 0 -#define CONFIG_HTTPPROXY_PROTOCOL 0 -#define CONFIG_HTTPS_PROTOCOL 0 -#define CONFIG_ICECAST_PROTOCOL 0 -#define CONFIG_MMSH_PROTOCOL 0 -#define CONFIG_MMST_PROTOCOL 0 -#define CONFIG_MD5_PROTOCOL 0 -#define CONFIG_PIPE_PROTOCOL 0 -#define CONFIG_RTMP_PROTOCOL 0 -#define CONFIG_RTMPE_PROTOCOL 0 -#define CONFIG_RTMPS_PROTOCOL 0 -#define CONFIG_RTMPT_PROTOCOL 0 -#define CONFIG_RTMPTE_PROTOCOL 0 -#define CONFIG_RTMPTS_PROTOCOL 0 -#define CONFIG_RTP_PROTOCOL 0 -#define CONFIG_SCTP_PROTOCOL 0 -#define CONFIG_SRTP_PROTOCOL 0 -#define CONFIG_TCP_PROTOCOL 0 -#define CONFIG_TLS_PROTOCOL 0 -#define CONFIG_UDP_PROTOCOL 0 -#define CONFIG_UNIX_PROTOCOL 0 -#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 -#endif // MOZ_LIBAV_CONFIG_COMMON_H diff --git a/media/libav/config_unix.asm b/media/libav/config_unix.asm deleted file mode 100644 index c08045a0b..000000000 --- a/media/libav/config_unix.asm +++ /dev/null @@ -1,255 +0,0 @@ -%include "config_common.asm" -%define HAVE_ARMV5TE 0 -%define HAVE_ARMV6 0 -%define HAVE_ARMV6T2 0 -%define HAVE_ARMV8 0 -%define HAVE_NEON 0 -%define HAVE_VFP 0 -%define HAVE_VFPV3 0 -%define HAVE_ALTIVEC 0 -%define HAVE_DCBZL 1 -%define HAVE_LDBRX 1 -%define HAVE_PPC4XX 0 -%define HAVE_AMD3DNOW 1 -%define HAVE_AMD3DNOWEXT 1 -%define HAVE_AVX 1 -%define HAVE_AVX2 1 -%define HAVE_FMA3 1 -%define HAVE_FMA4 1 -%define HAVE_MMX 1 -%define HAVE_MMXEXT 1 -%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_XOP 1 -%define HAVE_CPUNOP 1 -%define HAVE_I686 1 -%define HAVE_LOONGSON 1 -%define HAVE_VIS 1 -%define HAVE_ARMV5TE_EXTERNAL 0 -%define HAVE_ARMV6_EXTERNAL 0 -%define HAVE_ARMV6T2_EXTERNAL 0 -%define HAVE_ARMV8_EXTERNAL 0 -%define HAVE_NEON_EXTERNAL 0 -%define HAVE_VFP_EXTERNAL 0 -%define HAVE_VFPV3_EXTERNAL 0 -%define HAVE_ALTIVEC_EXTERNAL 0 -%define HAVE_DCBZL_EXTERNAL 0 -%define HAVE_LDBRX_EXTERNAL 0 -%define HAVE_PPC4XX_EXTERNAL 0 -%define HAVE_AMD3DNOW_EXTERNAL 1 -%define HAVE_AMD3DNOWEXT_EXTERNAL 1 -%define HAVE_AVX_EXTERNAL 1 -%define HAVE_AVX2_EXTERNAL 1 -%define HAVE_FMA3_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_XOP_EXTERNAL 1 -%define HAVE_CPUNOP_EXTERNAL 0 -%define HAVE_I686_EXTERNAL 0 -%define HAVE_LOONGSON_EXTERNAL 0 -%define HAVE_VIS_EXTERNAL 0 -%define HAVE_ARMV5TE_INLINE 0 -%define HAVE_ARMV6_INLINE 0 -%define HAVE_ARMV6T2_INLINE 0 -%define HAVE_ARMV8_INLINE 0 -%define HAVE_NEON_INLINE 0 -%define HAVE_VFP_INLINE 0 -%define HAVE_VFPV3_INLINE 0 -%define HAVE_ALTIVEC_INLINE 0 -%define HAVE_DCBZL_INLINE 0 -%define HAVE_LDBRX_INLINE 0 -%define HAVE_PPC4XX_INLINE 0 -%define HAVE_AMD3DNOW_INLINE 1 -%define HAVE_AMD3DNOWEXT_INLINE 1 -%define HAVE_AVX_INLINE 1 -%define HAVE_AVX2_INLINE 1 -%define HAVE_FMA3_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_XOP_INLINE 1 -%define HAVE_CPUNOP_INLINE 0 -%define HAVE_I686_INLINE 0 -%define HAVE_LOONGSON_INLINE 0 -%define HAVE_VIS_INLINE 0 -%define HAVE_ALIGNED_STACK 1 -%ifndef __x86_64__ -%define HAVE_FAST_64BIT 0 -%define HAVE_FAST_CLZ 1 -%define HAVE_FAST_CMOV 0 -%else -%define HAVE_FAST_64BIT 1 -%define HAVE_FAST_CLZ 1 -%define HAVE_FAST_CMOV 1 -%endif -%define HAVE_LOCAL_ALIGNED_8 1 -%define HAVE_LOCAL_ALIGNED_16 1 -%define HAVE_SIMD_ALIGN_16 1 -%define HAVE_ATOMICS_GCC 1 -%define HAVE_ATOMICS_SUNCC 0 -%define HAVE_ATOMICS_WIN32 0 -%define HAVE_ATOMIC_CAS_PTR 0 -%define HAVE_MACHINE_RW_BARRIER 0 -%define HAVE_MEMORYBARRIER 0 -%define HAVE_MM_EMPTY 1 -%define HAVE_RDTSC 0 -%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1 -%define HAVE_INLINE_ASM 1 -%define HAVE_SYMVER 1 -%define HAVE_YASM 1 -%define HAVE_BIGENDIAN 0 -%define HAVE_FAST_UNALIGNED 1 -%define HAVE_ALSA_ASOUNDLIB_H 0 -%define HAVE_ALTIVEC_H 0 -%define HAVE_ARPA_INET_H 0 -%define HAVE_CDIO_PARANOIA_H 0 -%define HAVE_CDIO_PARANOIA_PARANOIA_H 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 1 -%define HAVE_DXVA_H 0 -%define HAVE_GSM_H 0 -%define HAVE_IO_H 0 -%define HAVE_MACH_MACH_TIME_H 0 -%define HAVE_MACHINE_IOCTL_BT848_H 0 -%define HAVE_MACHINE_IOCTL_METEOR_H 0 -%define HAVE_POLL_H 1 -%define HAVE_SNDIO_H 0 -%define HAVE_SOUNDCARD_H 0 -%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 1 -%define HAVE_SYS_TIME_H 1 -%define HAVE_SYS_UN_H 1 -%define HAVE_SYS_VIDEOIO_H 0 -%define HAVE_UNISTD_H 1 -%define HAVE_WINDOWS_H 0 -%define HAVE_WINSOCK2_H 0 -%define HAVE_INTRINSICS_NEON 0 -%define HAVE_ATANF 1 -%define HAVE_ATAN2F 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_ALIGNED_MALLOC 0 -%define HAVE_CLOSESOCKET 0 -%define HAVE_COMMANDLINETOARGVW 0 -%define HAVE_COTASKMEMFREE 0 -%define HAVE_CRYPTGENRANDOM 0 -%define HAVE_DLOPEN 1 -%define HAVE_FCNTL 1 -%define HAVE_FLT_LIM 1 -%define HAVE_FORK 1 -%define HAVE_GETADDRINFO 0 -%define HAVE_GETHRTIME 0 -%define HAVE_GETOPT 1 -%define HAVE_GETPROCESSAFFINITYMASK 0 -%define HAVE_GETPROCESSMEMORYINFO 0 -%define HAVE_GETPROCESSTIMES 0 -%define HAVE_GETRUSAGE 1 -%define HAVE_GETSERVBYPORT 0 -%define HAVE_GETSYSTEMTIMEASFILETIME 0 -%define HAVE_GETTIMEOFDAY 1 -%define HAVE_INET_ATON 0 -%define HAVE_ISATTY 1 -%define HAVE_JACK_PORT_GET_LATENCY_RANGE 0 -%define HAVE_MACH_ABSOLUTE_TIME 0 -%define HAVE_MAPVIEWOFFILE 0 -%define HAVE_MKSTEMP 1 -%define HAVE_MMAP 1 -%define HAVE_MPROTECT 1 -%define HAVE_NANOSLEEP 1 -%define HAVE_SCHED_GETAFFINITY 1 -%define HAVE_SETCONSOLETEXTATTRIBUTE 0 -%define HAVE_SETMODE 0 -%define HAVE_SETRLIMIT 1 -%define HAVE_SLEEP 0 -%define HAVE_STRERROR_R 1 -%define HAVE_STRPTIME 1 -%define HAVE_SYSCONF 1 -%define HAVE_SYSCTL 1 -%define HAVE_USLEEP 1 -%define HAVE_VIRTUALALLOC 0 -%define HAVE_PTHREADS 0 -%define HAVE_W32THREADS 0 -%define HAVE_AS_DN_DIRECTIVE 0 -%define HAVE_AS_FUNC 0 -%define HAVE_AS_OBJECT_ARCH 0 -%define HAVE_ASM_MOD_Q 0 -%define HAVE_ATTRIBUTE_MAY_ALIAS 1 -%define HAVE_ATTRIBUTE_PACKED 1 -%define HAVE_EBP_AVAILABLE 1 -%define HAVE_EBX_AVAILABLE 1 -%define HAVE_GNU_AS 0 -%define HAVE_IBM_ASM 0 -%define HAVE_INLINE_ASM_LABELS 1 -%define HAVE_PRAGMA_DEPRECATED 1 -%define HAVE_SYMVER_ASM_LABEL 0 -%define HAVE_SYMVER_GNU_ASM 1 -%define HAVE_VFP_ARGS 0 -%define HAVE_XFORM_ASM 0 -%define HAVE_XMM_CLOBBERS 1 -%define HAVE_SOCKLEN_T 0 -%define HAVE_STRUCT_ADDRINFO 0 -%define HAVE_STRUCT_GROUP_SOURCE_REQ 0 -%define HAVE_STRUCT_IP_MREQ_SOURCE 0 -%define HAVE_STRUCT_IPV6_MREQ 0 -%define HAVE_STRUCT_POLLFD 0 -%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1 -%define HAVE_STRUCT_SOCKADDR_IN6 0 -%define HAVE_STRUCT_SOCKADDR_SA_LEN 0 -%define HAVE_STRUCT_SOCKADDR_STORAGE 0 -%define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1 -%define HAVE_ATOMICS_NATIVE 1 -%define HAVE_DOS_PATHS 0 -%define HAVE_DXVA2_LIB 0 -%define HAVE_LIBC_MSVCRT 0 -%define HAVE_LIBDC1394_1 0 -%define HAVE_LIBDC1394_2 0 -%define HAVE_SDL 0 -%define HAVE_THREADS 0 -%define HAVE_VDPAU_X11 0 -%define HAVE_XLIB 1 - diff --git a/media/libav/config_unix.h b/media/libav/config_unix.h deleted file mode 100644 index b3c44d62b..000000000 --- a/media/libav/config_unix.h +++ /dev/null @@ -1,265 +0,0 @@ -/* Automatically generated by configure - do not modify! */ -#ifndef LIBAV_CONFIG_H -#define LIBAV_CONFIG_H -#define LIBAV_CONFIGURATION "--disable-programs --disable-everything" -#define LIBAV_LICENSE "LGPL version 2.1 or later" -#define AVCONV_DATADIR "/usr/local/share/avconv" -#define CC_IDENT "gcc 4.9.2 (Debian 4.9.2-10)" -#define restrict restrict -#define EXTERN_PREFIX "" -#define EXTERN_ASM -#define SLIBSUF ".so" -#define HAVE_ARMV5TE 0 -#define HAVE_ARMV6 0 -#define HAVE_ARMV6T2 0 -#define HAVE_ARMV8 0 -#define HAVE_NEON 0 -#define HAVE_VFP 0 -#define HAVE_VFPV3 0 -#define HAVE_ALTIVEC 0 -#define HAVE_DCBZL 1 -#define HAVE_LDBRX 1 -#define HAVE_PPC4XX 0 -#define HAVE_AMD3DNOW 1 -#define HAVE_AMD3DNOWEXT 1 -#define HAVE_AVX 1 -#define HAVE_AVX2 1 -#define HAVE_FMA3 1 -#define HAVE_FMA4 1 -#define HAVE_MMX 1 -#define HAVE_MMXEXT 1 -#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_XOP 1 -#define HAVE_CPUNOP 1 -#define HAVE_I686 1 -#define HAVE_LOONGSON 1 -#define HAVE_VIS 1 -#define HAVE_ARMV5TE_EXTERNAL 0 -#define HAVE_ARMV6_EXTERNAL 0 -#define HAVE_ARMV6T2_EXTERNAL 0 -#define HAVE_ARMV8_EXTERNAL 0 -#define HAVE_NEON_EXTERNAL 0 -#define HAVE_VFP_EXTERNAL 0 -#define HAVE_VFPV3_EXTERNAL 0 -#define HAVE_ALTIVEC_EXTERNAL 0 -#define HAVE_DCBZL_EXTERNAL 0 -#define HAVE_LDBRX_EXTERNAL 0 -#define HAVE_PPC4XX_EXTERNAL 0 -#define HAVE_AMD3DNOW_EXTERNAL 1 -#define HAVE_AMD3DNOWEXT_EXTERNAL 1 -#define HAVE_AVX_EXTERNAL 1 -#define HAVE_AVX2_EXTERNAL 1 -#define HAVE_FMA3_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_XOP_EXTERNAL 1 -#define HAVE_CPUNOP_EXTERNAL 0 -#define HAVE_I686_EXTERNAL 0 -#define HAVE_LOONGSON_EXTERNAL 0 -#define HAVE_VIS_EXTERNAL 0 -#define HAVE_ARMV5TE_INLINE 0 -#define HAVE_ARMV6_INLINE 0 -#define HAVE_ARMV6T2_INLINE 0 -#define HAVE_ARMV8_INLINE 0 -#define HAVE_NEON_INLINE 0 -#define HAVE_VFP_INLINE 0 -#define HAVE_VFPV3_INLINE 0 -#define HAVE_ALTIVEC_INLINE 0 -#define HAVE_DCBZL_INLINE 0 -#define HAVE_LDBRX_INLINE 0 -#define HAVE_PPC4XX_INLINE 0 -#define HAVE_AMD3DNOW_INLINE 1 -#define HAVE_AMD3DNOWEXT_INLINE 1 -#define HAVE_AVX_INLINE 1 -#define HAVE_AVX2_INLINE 1 -#define HAVE_FMA3_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_XOP_INLINE 1 -#define HAVE_CPUNOP_INLINE 0 -#define HAVE_I686_INLINE 0 -#define HAVE_LOONGSON_INLINE 0 -#define HAVE_VIS_INLINE 0 -#define HAVE_ALIGNED_STACK 1 -#if defined(i386) || defined(__i386__) || defined(_M_IX86) -#define HAVE_FAST_64BIT 0 -#define HAVE_FAST_CLZ 1 -#define HAVE_FAST_CMOV 0 -#else -#define HAVE_FAST_64BIT 1 -#define HAVE_FAST_CLZ 1 -#define HAVE_FAST_CMOV 1 -#endif -#define HAVE_LOCAL_ALIGNED_8 1 -#define HAVE_LOCAL_ALIGNED_16 1 -#define HAVE_SIMD_ALIGN_16 1 -#define HAVE_ATOMICS_GCC 1 -#define HAVE_ATOMICS_SUNCC 0 -#define HAVE_ATOMICS_WIN32 0 -#define HAVE_ATOMIC_CAS_PTR 0 -#define HAVE_MACHINE_RW_BARRIER 0 -#define HAVE_MEMORYBARRIER 0 -#define HAVE_MM_EMPTY 1 -#define HAVE_RDTSC 0 -#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 1 -#define HAVE_INLINE_ASM 1 -#define HAVE_SYMVER 1 -#define HAVE_YASM 1 -#define HAVE_BIGENDIAN 0 -#define HAVE_FAST_UNALIGNED 1 -#define HAVE_ALSA_ASOUNDLIB_H 0 -#define HAVE_ALTIVEC_H 0 -#define HAVE_ARPA_INET_H 0 -#define HAVE_CDIO_PARANOIA_H 0 -#define HAVE_CDIO_PARANOIA_PARANOIA_H 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 1 -#define HAVE_DXVA_H 0 -#define HAVE_GSM_H 0 -#define HAVE_IO_H 0 -#define HAVE_MACH_MACH_TIME_H 0 -#define HAVE_MACHINE_IOCTL_BT848_H 0 -#define HAVE_MACHINE_IOCTL_METEOR_H 0 -#define HAVE_POLL_H 1 -#define HAVE_SNDIO_H 0 -#define HAVE_SOUNDCARD_H 0 -#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 1 -#define HAVE_SYS_TIME_H 1 -#define HAVE_SYS_UN_H 1 -#define HAVE_SYS_VIDEOIO_H 0 -#define HAVE_UNISTD_H 1 -#define HAVE_WINDOWS_H 0 -#define HAVE_WINSOCK2_H 0 -#define HAVE_INTRINSICS_NEON 0 -#define HAVE_ATANF 1 -#define HAVE_ATAN2F 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_ALIGNED_MALLOC 0 -#define HAVE_CLOSESOCKET 0 -#define HAVE_COMMANDLINETOARGVW 0 -#define HAVE_COTASKMEMFREE 0 -#define HAVE_CRYPTGENRANDOM 0 -#define HAVE_DLOPEN 1 -#define HAVE_FCNTL 1 -#define HAVE_FLT_LIM 1 -#define HAVE_FORK 1 -#define HAVE_GETADDRINFO 0 -#define HAVE_GETHRTIME 0 -#define HAVE_GETOPT 1 -#define HAVE_GETPROCESSAFFINITYMASK 0 -#define HAVE_GETPROCESSMEMORYINFO 0 -#define HAVE_GETPROCESSTIMES 0 -#define HAVE_GETRUSAGE 1 -#define HAVE_GETSERVBYPORT 0 -#define HAVE_GETSYSTEMTIMEASFILETIME 0 -#define HAVE_GETTIMEOFDAY 1 -#define HAVE_INET_ATON 0 -#define HAVE_ISATTY 1 -#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0 -#define HAVE_MACH_ABSOLUTE_TIME 0 -#define HAVE_MAPVIEWOFFILE 0 -#define HAVE_MKSTEMP 1 -#define HAVE_MMAP 1 -#define HAVE_MPROTECT 1 -#define HAVE_NANOSLEEP 1 -#define HAVE_SCHED_GETAFFINITY 1 -#define HAVE_SETCONSOLETEXTATTRIBUTE 0 -#define HAVE_SETMODE 0 -#define HAVE_SETRLIMIT 1 -#define HAVE_SLEEP 0 -#define HAVE_STRERROR_R 1 -#define HAVE_STRPTIME 1 -#define HAVE_SYSCONF 1 -#define HAVE_SYSCTL 0 -#define HAVE_USLEEP 1 -#define HAVE_VIRTUALALLOC 0 -#define HAVE_PTHREADS 0 -#define HAVE_W32THREADS 0 -#define HAVE_AS_DN_DIRECTIVE 0 -#define HAVE_AS_FUNC 0 -#define HAVE_AS_OBJECT_ARCH 0 -#define HAVE_ASM_MOD_Q 0 -#define HAVE_ATTRIBUTE_MAY_ALIAS 1 -#define HAVE_ATTRIBUTE_PACKED 1 -#define HAVE_EBP_AVAILABLE 1 -#define HAVE_EBX_AVAILABLE 1 -#define HAVE_GNU_AS 0 -#define HAVE_IBM_ASM 0 -#define HAVE_INLINE_ASM_LABELS 1 -#define HAVE_PRAGMA_DEPRECATED 1 -#define HAVE_SYMVER_ASM_LABEL 0 -#define HAVE_SYMVER_GNU_ASM 1 -#define HAVE_VFP_ARGS 0 -#define HAVE_XFORM_ASM 0 -#define HAVE_XMM_CLOBBERS 1 -#define HAVE_SOCKLEN_T 0 -#define HAVE_STRUCT_ADDRINFO 0 -#define HAVE_STRUCT_GROUP_SOURCE_REQ 0 -#define HAVE_STRUCT_IP_MREQ_SOURCE 0 -#define HAVE_STRUCT_IPV6_MREQ 0 -#define HAVE_STRUCT_POLLFD 0 -#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 1 -#define HAVE_STRUCT_SOCKADDR_IN6 0 -#define HAVE_STRUCT_SOCKADDR_SA_LEN 0 -#define HAVE_STRUCT_SOCKADDR_STORAGE 0 -#define HAVE_STRUCT_V4L2_FRMIVALENUM_DISCRETE 1 -#define HAVE_ATOMICS_NATIVE 1 -#define HAVE_DOS_PATHS 0 -#define HAVE_DXVA2_LIB 0 -#define HAVE_LIBC_MSVCRT 0 -#define HAVE_LIBDC1394_1 0 -#define HAVE_LIBDC1394_2 0 -#define HAVE_SDL 0 -#define HAVE_THREADS 0 -#define HAVE_VDPAU_X11 0 -#define HAVE_XLIB 1 -#endif /* LIBAV_CONFIG_H */ diff --git a/media/libav/config_win.asm b/media/libav/config_win.asm deleted file mode 100644 index 7ea033371..000000000 --- a/media/libav/config_win.asm +++ /dev/null @@ -1,258 +0,0 @@ -%include "config_common.asm" -%define HAVE_ARMV5TE 0 -%define HAVE_ARMV6 0 -%define HAVE_ARMV6T2 0 -%define HAVE_ARMV8 0 -%define HAVE_NEON 0 -%define HAVE_VFP 0 -%define HAVE_VFPV3 0 -%define HAVE_ALTIVEC 0 -%define HAVE_DCBZL 1 -%define HAVE_LDBRX 1 -%define HAVE_PPC4XX 0 -%define HAVE_AMD3DNOW 1 -%define HAVE_AMD3DNOWEXT 1 -%define HAVE_AVX 1 -%define HAVE_AVX2 1 -%define HAVE_FMA3 1 -%define HAVE_FMA4 1 -%define HAVE_MMX 1 -%define HAVE_MMXEXT 1 -%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_XOP 1 -%define HAVE_CPUNOP 1 -%define HAVE_I686 1 -%define HAVE_LOONGSON 1 -%define HAVE_VIS 1 -%define HAVE_ARMV5TE_EXTERNAL 0 -%define HAVE_ARMV6_EXTERNAL 0 -%define HAVE_ARMV6T2_EXTERNAL 0 -%define HAVE_ARMV8_EXTERNAL 0 -%define HAVE_NEON_EXTERNAL 0 -%define HAVE_VFP_EXTERNAL 0 -%define HAVE_VFPV3_EXTERNAL 0 -%define HAVE_ALTIVEC_EXTERNAL 0 -%define HAVE_DCBZL_EXTERNAL 0 -%define HAVE_LDBRX_EXTERNAL 0 -%define HAVE_PPC4XX_EXTERNAL 0 -%define HAVE_AMD3DNOW_EXTERNAL 1 -%define HAVE_AMD3DNOWEXT_EXTERNAL 1 -%define HAVE_AVX_EXTERNAL 1 -%define HAVE_AVX2_EXTERNAL 1 -%define HAVE_FMA3_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_XOP_EXTERNAL 1 -%define HAVE_CPUNOP_EXTERNAL 0 -%define HAVE_I686_EXTERNAL 0 -%define HAVE_LOONGSON_EXTERNAL 0 -%define HAVE_VIS_EXTERNAL 0 -%define HAVE_ARMV5TE_INLINE 0 -%define HAVE_ARMV6_INLINE 0 -%define HAVE_ARMV6T2_INLINE 0 -%define HAVE_ARMV8_INLINE 0 -%define HAVE_NEON_INLINE 0 -%define HAVE_VFP_INLINE 0 -%define HAVE_VFPV3_INLINE 0 -%define HAVE_ALTIVEC_INLINE 0 -%define HAVE_DCBZL_INLINE 0 -%define HAVE_LDBRX_INLINE 0 -%define HAVE_PPC4XX_INLINE 0 -%define HAVE_AMD3DNOW_INLINE 0 -%define HAVE_AMD3DNOWEXT_INLINE 0 -%define HAVE_AVX_INLINE 0 -%define HAVE_AVX2_INLINE 0 -%define HAVE_FMA3_INLINE 0 -%define HAVE_FMA4_INLINE 0 -%define HAVE_MMX_INLINE 0 -%define HAVE_MMXEXT_INLINE 0 -%define HAVE_SSE_INLINE 0 -%define HAVE_SSE2_INLINE 0 -%define HAVE_SSE3_INLINE 0 -%define HAVE_SSE4_INLINE 0 -%define HAVE_SSE42_INLINE 0 -%define HAVE_SSSE3_INLINE 0 -%define HAVE_XOP_INLINE 0 -%define HAVE_CPUNOP_INLINE 0 -%define HAVE_I686_INLINE 0 -%define HAVE_LOONGSON_INLINE 0 -%define HAVE_VIS_INLINE 0 -%ifndef __x86_64__ -%define HAVE_ALIGNED_STACK 0 -%define HAVE_FAST_64BIT 0 -%define HAVE_FAST_CMOV 0 -%else -%define HAVE_ALIGNED_STACK 1 -%define HAVE_FAST_64BIT 1 -%define HAVE_FAST_CMOV 1 -%endif -%define HAVE_FAST_CLZ 1 -%define HAVE_LOCAL_ALIGNED_8 1 -%define HAVE_LOCAL_ALIGNED_16 1 -%define HAVE_SIMD_ALIGN_16 1 -%define HAVE_ATOMICS_GCC 0 -%define HAVE_ATOMICS_SUNCC 0 -%define HAVE_ATOMICS_WIN32 1 -%define HAVE_ATOMIC_CAS_PTR 0 -%define HAVE_MACHINE_RW_BARRIER 0 -%define HAVE_MEMORYBARRIER 1 -%ifndef __x86_64__ -%define HAVE_MM_EMPTY 1 -%else -%define HAVE_MM_EMPTY 0 -%endif -%define HAVE_RDTSC 1 -%define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0 -%define HAVE_INLINE_ASM 0 -%define HAVE_SYMVER 0 -%define HAVE_YASM 1 -%define HAVE_BIGENDIAN 0 -%define HAVE_FAST_UNALIGNED 1 -%define HAVE_ALSA_ASOUNDLIB_H 0 -%define HAVE_ALTIVEC_H 0 -%define HAVE_ARPA_INET_H 0 -%define HAVE_CDIO_PARANOIA_H 0 -%define HAVE_CDIO_PARANOIA_PARANOIA_H 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 1 -%define HAVE_DLFCN_H 0 -%define HAVE_DXVA_H 1 -%define HAVE_GSM_H 0 -%define HAVE_IO_H 1 -%define HAVE_MACH_MACH_TIME_H 0 -%define HAVE_MACHINE_IOCTL_BT848_H 0 -%define HAVE_MACHINE_IOCTL_METEOR_H 0 -%define HAVE_POLL_H 0 -%define HAVE_SNDIO_H 0 -%define HAVE_SOUNDCARD_H 0 -%define HAVE_SYS_MMAN_H 0 -%define HAVE_SYS_PARAM_H 0 -%define HAVE_SYS_RESOURCE_H 0 -%define HAVE_SYS_SELECT_H 0 -%define HAVE_SYS_SOUNDCARD_H 0 -%define HAVE_SYS_TIME_H 0 -%define HAVE_SYS_UN_H 0 -%define HAVE_SYS_VIDEOIO_H 0 -%define HAVE_UNISTD_H 0 -%define HAVE_WINDOWS_H 1 -%define HAVE_WINSOCK2_H 1 -%define HAVE_INTRINSICS_NEON 0 -%define HAVE_ATANF 1 -%define HAVE_ATAN2F 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 0 -%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_ALIGNED_MALLOC 1 -%define HAVE_CLOSESOCKET 1 -%define HAVE_COMMANDLINETOARGVW 1 -%define HAVE_COTASKMEMFREE 1 -%define HAVE_CRYPTGENRANDOM 1 -%define HAVE_DLOPEN 0 -%define HAVE_FCNTL 0 -%define HAVE_FLT_LIM 1 -%define HAVE_FORK 0 -%define HAVE_GETADDRINFO 1 -%define HAVE_GETHRTIME 0 -%define HAVE_GETOPT 0 -%define HAVE_GETPROCESSAFFINITYMASK 1 -%define HAVE_GETPROCESSMEMORYINFO 1 -%define HAVE_GETPROCESSTIMES 1 -%define HAVE_GETRUSAGE 0 -%define HAVE_GETSERVBYPORT 0 -%define HAVE_GETSYSTEMTIMEASFILETIME 1 -%define HAVE_GETTIMEOFDAY 0 -%define HAVE_INET_ATON 0 -%define HAVE_ISATTY 1 -%define HAVE_JACK_PORT_GET_LATENCY_RANGE 0 -%define HAVE_MACH_ABSOLUTE_TIME 0 -%define HAVE_MAPVIEWOFFILE 1 -%define HAVE_MKSTEMP 0 -%define HAVE_MMAP 0 -%define HAVE_MPROTECT 0 -%define HAVE_NANOSLEEP 0 -%define HAVE_SCHED_GETAFFINITY 0 -%define HAVE_SETCONSOLETEXTATTRIBUTE 1 -%define HAVE_SETMODE 1 -%define HAVE_SETRLIMIT 0 -%define HAVE_SLEEP 1 -%define HAVE_STRERROR_R 0 -%define HAVE_STRPTIME 0 -%define HAVE_SYSCONF 0 -%define HAVE_SYSCTL 0 -%define HAVE_USLEEP 0 -%define HAVE_VIRTUALALLOC 1 -%define HAVE_PTHREADS 0 -%define HAVE_W32THREADS 1 -%define HAVE_AS_DN_DIRECTIVE 0 -%define HAVE_AS_FUNC 0 -%define HAVE_AS_OBJECT_ARCH 0 -%define HAVE_ASM_MOD_Q 0 -%define HAVE_ATTRIBUTE_MAY_ALIAS 0 -%define HAVE_ATTRIBUTE_PACKED 0 -%define HAVE_EBP_AVAILABLE 0 -%define HAVE_EBX_AVAILABLE 0 -%define HAVE_GNU_AS 0 -%define HAVE_IBM_ASM 0 -%define HAVE_INLINE_ASM_LABELS 0 -%define HAVE_PRAGMA_DEPRECATED 1 -%define HAVE_SYMVER_ASM_LABEL 0 -%define HAVE_SYMVER_GNU_ASM 0 -%define HAVE_VFP_ARGS 0 -%define HAVE_XFORM_ASM 0 -%define HAVE_XMM_CLOBBERS 0 -%define HAVE_SOCKLEN_T 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 0 -%define HAVE_STRUCT_RUSAGE_RU_MAXRSS 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 0 -%define HAVE_ATOMICS_NATIVE 1 -%define HAVE_DOS_PATHS 1 -%define HAVE_DXVA2_LIB 1 -%define HAVE_LIBC_MSVCRT 1 -%define HAVE_LIBDC1394_1 0 -%define HAVE_LIBDC1394_2 0 -%define HAVE_SDL 0 -%define HAVE_THREADS 1 -%define HAVE_VDPAU_X11 0 -%define HAVE_XLIB 0 diff --git a/media/libav/config_win.h b/media/libav/config_win.h deleted file mode 100644 index b40defe72..000000000 --- a/media/libav/config_win.h +++ /dev/null @@ -1,274 +0,0 @@ -/* Automatically generated by configure - do not modify! */ -#ifndef LIBAV_CONFIG_H -#define LIBAV_CONFIG_H -#define LIBAV_CONFIGURATION "--disable-programs --disable-everything --toolchain=msvc" -#define LIBAV_LICENSE "LGPL version 2.1 or later" -#define AVCONV_DATADIR "/usr/local/share/avconv" -#define CC_IDENT "Microsoft (R) C/C++ Optimizing Compiler Version 18.00.31101 for x86" -#define restrict __restrict -#if defined(i386) || defined(__i386__) || defined(_M_IX86) -#define EXTERN_PREFIX "_" -#define EXTERN_ASM _ -#else -#define EXTERN_PREFIX "" -#define EXTERN_ASM -#endif -#define SLIBSUF ".dll" -#define HAVE_ARMV5TE 0 -#define HAVE_ARMV6 0 -#define HAVE_ARMV6T2 0 -#define HAVE_ARMV8 0 -#define HAVE_NEON 0 -#define HAVE_VFP 0 -#define HAVE_VFPV3 0 -#define HAVE_ALTIVEC 0 -#define HAVE_DCBZL 1 -#define HAVE_LDBRX 1 -#define HAVE_PPC4XX 0 -#define HAVE_AMD3DNOW 1 -#define HAVE_AMD3DNOWEXT 1 -#define HAVE_AVX 1 -#define HAVE_AVX2 1 -#define HAVE_FMA3 1 -#define HAVE_FMA4 1 -#define HAVE_MMX 1 -#define HAVE_MMXEXT 1 -#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_XOP 1 -#define HAVE_CPUNOP 1 -#define HAVE_I686 1 -#define HAVE_LOONGSON 1 -#define HAVE_VIS 1 -#define HAVE_ARMV5TE_EXTERNAL 0 -#define HAVE_ARMV6_EXTERNAL 0 -#define HAVE_ARMV6T2_EXTERNAL 0 -#define HAVE_ARMV8_EXTERNAL 0 -#define HAVE_NEON_EXTERNAL 0 -#define HAVE_VFP_EXTERNAL 0 -#define HAVE_VFPV3_EXTERNAL 0 -#define HAVE_ALTIVEC_EXTERNAL 0 -#define HAVE_DCBZL_EXTERNAL 0 -#define HAVE_LDBRX_EXTERNAL 0 -#define HAVE_PPC4XX_EXTERNAL 0 -#define HAVE_AMD3DNOW_EXTERNAL 1 -#define HAVE_AMD3DNOWEXT_EXTERNAL 1 -#define HAVE_AVX_EXTERNAL 1 -#define HAVE_AVX2_EXTERNAL 1 -#define HAVE_FMA3_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_XOP_EXTERNAL 1 -#define HAVE_CPUNOP_EXTERNAL 0 -#define HAVE_I686_EXTERNAL 0 -#define HAVE_LOONGSON_EXTERNAL 0 -#define HAVE_VIS_EXTERNAL 0 -#define HAVE_ARMV5TE_INLINE 0 -#define HAVE_ARMV6_INLINE 0 -#define HAVE_ARMV6T2_INLINE 0 -#define HAVE_ARMV8_INLINE 0 -#define HAVE_NEON_INLINE 0 -#define HAVE_VFP_INLINE 0 -#define HAVE_VFPV3_INLINE 0 -#define HAVE_ALTIVEC_INLINE 0 -#define HAVE_DCBZL_INLINE 0 -#define HAVE_LDBRX_INLINE 0 -#define HAVE_PPC4XX_INLINE 0 -#define HAVE_AMD3DNOW_INLINE 0 -#define HAVE_AMD3DNOWEXT_INLINE 0 -#define HAVE_AVX_INLINE 0 -#define HAVE_AVX2_INLINE 0 -#define HAVE_FMA3_INLINE 0 -#define HAVE_FMA4_INLINE 0 -#define HAVE_MMX_INLINE 0 -#define HAVE_MMXEXT_INLINE 0 -#define HAVE_SSE_INLINE 0 -#define HAVE_SSE2_INLINE 0 -#define HAVE_SSE3_INLINE 0 -#define HAVE_SSE4_INLINE 0 -#define HAVE_SSE42_INLINE 0 -#define HAVE_SSSE3_INLINE 0 -#define HAVE_XOP_INLINE 0 -#define HAVE_CPUNOP_INLINE 0 -#define HAVE_I686_INLINE 0 -#define HAVE_LOONGSON_INLINE 0 -#define HAVE_VIS_INLINE 0 -#if defined(i386) || defined(__i386__) || defined(_M_IX86) -#define HAVE_ALIGNED_STACK 0 -#define HAVE_FAST_64BIT 0 -#define HAVE_FAST_CMOV 0 -#else -#define HAVE_ALIGNED_STACK 1 -#define HAVE_FAST_64BIT 1 -#define HAVE_FAST_CMOV 1 -#endif -#define HAVE_FAST_CLZ 1 -#define HAVE_LOCAL_ALIGNED_8 1 -#define HAVE_LOCAL_ALIGNED_16 1 -#define HAVE_SIMD_ALIGN_16 1 -#define HAVE_ATOMICS_GCC 0 -#define HAVE_ATOMICS_SUNCC 0 -#define HAVE_ATOMICS_WIN32 1 -#define HAVE_ATOMIC_CAS_PTR 0 -#define HAVE_MACHINE_RW_BARRIER 0 -#define HAVE_MEMORYBARRIER 1 -#if defined(i386) || defined(__i386__) || defined(_M_IX86) -#define HAVE_MM_EMPTY 1 -#else -#define HAVE_MM_EMPTY 0 -#endif -#define HAVE_RDTSC 1 -#define HAVE_SYNC_VAL_COMPARE_AND_SWAP 0 -#define HAVE_INLINE_ASM 0 -#define HAVE_SYMVER 0 -#define HAVE_YASM 1 -#define HAVE_BIGENDIAN 0 -#define HAVE_FAST_UNALIGNED 1 -#define HAVE_ALSA_ASOUNDLIB_H 0 -#define HAVE_ALTIVEC_H 0 -#define HAVE_ARPA_INET_H 0 -#define HAVE_CDIO_PARANOIA_H 0 -#define HAVE_CDIO_PARANOIA_PARANOIA_H 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 1 -#define HAVE_DLFCN_H 0 -#define HAVE_DXVA_H 1 -#define HAVE_GSM_H 0 -#define HAVE_IO_H 1 -#define HAVE_MACH_MACH_TIME_H 0 -#define HAVE_MACHINE_IOCTL_BT848_H 0 -#define HAVE_MACHINE_IOCTL_METEOR_H 0 -#define HAVE_POLL_H 0 -#define HAVE_SNDIO_H 0 -#define HAVE_SOUNDCARD_H 0 -#define HAVE_SYS_MMAN_H 0 -#define HAVE_SYS_PARAM_H 0 -#define HAVE_SYS_RESOURCE_H 0 -#define HAVE_SYS_SELECT_H 0 -#define HAVE_SYS_SOUNDCARD_H 0 -#define HAVE_SYS_TIME_H 0 -#define HAVE_SYS_UN_H 0 -#define HAVE_SYS_VIDEOIO_H 0 -#define HAVE_UNISTD_H 0 -#define HAVE_WINDOWS_H 1 -#define HAVE_WINSOCK2_H 1 -#define HAVE_INTRINSICS_NEON 0 -#define HAVE_ATANF 1 -#define HAVE_ATAN2F 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 0 -#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_ALIGNED_MALLOC 1 -#define HAVE_CLOSESOCKET 1 -#define HAVE_COMMANDLINETOARGVW 1 -#define HAVE_COTASKMEMFREE 1 -#define HAVE_CRYPTGENRANDOM 1 -#define HAVE_DLOPEN 0 -#define HAVE_FCNTL 0 -#define HAVE_FLT_LIM 1 -#define HAVE_FORK 0 -#define HAVE_GETADDRINFO 1 -#define HAVE_GETHRTIME 0 -#define HAVE_GETOPT 0 -#define HAVE_GETPROCESSAFFINITYMASK 1 -#define HAVE_GETPROCESSMEMORYINFO 1 -#define HAVE_GETPROCESSTIMES 1 -#define HAVE_GETRUSAGE 0 -#define HAVE_GETSERVBYPORT 0 -#define HAVE_GETSYSTEMTIMEASFILETIME 1 -#define HAVE_GETTIMEOFDAY 0 -#define HAVE_INET_ATON 0 -#define HAVE_ISATTY 1 -#define HAVE_JACK_PORT_GET_LATENCY_RANGE 0 -#define HAVE_MACH_ABSOLUTE_TIME 0 -#define HAVE_MAPVIEWOFFILE 1 -#define HAVE_MKSTEMP 0 -#define HAVE_MMAP 0 -#define HAVE_MPROTECT 0 -#define HAVE_NANOSLEEP 0 -#define HAVE_SCHED_GETAFFINITY 0 -#define HAVE_SETCONSOLETEXTATTRIBUTE 1 -#define HAVE_SETMODE 1 -#define HAVE_SETRLIMIT 0 -#define HAVE_SLEEP 1 -#define HAVE_STRERROR_R 0 -#define HAVE_STRPTIME 0 -#define HAVE_SYSCONF 0 -#define HAVE_SYSCTL 0 -#define HAVE_USLEEP 0 -#define HAVE_VIRTUALALLOC 1 -#define HAVE_PTHREADS 0 -#define HAVE_W32THREADS 1 -#define HAVE_AS_DN_DIRECTIVE 0 -#define HAVE_AS_FUNC 0 -#define HAVE_AS_OBJECT_ARCH 0 -#define HAVE_ASM_MOD_Q 0 -#define HAVE_ATTRIBUTE_MAY_ALIAS 0 -#define HAVE_ATTRIBUTE_PACKED 0 -#define HAVE_EBP_AVAILABLE 0 -#define HAVE_EBX_AVAILABLE 0 -#define HAVE_GNU_AS 0 -#define HAVE_IBM_ASM 0 -#define HAVE_INLINE_ASM_LABELS 0 -#define HAVE_PRAGMA_DEPRECATED 1 -#define HAVE_SYMVER_ASM_LABEL 0 -#define HAVE_SYMVER_GNU_ASM 0 -#define HAVE_VFP_ARGS 0 -#define HAVE_XFORM_ASM 0 -#define HAVE_XMM_CLOBBERS 0 -#define HAVE_SOCKLEN_T 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 0 -#define HAVE_STRUCT_RUSAGE_RU_MAXRSS 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 0 -#define HAVE_ATOMICS_NATIVE 1 -#define HAVE_DOS_PATHS 1 -#define HAVE_DXVA2_LIB 1 -#define HAVE_LIBC_MSVCRT 1 -#define HAVE_LIBDC1394_1 0 -#define HAVE_LIBDC1394_2 0 -#define HAVE_SDL 0 -#define HAVE_THREADS 1 -#define HAVE_VDPAU_X11 0 -#define HAVE_XLIB 0 -#endif /* LIBAV_CONFIG_H */ diff --git a/media/libav/libavcodec/avfft.c b/media/libav/libavcodec/avfft.c deleted file mode 100644 index 513f57e5f..000000000 --- a/media/libav/libavcodec/avfft.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "libavutil/attributes.h" -#include "libavutil/mem.h" -#include "avfft.h" -#include "fft.h" -#include "rdft.h" -#include "dct.h" - -/* FFT */ - -FFTContext *av_fft_init(int nbits, int inverse) -{ - FFTContext *s = av_malloc(sizeof(*s)); - - if (s && ff_fft_init(s, nbits, inverse)) - av_freep(&s); - - return s; -} - -void av_fft_permute(FFTContext *s, FFTComplex *z) -{ - s->fft_permute(s, z); -} - -void av_fft_calc(FFTContext *s, FFTComplex *z) -{ - s->fft_calc(s, z); -} - -av_cold void av_fft_end(FFTContext *s) -{ - if (s) { - ff_fft_end(s); - av_free(s); - } -} - -#if CONFIG_MDCT - -FFTContext *av_mdct_init(int nbits, int inverse, double scale) -{ - FFTContext *s = av_malloc(sizeof(*s)); - - if (s && ff_mdct_init(s, nbits, inverse, scale)) - av_freep(&s); - - return s; -} - -void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input) -{ - s->imdct_calc(s, output, input); -} - -void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input) -{ - s->imdct_half(s, output, input); -} - -void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input) -{ - s->mdct_calc(s, output, input); -} - -av_cold void av_mdct_end(FFTContext *s) -{ - if (s) { - ff_mdct_end(s); - av_free(s); - } -} - -#endif /* CONFIG_MDCT */ - -#if CONFIG_RDFT - -RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans) -{ - RDFTContext *s = av_malloc(sizeof(*s)); - - if (s && ff_rdft_init(s, nbits, trans)) - av_freep(&s); - - return s; -} - -void av_rdft_calc(RDFTContext *s, FFTSample *data) -{ - s->rdft_calc(s, data); -} - -av_cold void av_rdft_end(RDFTContext *s) -{ - if (s) { - ff_rdft_end(s); - av_free(s); - } -} - -#endif /* CONFIG_RDFT */ - -#if CONFIG_DCT - -DCTContext *av_dct_init(int nbits, enum DCTTransformType inverse) -{ - DCTContext *s = av_malloc(sizeof(*s)); - - if (s && ff_dct_init(s, nbits, inverse)) - av_freep(&s); - - return s; -} - -void av_dct_calc(DCTContext *s, FFTSample *data) -{ - s->dct_calc(s, data); -} - -av_cold void av_dct_end(DCTContext *s) -{ - if (s) { - ff_dct_end(s); - av_free(s); - } -} - -#endif /* CONFIG_DCT */ diff --git a/media/libav/libavcodec/avfft.h b/media/libav/libavcodec/avfft.h deleted file mode 100644 index e2e727da9..000000000 --- a/media/libav/libavcodec/avfft.h +++ /dev/null @@ -1,118 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AVFFT_H -#define AVCODEC_AVFFT_H - -/** - * @file - * @ingroup lavc_fft - * FFT functions - */ - -/** - * @defgroup lavc_fft FFT functions - * @ingroup lavc_misc - * - * @{ - */ - -typedef float FFTSample; - -typedef struct FFTComplex { - FFTSample re, im; -} FFTComplex; - -typedef struct FFTContext FFTContext; - -/** - * Set up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -FFTContext *av_fft_init(int nbits, int inverse); - -/** - * Do the permutation needed BEFORE calling ff_fft_calc(). - */ -void av_fft_permute(FFTContext *s, FFTComplex *z); - -/** - * Do a complex FFT with the parameters defined in av_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ -void av_fft_calc(FFTContext *s, FFTComplex *z); - -void av_fft_end(FFTContext *s); - -FFTContext *av_mdct_init(int nbits, int inverse, double scale); -void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input); -void av_mdct_end(FFTContext *s); - -/* Real Discrete Fourier Transform */ - -enum RDFTransformType { - DFT_R2C, - IDFT_C2R, - IDFT_R2C, - DFT_C2R, -}; - -typedef struct RDFTContext RDFTContext; - -/** - * Set up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans); -void av_rdft_calc(RDFTContext *s, FFTSample *data); -void av_rdft_end(RDFTContext *s); - -/* Discrete Cosine Transform */ - -typedef struct DCTContext DCTContext; - -enum DCTTransformType { - DCT_II = 0, - DCT_III, - DCT_I, - DST_I, -}; - -/** - * Set up DCT. - * - * @param nbits size of the input array: - * (1 << nbits) for DCT-II, DCT-III and DST-I - * (1 << nbits) + 1 for DCT-I - * @param type the type of transform - * - * @note the first element of the input of DST-I is ignored - */ -DCTContext *av_dct_init(int nbits, enum DCTTransformType type); -void av_dct_calc(DCTContext *s, FFTSample *data); -void av_dct_end (DCTContext *s); - -/** - * @} - */ - -#endif /* AVCODEC_AVFFT_H */ diff --git a/media/libav/libavcodec/dct.h b/media/libav/libavcodec/dct.h deleted file mode 100644 index 3fd4e2783..000000000 --- a/media/libav/libavcodec/dct.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * (I)DCT Transforms - * Copyright (c) 2009 Peter Ross <pross@xvid.org> - * Copyright (c) 2010 Alex Converse <alex.converse@gmail.com> - * Copyright (c) 2010 Vitor Sessak - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_DCT_H -#define AVCODEC_DCT_H - -#include <stdint.h> - -#include "rdft.h" - -struct DCTContext { - int nbits; - int inverse; - RDFTContext rdft; - const float *costab; - FFTSample *csc2; - void (*dct_calc)(struct DCTContext *s, FFTSample *data); - void (*dct32)(FFTSample *out, const FFTSample *in); -}; - -/** - * Set up DCT. - * @param nbits size of the input array: - * (1 << nbits) for DCT-II, DCT-III and DST-I - * (1 << nbits) + 1 for DCT-I - * - * @note the first element of the input of DST-I is ignored - */ -int ff_dct_init(DCTContext *s, int nbits, enum DCTTransformType type); -void ff_dct_end (DCTContext *s); - -void ff_dct_init_x86(DCTContext *s); - -void ff_fdct_ifast(int16_t *data); -void ff_fdct_ifast248(int16_t *data); -void ff_jpeg_fdct_islow_8(int16_t *data); -void ff_jpeg_fdct_islow_10(int16_t *data); -void ff_fdct248_islow_8(int16_t *data); -void ff_fdct248_islow_10(int16_t *data); - -void ff_j_rev_dct(int16_t *data); - -#endif /* AVCODEC_DCT_H */ diff --git a/media/libav/libavcodec/fft-internal.h b/media/libav/libavcodec/fft-internal.h deleted file mode 100644 index a449ec058..000000000 --- a/media/libav/libavcodec/fft-internal.h +++ /dev/null @@ -1,75 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_FFT_INTERNAL_H -#define AVCODEC_FFT_INTERNAL_H - -#if FFT_FLOAT - -#define FIX15(v) (v) -#define sqrthalf (float)M_SQRT1_2 - -#define BF(x, y, a, b) do { \ - x = a - b; \ - y = a + b; \ - } while (0) - -#define CMUL(dre, dim, are, aim, bre, bim) do { \ - (dre) = (are) * (bre) - (aim) * (bim); \ - (dim) = (are) * (bim) + (aim) * (bre); \ - } while (0) - -#else - -#include "fft.h" -#include "mathops.h" - -void ff_mdct_calcw_c(FFTContext *s, FFTDouble *output, const FFTSample *input); - -#define SCALE_FLOAT(a, bits) lrint((a) * (double)(1 << (bits))) -#define FIX15(a) av_clip(SCALE_FLOAT(a, 15), -32767, 32767) - -#define sqrthalf ((int16_t)((1<<15)*M_SQRT1_2)) - -#define BF(x, y, a, b) do { \ - x = (a - b) >> 1; \ - y = (a + b) >> 1; \ - } while (0) - -#define CMULS(dre, dim, are, aim, bre, bim, sh) do { \ - (dre) = (MUL16(are, bre) - MUL16(aim, bim)) >> sh; \ - (dim) = (MUL16(are, bim) + MUL16(aim, bre)) >> sh; \ - } while (0) - -#define CMUL(dre, dim, are, aim, bre, bim) \ - CMULS(dre, dim, are, aim, bre, bim, 15) - -#define CMULL(dre, dim, are, aim, bre, bim) \ - CMULS(dre, dim, are, aim, bre, bim, 0) - -#endif /* FFT_FLOAT */ - -#define ff_imdct_calc_c FFT_NAME(ff_imdct_calc_c) -#define ff_imdct_half_c FFT_NAME(ff_imdct_half_c) -#define ff_mdct_calc_c FFT_NAME(ff_mdct_calc_c) - -void ff_imdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_c(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_mdct_calc_c(FFTContext *s, FFTSample *output, const FFTSample *input); - -#endif /* AVCODEC_FFT_INTERNAL_H */ diff --git a/media/libav/libavcodec/fft.h b/media/libav/libavcodec/fft.h deleted file mode 100644 index 7daae24ca..000000000 --- a/media/libav/libavcodec/fft.h +++ /dev/null @@ -1,157 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * Copyright (c) 2002-2004 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_FFT_H -#define AVCODEC_FFT_H - -#ifndef FFT_FLOAT -#define FFT_FLOAT 1 -#endif - -#include <stdint.h> -#include "config.h" -#include "libavutil/mem.h" - -#if FFT_FLOAT - -#include "avfft.h" - -#define FFT_NAME(x) x - -typedef float FFTDouble; - -#else - -#define FFT_NAME(x) x ## _fixed - -typedef int16_t FFTSample; -typedef int FFTDouble; - -typedef struct FFTComplex { - int16_t re, im; -} FFTComplex; - -typedef struct FFTContext FFTContext; - -#endif /* FFT_FLOAT */ - -typedef struct FFTDComplex { - FFTDouble re, im; -} FFTDComplex; - -/* FFT computation */ - -enum fft_permutation_type { - FF_FFT_PERM_DEFAULT, - FF_FFT_PERM_SWAP_LSBS, - FF_FFT_PERM_AVX, -}; - -enum mdct_permutation_type { - FF_MDCT_PERM_NONE, - FF_MDCT_PERM_INTERLEAVE, -}; - -struct FFTContext { - int nbits; - int inverse; - uint16_t *revtab; - FFTComplex *tmp_buf; - int mdct_size; /* size of MDCT (i.e. number of input data * 2) */ - int mdct_bits; /* n = 2^nbits */ - /* pre/post rotation tables */ - FFTSample *tcos; - FFTSample *tsin; - /** - * Do the permutation needed BEFORE calling fft_calc(). - */ - void (*fft_permute)(struct FFTContext *s, FFTComplex *z); - /** - * Do a complex FFT with the parameters defined in ff_fft_init(). The - * input data must be permuted before. No 1.0/sqrt(n) normalization is done. - */ - void (*fft_calc)(struct FFTContext *s, FFTComplex *z); - void (*imdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - void (*imdct_half)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - void (*mdct_calc)(struct FFTContext *s, FFTSample *output, const FFTSample *input); - void (*mdct_calcw)(struct FFTContext *s, FFTDouble *output, const FFTSample *input); - enum fft_permutation_type fft_permutation; - enum mdct_permutation_type mdct_permutation; -}; - -#if CONFIG_HARDCODED_TABLES -#define COSTABLE_CONST const -#else -#define COSTABLE_CONST -#endif - -#define COSTABLE(size) \ - COSTABLE_CONST DECLARE_ALIGNED(32, FFTSample, FFT_NAME(ff_cos_##size))[size/2] - -extern COSTABLE(16); -extern COSTABLE(32); -extern COSTABLE(64); -extern COSTABLE(128); -extern COSTABLE(256); -extern COSTABLE(512); -extern COSTABLE(1024); -extern COSTABLE(2048); -extern COSTABLE(4096); -extern COSTABLE(8192); -extern COSTABLE(16384); -extern COSTABLE(32768); -extern COSTABLE(65536); -extern COSTABLE_CONST FFTSample* const FFT_NAME(ff_cos_tabs)[17]; - -#define ff_init_ff_cos_tabs FFT_NAME(ff_init_ff_cos_tabs) - -/** - * Initialize the cosine table in ff_cos_tabs[index] - * @param index index in ff_cos_tabs array of the table to initialize - */ -void ff_init_ff_cos_tabs(int index); - -#define ff_fft_init FFT_NAME(ff_fft_init) -#define ff_fft_end FFT_NAME(ff_fft_end) - -/** - * Set up a complex FFT. - * @param nbits log2 of the length of the input array - * @param inverse if 0 perform the forward transform, if 1 perform the inverse - */ -int ff_fft_init(FFTContext *s, int nbits, int inverse); - -void ff_fft_init_aarch64(FFTContext *s); -void ff_fft_init_x86(FFTContext *s); -void ff_fft_init_arm(FFTContext *s); -void ff_fft_init_ppc(FFTContext *s); - -void ff_fft_fixed_init_arm(FFTContext *s); - -void ff_fft_end(FFTContext *s); - -#define ff_mdct_init FFT_NAME(ff_mdct_init) -#define ff_mdct_end FFT_NAME(ff_mdct_end) - -int ff_mdct_init(FFTContext *s, int nbits, int inverse, double scale); -void ff_mdct_end(FFTContext *s); - -#endif /* AVCODEC_FFT_H */ diff --git a/media/libav/libavcodec/fft_fixed.c b/media/libav/libavcodec/fft_fixed.c deleted file mode 100644 index bad482148..000000000 --- a/media/libav/libavcodec/fft_fixed.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define FFT_FLOAT 0 -#include "fft_template.c" diff --git a/media/libav/libavcodec/fft_float.c b/media/libav/libavcodec/fft_float.c deleted file mode 100644 index ed4cffa11..000000000 --- a/media/libav/libavcodec/fft_float.c +++ /dev/null @@ -1,20 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#define FFT_FLOAT 1 -#include "fft_template.c" diff --git a/media/libav/libavcodec/fft_template.c b/media/libav/libavcodec/fft_template.c deleted file mode 100644 index 808f317c1..000000000 --- a/media/libav/libavcodec/fft_template.c +++ /dev/null @@ -1,353 +0,0 @@ -/* - * FFT/IFFT transforms - * Copyright (c) 2008 Loren Merritt - * Copyright (c) 2002 Fabrice Bellard - * Partly based on libdjbfft by D. J. Bernstein - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * FFT/IFFT transforms. - */ - -#include <stdlib.h> -#include <string.h> -#include "libavutil/mathematics.h" -#include "fft.h" -#include "fft-internal.h" - -/* cos(2*pi*x/n) for 0<=x<=n/4, followed by its reverse */ -#if !CONFIG_HARDCODED_TABLES -COSTABLE(16); -COSTABLE(32); -COSTABLE(64); -COSTABLE(128); -COSTABLE(256); -COSTABLE(512); -COSTABLE(1024); -COSTABLE(2048); -COSTABLE(4096); -COSTABLE(8192); -COSTABLE(16384); -COSTABLE(32768); -COSTABLE(65536); -#endif -COSTABLE_CONST FFTSample * const FFT_NAME(ff_cos_tabs)[] = { - NULL, NULL, NULL, NULL, - FFT_NAME(ff_cos_16), - FFT_NAME(ff_cos_32), - FFT_NAME(ff_cos_64), - FFT_NAME(ff_cos_128), - FFT_NAME(ff_cos_256), - FFT_NAME(ff_cos_512), - FFT_NAME(ff_cos_1024), - FFT_NAME(ff_cos_2048), - FFT_NAME(ff_cos_4096), - FFT_NAME(ff_cos_8192), - FFT_NAME(ff_cos_16384), - FFT_NAME(ff_cos_32768), - FFT_NAME(ff_cos_65536), -}; - -static void fft_permute_c(FFTContext *s, FFTComplex *z); -static void fft_calc_c(FFTContext *s, FFTComplex *z); - -static int split_radix_permutation(int i, int n, int inverse) -{ - int m; - if(n <= 2) return i&1; - m = n >> 1; - if(!(i&m)) return split_radix_permutation(i, m, inverse)*2; - m >>= 1; - if(inverse == !(i&m)) return split_radix_permutation(i, m, inverse)*4 + 1; - else return split_radix_permutation(i, m, inverse)*4 - 1; -} - -av_cold void ff_init_ff_cos_tabs(int index) -{ -#if !CONFIG_HARDCODED_TABLES - int i; - int m = 1<<index; - double freq = 2*M_PI/m; - FFTSample *tab = FFT_NAME(ff_cos_tabs)[index]; - for(i=0; i<=m/4; i++) - tab[i] = FIX15(cos(i*freq)); - for(i=1; i<m/4; i++) - tab[m/2-i] = tab[i]; -#endif -} - -static const int avx_tab[] = { - 0, 4, 1, 5, 8, 12, 9, 13, 2, 6, 3, 7, 10, 14, 11, 15 -}; - -static int is_second_half_of_fft32(int i, int n) -{ - if (n <= 32) - return i >= 16; - else if (i < n/2) - return is_second_half_of_fft32(i, n/2); - else if (i < 3*n/4) - return is_second_half_of_fft32(i - n/2, n/4); - else - return is_second_half_of_fft32(i - 3*n/4, n/4); -} - -static av_cold void fft_perm_avx(FFTContext *s) -{ - int i; - int n = 1 << s->nbits; - - for (i = 0; i < n; i += 16) { - int k; - if (is_second_half_of_fft32(i, n)) { - for (k = 0; k < 16; k++) - s->revtab[-split_radix_permutation(i + k, n, s->inverse) & (n - 1)] = - i + avx_tab[k]; - - } else { - for (k = 0; k < 16; k++) { - int j = i + k; - j = (j & ~7) | ((j >> 1) & 3) | ((j << 2) & 4); - s->revtab[-split_radix_permutation(i + k, n, s->inverse) & (n - 1)] = j; - } - } - } -} - -av_cold int ff_fft_init(FFTContext *s, int nbits, int inverse) -{ - int i, j, n; - - if (nbits < 2 || nbits > 16) - goto fail; - s->nbits = nbits; - n = 1 << nbits; - - s->revtab = av_malloc(n * sizeof(uint16_t)); - if (!s->revtab) - goto fail; - s->tmp_buf = av_malloc(n * sizeof(FFTComplex)); - if (!s->tmp_buf) - goto fail; - s->inverse = inverse; - s->fft_permutation = FF_FFT_PERM_DEFAULT; - - s->fft_permute = fft_permute_c; - s->fft_calc = fft_calc_c; -#if CONFIG_MDCT - s->imdct_calc = ff_imdct_calc_c; - s->imdct_half = ff_imdct_half_c; - s->mdct_calc = ff_mdct_calc_c; -#endif - -#if FFT_FLOAT - if (ARCH_AARCH64) ff_fft_init_aarch64(s); - if (ARCH_ARM) ff_fft_init_arm(s); - if (ARCH_PPC) ff_fft_init_ppc(s); - if (ARCH_X86) ff_fft_init_x86(s); - if (CONFIG_MDCT) s->mdct_calcw = s->mdct_calc; -#else - if (CONFIG_MDCT) s->mdct_calcw = ff_mdct_calcw_c; - if (ARCH_ARM) ff_fft_fixed_init_arm(s); -#endif - - for(j=4; j<=nbits; j++) { - ff_init_ff_cos_tabs(j); - } - - if (s->fft_permutation == FF_FFT_PERM_AVX) { - fft_perm_avx(s); - } else { - for(i=0; i<n; i++) { - int j = i; - if (s->fft_permutation == FF_FFT_PERM_SWAP_LSBS) - j = (j&~3) | ((j>>1)&1) | ((j<<1)&2); - s->revtab[-split_radix_permutation(i, n, s->inverse) & (n-1)] = j; - } - } - - return 0; - fail: - av_freep(&s->revtab); - av_freep(&s->tmp_buf); - return -1; -} - -static void fft_permute_c(FFTContext *s, FFTComplex *z) -{ - int j, np; - const uint16_t *revtab = s->revtab; - np = 1 << s->nbits; - /* TODO: handle split-radix permute in a more optimal way, probably in-place */ - for(j=0;j<np;j++) s->tmp_buf[revtab[j]] = z[j]; - memcpy(z, s->tmp_buf, np * sizeof(FFTComplex)); -} - -av_cold void ff_fft_end(FFTContext *s) -{ - av_freep(&s->revtab); - av_freep(&s->tmp_buf); -} - -#define BUTTERFLIES(a0,a1,a2,a3) {\ - BF(t3, t5, t5, t1);\ - BF(a2.re, a0.re, a0.re, t5);\ - BF(a3.im, a1.im, a1.im, t3);\ - BF(t4, t6, t2, t6);\ - BF(a3.re, a1.re, a1.re, t4);\ - BF(a2.im, a0.im, a0.im, t6);\ -} - -// force loading all the inputs before storing any. -// this is slightly slower for small data, but avoids store->load aliasing -// for addresses separated by large powers of 2. -#define BUTTERFLIES_BIG(a0,a1,a2,a3) {\ - FFTSample r0=a0.re, i0=a0.im, r1=a1.re, i1=a1.im;\ - BF(t3, t5, t5, t1);\ - BF(a2.re, a0.re, r0, t5);\ - BF(a3.im, a1.im, i1, t3);\ - BF(t4, t6, t2, t6);\ - BF(a3.re, a1.re, r1, t4);\ - BF(a2.im, a0.im, i0, t6);\ -} - -#define TRANSFORM(a0,a1,a2,a3,wre,wim) {\ - CMUL(t1, t2, a2.re, a2.im, wre, -wim);\ - CMUL(t5, t6, a3.re, a3.im, wre, wim);\ - BUTTERFLIES(a0,a1,a2,a3)\ -} - -#define TRANSFORM_ZERO(a0,a1,a2,a3) {\ - t1 = a2.re;\ - t2 = a2.im;\ - t5 = a3.re;\ - t6 = a3.im;\ - BUTTERFLIES(a0,a1,a2,a3)\ -} - -/* z[0...8n-1], w[1...2n-1] */ -#define PASS(name)\ -static void name(FFTComplex *z, const FFTSample *wre, unsigned int n)\ -{\ - FFTDouble t1, t2, t3, t4, t5, t6;\ - int o1 = 2*n;\ - int o2 = 4*n;\ - int o3 = 6*n;\ - const FFTSample *wim = wre+o1;\ - n--;\ -\ - TRANSFORM_ZERO(z[0],z[o1],z[o2],z[o3]);\ - TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\ - do {\ - z += 2;\ - wre += 2;\ - wim -= 2;\ - TRANSFORM(z[0],z[o1],z[o2],z[o3],wre[0],wim[0]);\ - TRANSFORM(z[1],z[o1+1],z[o2+1],z[o3+1],wre[1],wim[-1]);\ - } while(--n);\ -} - -PASS(pass) -#undef BUTTERFLIES -#define BUTTERFLIES BUTTERFLIES_BIG -PASS(pass_big) - -#define DECL_FFT(n,n2,n4)\ -static void fft##n(FFTComplex *z)\ -{\ - fft##n2(z);\ - fft##n4(z+n4*2);\ - fft##n4(z+n4*3);\ - pass(z,FFT_NAME(ff_cos_##n),n4/2);\ -} - -static void fft4(FFTComplex *z) -{ - FFTDouble t1, t2, t3, t4, t5, t6, t7, t8; - - BF(t3, t1, z[0].re, z[1].re); - BF(t8, t6, z[3].re, z[2].re); - BF(z[2].re, z[0].re, t1, t6); - BF(t4, t2, z[0].im, z[1].im); - BF(t7, t5, z[2].im, z[3].im); - BF(z[3].im, z[1].im, t4, t8); - BF(z[3].re, z[1].re, t3, t7); - BF(z[2].im, z[0].im, t2, t5); -} - -static void fft8(FFTComplex *z) -{ - FFTDouble t1, t2, t3, t4, t5, t6; - - fft4(z); - - BF(t1, z[5].re, z[4].re, -z[5].re); - BF(t2, z[5].im, z[4].im, -z[5].im); - BF(t5, z[7].re, z[6].re, -z[7].re); - BF(t6, z[7].im, z[6].im, -z[7].im); - - BUTTERFLIES(z[0],z[2],z[4],z[6]); - TRANSFORM(z[1],z[3],z[5],z[7],sqrthalf,sqrthalf); -} - -#if !CONFIG_SMALL -static void fft16(FFTComplex *z) -{ - FFTDouble t1, t2, t3, t4, t5, t6; - FFTSample cos_16_1 = FFT_NAME(ff_cos_16)[1]; - FFTSample cos_16_3 = FFT_NAME(ff_cos_16)[3]; - - fft8(z); - fft4(z+8); - fft4(z+12); - - TRANSFORM_ZERO(z[0],z[4],z[8],z[12]); - TRANSFORM(z[2],z[6],z[10],z[14],sqrthalf,sqrthalf); - TRANSFORM(z[1],z[5],z[9],z[13],cos_16_1,cos_16_3); - TRANSFORM(z[3],z[7],z[11],z[15],cos_16_3,cos_16_1); -} -#else -DECL_FFT(16,8,4) -#endif -DECL_FFT(32,16,8) -DECL_FFT(64,32,16) -DECL_FFT(128,64,32) -DECL_FFT(256,128,64) -DECL_FFT(512,256,128) -#if !CONFIG_SMALL -#define pass pass_big -#endif -DECL_FFT(1024,512,256) -DECL_FFT(2048,1024,512) -DECL_FFT(4096,2048,1024) -DECL_FFT(8192,4096,2048) -DECL_FFT(16384,8192,4096) -DECL_FFT(32768,16384,8192) -DECL_FFT(65536,32768,16384) - -static void (* const fft_dispatch[])(FFTComplex*) = { - fft4, fft8, fft16, fft32, fft64, fft128, fft256, fft512, fft1024, - fft2048, fft4096, fft8192, fft16384, fft32768, fft65536, -}; - -static void fft_calc_c(FFTContext *s, FFTComplex *z) -{ - fft_dispatch[s->nbits-2](z); -} diff --git a/media/libav/libavcodec/mathops.h b/media/libav/libavcodec/mathops.h deleted file mode 100644 index 7af13e19e..000000000 --- a/media/libav/libavcodec/mathops.h +++ /dev/null @@ -1,232 +0,0 @@ -/* - * simple math operations - * Copyright (c) 2001, 2002 Fabrice Bellard - * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> et al - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#ifndef AVCODEC_MATHOPS_H -#define AVCODEC_MATHOPS_H - -#include <stdint.h> - -#include "libavutil/common.h" -#include "config.h" - -#define MAX_NEG_CROP 1024 - -extern const uint32_t ff_inverse[257]; -extern const uint8_t ff_reverse[256]; -extern const uint8_t ff_sqrt_tab[256]; -extern const uint8_t ff_crop_tab[256 + 2 * MAX_NEG_CROP]; -extern const uint8_t ff_zigzag_direct[64]; - -#if ARCH_ARM -# include "arm/mathops.h" -#elif ARCH_AVR32 -# include "avr32/mathops.h" -#elif ARCH_BFIN -# include "bfin/mathops.h" -#elif ARCH_MIPS -# include "mips/mathops.h" -#elif ARCH_PPC -# include "ppc/mathops.h" -#elif ARCH_X86 -# include "x86/mathops.h" -#endif - -/* generic implementation */ - -#ifndef MUL64 -# define MUL64(a,b) ((int64_t)(a) * (int64_t)(b)) -#endif - -#ifndef MULL -# define MULL(a,b,s) (MUL64(a, b) >> (s)) -#endif - -#ifndef MULH -static av_always_inline int MULH(int a, int b){ - return MUL64(a, b) >> 32; -} -#endif - -#ifndef UMULH -static av_always_inline unsigned UMULH(unsigned a, unsigned b){ - return ((uint64_t)(a) * (uint64_t)(b))>>32; -} -#endif - -#ifndef MAC64 -# define MAC64(d, a, b) ((d) += MUL64(a, b)) -#endif - -#ifndef MLS64 -# define MLS64(d, a, b) ((d) -= MUL64(a, b)) -#endif - -/* signed 16x16 -> 32 multiply add accumulate */ -#ifndef MAC16 -# define MAC16(rt, ra, rb) rt += (ra) * (rb) -#endif - -/* signed 16x16 -> 32 multiply */ -#ifndef MUL16 -# define MUL16(ra, rb) ((ra) * (rb)) -#endif - -#ifndef MLS16 -# define MLS16(rt, ra, rb) ((rt) -= (ra) * (rb)) -#endif - -/* median of 3 */ -#ifndef mid_pred -#define mid_pred mid_pred -static inline av_const int mid_pred(int a, int b, int c) -{ -#if 0 - int t= (a-b)&((a-b)>>31); - a-=t; - b+=t; - b-= (b-c)&((b-c)>>31); - b+= (a-b)&((a-b)>>31); - - return b; -#else - if(a>b){ - if(c>b){ - if(c>a) b=a; - else b=c; - } - }else{ - if(b>c){ - if(c>a) b=c; - else b=a; - } - } - return b; -#endif -} -#endif - -#ifndef sign_extend -static inline av_const int sign_extend(int val, unsigned bits) -{ - unsigned shift = 8 * sizeof(int) - bits; - union { unsigned u; int s; } v = { (unsigned) val << shift }; - return v.s >> shift; -} -#endif - -#ifndef zero_extend -static inline av_const unsigned zero_extend(unsigned val, unsigned bits) -{ - return (val << ((8 * sizeof(int)) - bits)) >> ((8 * sizeof(int)) - bits); -} -#endif - -#ifndef COPY3_IF_LT -#define COPY3_IF_LT(x, y, a, b, c, d)\ -if ((y) < (x)) {\ - (x) = (y);\ - (a) = (b);\ - (c) = (d);\ -} -#endif - -#ifndef MASK_ABS -#define MASK_ABS(mask, level) do { \ - mask = level >> 31; \ - level = (level ^ mask) - mask; \ - } while (0) -#endif - -#ifndef NEG_SSR32 -# define NEG_SSR32(a,s) ((( int32_t)(a))>>(32-(s))) -#endif - -#ifndef NEG_USR32 -# define NEG_USR32(a,s) (((uint32_t)(a))>>(32-(s))) -#endif - -#if HAVE_BIGENDIAN -# ifndef PACK_2U8 -# define PACK_2U8(a,b) (((a) << 8) | (b)) -# endif -# ifndef PACK_4U8 -# define PACK_4U8(a,b,c,d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) -# endif -# ifndef PACK_2U16 -# define PACK_2U16(a,b) (((a) << 16) | (b)) -# endif -#else -# ifndef PACK_2U8 -# define PACK_2U8(a,b) (((b) << 8) | (a)) -# endif -# ifndef PACK_4U2 -# define PACK_4U8(a,b,c,d) (((d) << 24) | ((c) << 16) | ((b) << 8) | (a)) -# endif -# ifndef PACK_2U16 -# define PACK_2U16(a,b) (((b) << 16) | (a)) -# endif -#endif - -#ifndef PACK_2S8 -# define PACK_2S8(a,b) PACK_2U8((a)&255, (b)&255) -#endif -#ifndef PACK_4S8 -# define PACK_4S8(a,b,c,d) PACK_4U8((a)&255, (b)&255, (c)&255, (d)&255) -#endif -#ifndef PACK_2S16 -# define PACK_2S16(a,b) PACK_2U16((a)&0xffff, (b)&0xffff) -#endif - -#ifndef FASTDIV -# define FASTDIV(a,b) ((uint32_t)((((uint64_t)a) * ff_inverse[b]) >> 32)) -#endif /* FASTDIV */ - -static inline av_const unsigned int ff_sqrt(unsigned int a) -{ - unsigned int b; - - if (a < 255) return (ff_sqrt_tab[a + 1] - 1) >> 4; - else if (a < (1 << 12)) b = ff_sqrt_tab[a >> 4] >> 2; -#if !CONFIG_SMALL - else if (a < (1 << 14)) b = ff_sqrt_tab[a >> 6] >> 1; - else if (a < (1 << 16)) b = ff_sqrt_tab[a >> 8] ; -#endif - else { - int s = av_log2_16bit(a >> 16) >> 1; - unsigned int c = a >> (s + 2); - b = ff_sqrt_tab[c >> (s + 8)]; - b = FASTDIV(c,b) + (b << s); - } - - return b - (a < b * b); -} - -static inline int8_t ff_u8_to_s8(uint8_t a) -{ - union { - uint8_t u8; - int8_t s8; - } b; - b.u8 = a; - return b.s8; -} - -#endif /* AVCODEC_MATHOPS_H */ diff --git a/media/libav/libavcodec/rdft.c b/media/libav/libavcodec/rdft.c deleted file mode 100644 index 54cf14aa2..000000000 --- a/media/libav/libavcodec/rdft.c +++ /dev/null @@ -1,133 +0,0 @@ -/* - * (I)RDFT transforms - * Copyright (c) 2009 Alex Converse <alex dot converse at gmail dot com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include <stdlib.h> -#include <math.h> -#include "libavutil/mathematics.h" -#include "rdft.h" - -/** - * @file - * (Inverse) Real Discrete Fourier Transforms. - */ - -/* sin(2*pi*x/n) for 0<=x<n/4, followed by n/2<=x<3n/4 */ -#if !CONFIG_HARDCODED_TABLES -SINTABLE(16); -SINTABLE(32); -SINTABLE(64); -SINTABLE(128); -SINTABLE(256); -SINTABLE(512); -SINTABLE(1024); -SINTABLE(2048); -SINTABLE(4096); -SINTABLE(8192); -SINTABLE(16384); -SINTABLE(32768); -SINTABLE(65536); -#endif -static SINTABLE_CONST FFTSample * const ff_sin_tabs[] = { - NULL, NULL, NULL, NULL, - ff_sin_16, ff_sin_32, ff_sin_64, ff_sin_128, ff_sin_256, ff_sin_512, ff_sin_1024, - ff_sin_2048, ff_sin_4096, ff_sin_8192, ff_sin_16384, ff_sin_32768, ff_sin_65536, -}; - -/** Map one real FFT into two parallel real even and odd FFTs. Then interleave - * the two real FFTs into one complex FFT. Unmangle the results. - * ref: http://www.engineeringproductivitytools.com/stuff/T0001/PT10.HTM - */ -static void rdft_calc_c(RDFTContext *s, FFTSample *data) -{ - int i, i1, i2; - FFTComplex ev, od; - const int n = 1 << s->nbits; - const float k1 = 0.5; - const float k2 = 0.5 - s->inverse; - const FFTSample *tcos = s->tcos; - const FFTSample *tsin = s->tsin; - - if (!s->inverse) { - s->fft.fft_permute(&s->fft, (FFTComplex*)data); - s->fft.fft_calc(&s->fft, (FFTComplex*)data); - } - /* i=0 is a special case because of packing, the DC term is real, so we - are going to throw the N/2 term (also real) in with it. */ - ev.re = data[0]; - data[0] = ev.re+data[1]; - data[1] = ev.re-data[1]; - for (i = 1; i < (n>>2); i++) { - i1 = 2*i; - i2 = n-i1; - /* Separate even and odd FFTs */ - ev.re = k1*(data[i1 ]+data[i2 ]); - od.im = -k2*(data[i1 ]-data[i2 ]); - ev.im = k1*(data[i1+1]-data[i2+1]); - od.re = k2*(data[i1+1]+data[i2+1]); - /* Apply twiddle factors to the odd FFT and add to the even FFT */ - data[i1 ] = ev.re + od.re*tcos[i] - od.im*tsin[i]; - data[i1+1] = ev.im + od.im*tcos[i] + od.re*tsin[i]; - data[i2 ] = ev.re - od.re*tcos[i] + od.im*tsin[i]; - data[i2+1] = -ev.im + od.im*tcos[i] + od.re*tsin[i]; - } - data[2*i+1]=s->sign_convention*data[2*i+1]; - if (s->inverse) { - data[0] *= k1; - data[1] *= k1; - s->fft.fft_permute(&s->fft, (FFTComplex*)data); - s->fft.fft_calc(&s->fft, (FFTComplex*)data); - } -} - -av_cold int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans) -{ - int n = 1 << nbits; - int i; - const double theta = (trans == DFT_R2C || trans == DFT_C2R ? -1 : 1)*2*M_PI/n; - - s->nbits = nbits; - s->inverse = trans == IDFT_C2R || trans == DFT_C2R; - s->sign_convention = trans == IDFT_R2C || trans == DFT_C2R ? 1 : -1; - - if (nbits < 4 || nbits > 16) - return -1; - - if (ff_fft_init(&s->fft, nbits-1, trans == IDFT_C2R || trans == IDFT_R2C) < 0) - return -1; - - ff_init_ff_cos_tabs(nbits); - s->tcos = ff_cos_tabs[nbits]; - s->tsin = ff_sin_tabs[nbits]+(trans == DFT_R2C || trans == DFT_C2R)*(n>>2); -#if !CONFIG_HARDCODED_TABLES - for (i = 0; i < (n>>2); i++) { - s->tsin[i] = sin(i*theta); - } -#endif - s->rdft_calc = rdft_calc_c; - - if (ARCH_ARM) ff_rdft_init_arm(s); - - return 0; -} - -av_cold void ff_rdft_end(RDFTContext *s) -{ - ff_fft_end(&s->fft); -} diff --git a/media/libav/libavcodec/rdft.h b/media/libav/libavcodec/rdft.h deleted file mode 100644 index 8ff620fb5..000000000 --- a/media/libav/libavcodec/rdft.h +++ /dev/null @@ -1,74 +0,0 @@ -/* - * (I)RDFT transforms - * Copyright (c) 2009 Alex Converse <alex dot converse at gmail dot com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_RDFT_H -#define AVCODEC_RDFT_H - -#include "config.h" -#include "fft.h" - -#if CONFIG_HARDCODED_TABLES -# define SINTABLE_CONST const -#else -# define SINTABLE_CONST -#endif - -#define SINTABLE(size) \ - SINTABLE_CONST DECLARE_ALIGNED(16, FFTSample, ff_sin_##size)[size/2] - -extern SINTABLE(16); -extern SINTABLE(32); -extern SINTABLE(64); -extern SINTABLE(128); -extern SINTABLE(256); -extern SINTABLE(512); -extern SINTABLE(1024); -extern SINTABLE(2048); -extern SINTABLE(4096); -extern SINTABLE(8192); -extern SINTABLE(16384); -extern SINTABLE(32768); -extern SINTABLE(65536); - -struct RDFTContext { - int nbits; - int inverse; - int sign_convention; - - /* pre/post rotation tables */ - const FFTSample *tcos; - SINTABLE_CONST FFTSample *tsin; - FFTContext fft; - void (*rdft_calc)(struct RDFTContext *s, FFTSample *z); -}; - -/** - * Set up a real FFT. - * @param nbits log2 of the length of the input array - * @param trans the type of transform - */ -int ff_rdft_init(RDFTContext *s, int nbits, enum RDFTransformType trans); -void ff_rdft_end(RDFTContext *s); - -void ff_rdft_init_arm(RDFTContext *s); - - -#endif /* AVCODEC_RDFT_H */ diff --git a/media/libav/libavcodec/x86/fft.asm b/media/libav/libavcodec/x86/fft.asm deleted file mode 100644 index e4744a3b6..000000000 --- a/media/libav/libavcodec/x86/fft.asm +++ /dev/null @@ -1,1083 +0,0 @@ -;****************************************************************************** -;* FFT transform with SSE/3DNow optimizations -;* Copyright (c) 2008 Loren Merritt -;* Copyright (c) 2011 Vitor Sessak -;* -;* This algorithm (though not any of the implementation details) is -;* based on libdjbfft by D. J. Bernstein. -;* -;* This file is part of Libav. -;* -;* Libav is free software; you can redistribute it 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. -;* -;* Libav is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with Libav; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -; These functions are not individually interchangeable with the C versions. -; While C takes arrays of FFTComplex, SSE/3DNow leave intermediate results -; in blocks as conventient to the vector size. -; i.e. {4x real, 4x imaginary, 4x real, ...} (or 2x respectively) - -%include "libavutil/x86/x86util.asm" - -%if ARCH_X86_64 -%define pointer resq -%else -%define pointer resd -%endif - -struc FFTContext - .nbits: resd 1 - .reverse: resd 1 - .revtab: pointer 1 - .tmpbuf: pointer 1 - .mdctsize: resd 1 - .mdctbits: resd 1 - .tcos: pointer 1 - .tsin: pointer 1 - .fftperm: pointer 1 - .fftcalc: pointer 1 - .imdctcalc:pointer 1 - .imdcthalf:pointer 1 -endstruc - -SECTION_RODATA - -%define M_SQRT1_2 0.70710678118654752440 -%define M_COS_PI_1_8 0.923879532511287 -%define M_COS_PI_3_8 0.38268343236509 - -align 32 -ps_cos16_1: dd 1.0, M_COS_PI_1_8, M_SQRT1_2, M_COS_PI_3_8, 1.0, M_COS_PI_1_8, M_SQRT1_2, M_COS_PI_3_8 -ps_cos16_2: dd 0, M_COS_PI_3_8, M_SQRT1_2, M_COS_PI_1_8, 0, -M_COS_PI_3_8, -M_SQRT1_2, -M_COS_PI_1_8 - -ps_root2: times 8 dd M_SQRT1_2 -ps_root2mppm: dd -M_SQRT1_2, M_SQRT1_2, M_SQRT1_2, -M_SQRT1_2, -M_SQRT1_2, M_SQRT1_2, M_SQRT1_2, -M_SQRT1_2 -ps_p1p1m1p1: dd 0, 0, 1<<31, 0, 0, 0, 1<<31, 0 - -perm1: dd 0x00, 0x02, 0x03, 0x01, 0x03, 0x00, 0x02, 0x01 -perm2: dd 0x00, 0x01, 0x02, 0x03, 0x01, 0x00, 0x02, 0x03 -ps_p1p1m1p1root2: dd 1.0, 1.0, -1.0, 1.0, M_SQRT1_2, M_SQRT1_2, M_SQRT1_2, M_SQRT1_2 -ps_m1m1p1m1p1m1m1m1: dd 1<<31, 1<<31, 0, 1<<31, 0, 1<<31, 1<<31, 1<<31 -ps_m1m1m1m1: times 4 dd 1<<31 -ps_m1p1: dd 1<<31, 0 - -%assign i 16 -%rep 13 -cextern cos_ %+ i -%assign i i<<1 -%endrep - -%if ARCH_X86_64 - %define pointer dq -%else - %define pointer dd -%endif - -%macro IF0 1+ -%endmacro -%macro IF1 1+ - %1 -%endmacro - -SECTION_TEXT - -%macro T2_3DNOW 4 ; z0, z1, mem0, mem1 - mova %1, %3 - mova %2, %1 - pfadd %1, %4 - pfsub %2, %4 -%endmacro - -%macro T4_3DNOW 6 ; z0, z1, z2, z3, tmp0, tmp1 - mova %5, %3 - pfsub %3, %4 - pfadd %5, %4 ; {t6,t5} - pxor %3, [ps_m1p1] ; {t8,t7} - mova %6, %1 - movd [r0+12], %3 - punpckhdq %3, [r0+8] - pfadd %1, %5 ; {r0,i0} - pfsub %6, %5 ; {r2,i2} - mova %4, %2 - pfadd %2, %3 ; {r1,i1} - pfsub %4, %3 ; {r3,i3} - SWAP %3, %6 -%endmacro - -; in: %1 = {r0,i0,r2,i2,r4,i4,r6,i6} -; %2 = {r1,i1,r3,i3,r5,i5,r7,i7} -; %3, %4, %5 tmp -; out: %1 = {r0,r1,r2,r3,i0,i1,i2,i3} -; %2 = {r4,r5,r6,r7,i4,i5,i6,i7} -%macro T8_AVX 5 - vsubps %5, %1, %2 ; v = %1 - %2 - vaddps %3, %1, %2 ; w = %1 + %2 - vmulps %2, %5, [ps_p1p1m1p1root2] ; v *= vals1 - vpermilps %2, %2, [perm1] - vblendps %1, %2, %3, 0x33 ; q = {w1,w2,v4,v2,w5,w6,v7,v6} - vshufps %5, %3, %2, 0x4e ; r = {w3,w4,v1,v3,w7,w8,v8,v5} - vsubps %4, %5, %1 ; s = r - q - vaddps %1, %5, %1 ; u = r + q - vpermilps %1, %1, [perm2] ; k = {u1,u2,u3,u4,u6,u5,u7,u8} - vshufps %5, %4, %1, 0xbb - vshufps %3, %4, %1, 0xee - vperm2f128 %3, %3, %5, 0x13 - vxorps %4, %4, [ps_m1m1p1m1p1m1m1m1] ; s *= {1,1,-1,-1,1,-1,-1,-1} - vshufps %2, %1, %4, 0xdd - vshufps %1, %1, %4, 0x88 - vperm2f128 %4, %2, %1, 0x02 ; v = {k1,k3,s1,s3,k2,k4,s2,s4} - vperm2f128 %1, %1, %2, 0x13 ; w = {k6,k8,s6,s8,k5,k7,s5,s7} - vsubps %5, %1, %3 - vblendps %1, %5, %1, 0x55 ; w -= {0,s7,0,k7,0,s8,0,k8} - vsubps %2, %4, %1 ; %2 = v - w - vaddps %1, %4, %1 ; %1 = v + w -%endmacro - -; In SSE mode do one fft4 transforms -; in: %1={r0,i0,r2,i2} %2={r1,i1,r3,i3} -; out: %1={r0,r1,r2,r3} %2={i0,i1,i2,i3} -; -; In AVX mode do two fft4 transforms -; in: %1={r0,i0,r2,i2,r4,i4,r6,i6} %2={r1,i1,r3,i3,r5,i5,r7,i7} -; out: %1={r0,r1,r2,r3,r4,r5,r6,r7} %2={i0,i1,i2,i3,i4,i5,i6,i7} -%macro T4_SSE 3 - subps %3, %1, %2 ; {t3,t4,-t8,t7} - addps %1, %1, %2 ; {t1,t2,t6,t5} - xorps %3, %3, [ps_p1p1m1p1] - shufps %2, %1, %3, 0xbe ; {t6,t5,t7,t8} - shufps %1, %1, %3, 0x44 ; {t1,t2,t3,t4} - subps %3, %1, %2 ; {r2,i2,r3,i3} - addps %1, %1, %2 ; {r0,i0,r1,i1} - shufps %2, %1, %3, 0xdd ; {i0,i1,i2,i3} - shufps %1, %1, %3, 0x88 ; {r0,r1,r2,r3} -%endmacro - -; In SSE mode do one FFT8 -; in: %1={r0,r1,r2,r3} %2={i0,i1,i2,i3} %3={r4,i4,r6,i6} %4={r5,i5,r7,i7} -; out: %1={r0,r1,r2,r3} %2={i0,i1,i2,i3} %1={r4,r5,r6,r7} %2={i4,i5,i6,i7} -; -; In AVX mode do two FFT8 -; in: %1={r0,i0,r2,i2,r8, i8, r10,i10} %2={r1,i1,r3,i3,r9, i9, r11,i11} -; %3={r4,i4,r6,i6,r12,i12,r14,i14} %4={r5,i5,r7,i7,r13,i13,r15,i15} -; out: %1={r0,r1,r2,r3,r8, r9, r10,r11} %2={i0,i1,i2,i3,i8, i9, i10,i11} -; %3={r4,r5,r6,r7,r12,r13,r14,r15} %4={i4,i5,i6,i7,i12,i13,i14,i15} -%macro T8_SSE 6 - addps %6, %3, %4 ; {t1,t2,t3,t4} - subps %3, %3, %4 ; {r5,i5,r7,i7} - shufps %4, %3, %3, 0xb1 ; {i5,r5,i7,r7} - mulps %3, %3, [ps_root2mppm] ; {-r5,i5,r7,-i7} - mulps %4, %4, [ps_root2] - addps %3, %3, %4 ; {t8,t7,ta,t9} - shufps %4, %6, %3, 0x9c ; {t1,t4,t7,ta} - shufps %6, %6, %3, 0x36 ; {t3,t2,t9,t8} - subps %3, %6, %4 ; {t6,t5,tc,tb} - addps %6, %6, %4 ; {t1,t2,t9,ta} - shufps %5, %6, %3, 0x8d ; {t2,ta,t6,tc} - shufps %6, %6, %3, 0xd8 ; {t1,t9,t5,tb} - subps %3, %1, %6 ; {r4,r5,r6,r7} - addps %1, %1, %6 ; {r0,r1,r2,r3} - subps %4, %2, %5 ; {i4,i5,i6,i7} - addps %2, %2, %5 ; {i0,i1,i2,i3} -%endmacro - -; scheduled for cpu-bound sizes -%macro PASS_SMALL 3 ; (to load m4-m7), wre, wim -IF%1 mova m4, Z(4) -IF%1 mova m5, Z(5) - mova m0, %2 ; wre - mova m1, %3 ; wim - mulps m2, m4, m0 ; r2*wre -IF%1 mova m6, Z2(6) - mulps m3, m5, m1 ; i2*wim -IF%1 mova m7, Z2(7) - mulps m4, m4, m1 ; r2*wim - mulps m5, m5, m0 ; i2*wre - addps m2, m2, m3 ; r2*wre + i2*wim - mulps m3, m1, m7 ; i3*wim - subps m5, m5, m4 ; i2*wre - r2*wim - mulps m1, m1, m6 ; r3*wim - mulps m4, m0, m6 ; r3*wre - mulps m0, m0, m7 ; i3*wre - subps m4, m4, m3 ; r3*wre - i3*wim - mova m3, Z(0) - addps m0, m0, m1 ; i3*wre + r3*wim - subps m1, m4, m2 ; t3 - addps m4, m4, m2 ; t5 - subps m3, m3, m4 ; r2 - addps m4, m4, Z(0) ; r0 - mova m6, Z(2) - mova Z(4), m3 - mova Z(0), m4 - subps m3, m5, m0 ; t4 - subps m4, m6, m3 ; r3 - addps m3, m3, m6 ; r1 - mova Z2(6), m4 - mova Z(2), m3 - mova m2, Z(3) - addps m3, m5, m0 ; t6 - subps m2, m2, m1 ; i3 - mova m7, Z(1) - addps m1, m1, Z(3) ; i1 - mova Z2(7), m2 - mova Z(3), m1 - subps m4, m7, m3 ; i2 - addps m3, m3, m7 ; i0 - mova Z(5), m4 - mova Z(1), m3 -%endmacro - -; scheduled to avoid store->load aliasing -%macro PASS_BIG 1 ; (!interleave) - mova m4, Z(4) ; r2 - mova m5, Z(5) ; i2 - mova m0, [wq] ; wre - mova m1, [wq+o1q] ; wim - mulps m2, m4, m0 ; r2*wre - mova m6, Z2(6) ; r3 - mulps m3, m5, m1 ; i2*wim - mova m7, Z2(7) ; i3 - mulps m4, m4, m1 ; r2*wim - mulps m5, m5, m0 ; i2*wre - addps m2, m2, m3 ; r2*wre + i2*wim - mulps m3, m1, m7 ; i3*wim - mulps m1, m1, m6 ; r3*wim - subps m5, m5, m4 ; i2*wre - r2*wim - mulps m4, m0, m6 ; r3*wre - mulps m0, m0, m7 ; i3*wre - subps m4, m4, m3 ; r3*wre - i3*wim - mova m3, Z(0) - addps m0, m0, m1 ; i3*wre + r3*wim - subps m1, m4, m2 ; t3 - addps m4, m4, m2 ; t5 - subps m3, m3, m4 ; r2 - addps m4, m4, Z(0) ; r0 - mova m6, Z(2) - mova Z(4), m3 - mova Z(0), m4 - subps m3, m5, m0 ; t4 - subps m4, m6, m3 ; r3 - addps m3, m3, m6 ; r1 -IF%1 mova Z2(6), m4 -IF%1 mova Z(2), m3 - mova m2, Z(3) - addps m5, m5, m0 ; t6 - subps m2, m2, m1 ; i3 - mova m7, Z(1) - addps m1, m1, Z(3) ; i1 -IF%1 mova Z2(7), m2 -IF%1 mova Z(3), m1 - subps m6, m7, m5 ; i2 - addps m5, m5, m7 ; i0 -IF%1 mova Z(5), m6 -IF%1 mova Z(1), m5 -%if %1==0 - INTERL m1, m3, m7, Z, 2 - INTERL m2, m4, m0, Z2, 6 - - mova m1, Z(0) - mova m2, Z(4) - - INTERL m5, m1, m3, Z, 0 - INTERL m6, m2, m7, Z, 4 -%endif -%endmacro - -%macro PUNPCK 3 - mova %3, %1 - punpckldq %1, %2 - punpckhdq %3, %2 -%endmacro - -%define Z(x) [r0+mmsize*x] -%define Z2(x) [r0+mmsize*x] -%define ZH(x) [r0+mmsize*x+mmsize/2] - -INIT_YMM avx - -align 16 -fft8_avx: - mova m0, Z(0) - mova m1, Z(1) - T8_AVX m0, m1, m2, m3, m4 - mova Z(0), m0 - mova Z(1), m1 - ret - - -align 16 -fft16_avx: - mova m2, Z(2) - mova m3, Z(3) - T4_SSE m2, m3, m7 - - mova m0, Z(0) - mova m1, Z(1) - T8_AVX m0, m1, m4, m5, m7 - - mova m4, [ps_cos16_1] - mova m5, [ps_cos16_2] - vmulps m6, m2, m4 - vmulps m7, m3, m5 - vaddps m7, m7, m6 - vmulps m2, m2, m5 - vmulps m3, m3, m4 - vsubps m3, m3, m2 - vblendps m2, m7, m3, 0xf0 - vperm2f128 m3, m7, m3, 0x21 - vaddps m4, m2, m3 - vsubps m2, m3, m2 - vperm2f128 m2, m2, m2, 0x01 - vsubps m3, m1, m2 - vaddps m1, m1, m2 - vsubps m5, m0, m4 - vaddps m0, m0, m4 - vextractf128 Z(0), m0, 0 - vextractf128 ZH(0), m1, 0 - vextractf128 Z(1), m0, 1 - vextractf128 ZH(1), m1, 1 - vextractf128 Z(2), m5, 0 - vextractf128 ZH(2), m3, 0 - vextractf128 Z(3), m5, 1 - vextractf128 ZH(3), m3, 1 - ret - -align 16 -fft32_avx: - call fft16_avx - - mova m0, Z(4) - mova m1, Z(5) - - T4_SSE m0, m1, m4 - - mova m2, Z(6) - mova m3, Z(7) - - T8_SSE m0, m1, m2, m3, m4, m6 - ; m0={r0,r1,r2,r3,r8, r9, r10,r11} m1={i0,i1,i2,i3,i8, i9, i10,i11} - ; m2={r4,r5,r6,r7,r12,r13,r14,r15} m3={i4,i5,i6,i7,i12,i13,i14,i15} - - vperm2f128 m4, m0, m2, 0x20 - vperm2f128 m5, m1, m3, 0x20 - vperm2f128 m6, m0, m2, 0x31 - vperm2f128 m7, m1, m3, 0x31 - - PASS_SMALL 0, [cos_32], [cos_32+32] - - ret - -fft32_interleave_avx: - call fft32_avx - mov r2d, 32 -.deint_loop: - mova m2, Z(0) - mova m3, Z(1) - vunpcklps m0, m2, m3 - vunpckhps m1, m2, m3 - vextractf128 Z(0), m0, 0 - vextractf128 ZH(0), m1, 0 - vextractf128 Z(1), m0, 1 - vextractf128 ZH(1), m1, 1 - add r0, mmsize*2 - sub r2d, mmsize/4 - jg .deint_loop - ret - -INIT_XMM sse - -align 16 -fft4_avx: -fft4_sse: - mova m0, Z(0) - mova m1, Z(1) - T4_SSE m0, m1, m2 - mova Z(0), m0 - mova Z(1), m1 - ret - -align 16 -fft8_sse: - mova m0, Z(0) - mova m1, Z(1) - T4_SSE m0, m1, m2 - mova m2, Z(2) - mova m3, Z(3) - T8_SSE m0, m1, m2, m3, m4, m5 - mova Z(0), m0 - mova Z(1), m1 - mova Z(2), m2 - mova Z(3), m3 - ret - -align 16 -fft16_sse: - mova m0, Z(0) - mova m1, Z(1) - T4_SSE m0, m1, m2 - mova m2, Z(2) - mova m3, Z(3) - T8_SSE m0, m1, m2, m3, m4, m5 - mova m4, Z(4) - mova m5, Z(5) - mova Z(0), m0 - mova Z(1), m1 - mova Z(2), m2 - mova Z(3), m3 - T4_SSE m4, m5, m6 - mova m6, Z2(6) - mova m7, Z2(7) - T4_SSE m6, m7, m0 - PASS_SMALL 0, [cos_16], [cos_16+16] - ret - - -%macro FFT48_3DNOW 0 -align 16 -fft4 %+ SUFFIX: - T2_3DNOW m0, m1, Z(0), Z(1) - mova m2, Z(2) - mova m3, Z(3) - T4_3DNOW m0, m1, m2, m3, m4, m5 - PUNPCK m0, m1, m4 - PUNPCK m2, m3, m5 - mova Z(0), m0 - mova Z(1), m4 - mova Z(2), m2 - mova Z(3), m5 - ret - -align 16 -fft8 %+ SUFFIX: - T2_3DNOW m0, m1, Z(0), Z(1) - mova m2, Z(2) - mova m3, Z(3) - T4_3DNOW m0, m1, m2, m3, m4, m5 - mova Z(0), m0 - mova Z(2), m2 - T2_3DNOW m4, m5, Z(4), Z(5) - T2_3DNOW m6, m7, Z2(6), Z2(7) - PSWAPD m0, m5 - PSWAPD m2, m7 - pxor m0, [ps_m1p1] - pxor m2, [ps_m1p1] - pfsub m5, m0 - pfadd m7, m2 - pfmul m5, [ps_root2] - pfmul m7, [ps_root2] - T4_3DNOW m1, m3, m5, m7, m0, m2 - mova Z(5), m5 - mova Z2(7), m7 - mova m0, Z(0) - mova m2, Z(2) - T4_3DNOW m0, m2, m4, m6, m5, m7 - PUNPCK m0, m1, m5 - PUNPCK m2, m3, m7 - mova Z(0), m0 - mova Z(1), m5 - mova Z(2), m2 - mova Z(3), m7 - PUNPCK m4, Z(5), m5 - PUNPCK m6, Z2(7), m7 - mova Z(4), m4 - mova Z(5), m5 - mova Z2(6), m6 - mova Z2(7), m7 - ret -%endmacro - -%if ARCH_X86_32 -INIT_MMX 3dnowext -FFT48_3DNOW - -INIT_MMX 3dnow -FFT48_3DNOW -%endif - -%define Z(x) [zcq + o1q*(x&6) + mmsize*(x&1)] -%define Z2(x) [zcq + o3q + mmsize*(x&1)] -%define ZH(x) [zcq + o1q*(x&6) + mmsize*(x&1) + mmsize/2] -%define Z2H(x) [zcq + o3q + mmsize*(x&1) + mmsize/2] - -%macro DECL_PASS 2+ ; name, payload -align 16 -%1: -DEFINE_ARGS zc, w, n, o1, o3 - lea o3q, [nq*3] - lea o1q, [nq*8] - shl o3q, 4 -.loop: - %2 - add zcq, mmsize*2 - add wq, mmsize - sub nd, mmsize/8 - jg .loop - rep ret -%endmacro - -%macro FFT_DISPATCH 2; clobbers 5 GPRs, 8 XMMs - lea r2, [dispatch_tab%1] - mov r2, [r2 + (%2q-2)*gprsize] -%ifdef PIC - lea r3, [$$] - add r2, r3 -%endif - call r2 -%endmacro ; FFT_DISPATCH - -INIT_YMM avx - -%macro INTERL_AVX 5 - vunpckhps %3, %2, %1 - vunpcklps %2, %2, %1 - vextractf128 %4(%5), %2, 0 - vextractf128 %4 %+ H(%5), %3, 0 - vextractf128 %4(%5 + 1), %2, 1 - vextractf128 %4 %+ H(%5 + 1), %3, 1 -%endmacro - -%define INTERL INTERL_AVX - -DECL_PASS pass_avx, PASS_BIG 1 -DECL_PASS pass_interleave_avx, PASS_BIG 0 - -cglobal fft_calc, 2,5,8 - mov r3d, [r0 + FFTContext.nbits] - mov r0, r1 - mov r1, r3 - FFT_DISPATCH _interleave %+ SUFFIX, r1 - REP_RET - - -INIT_XMM sse - -%macro INTERL_SSE 5 - mova %3, %2 - unpcklps %2, %1 - unpckhps %3, %1 - mova %4(%5), %2 - mova %4(%5+1), %3 -%endmacro - -%define INTERL INTERL_SSE - -DECL_PASS pass_sse, PASS_BIG 1 -DECL_PASS pass_interleave_sse, PASS_BIG 0 - -%macro FFT_CALC_FUNC 0 -cglobal fft_calc, 2,5,8 - mov r3d, [r0 + FFTContext.nbits] - PUSH r1 - PUSH r3 - mov r0, r1 - mov r1, r3 - FFT_DISPATCH _interleave %+ SUFFIX, r1 - POP rcx - POP r4 - cmp rcx, 3+(mmsize/16) - jg .end - mov r2, -1 - add rcx, 3 - shl r2, cl - sub r4, r2 -.loop: -%if mmsize == 8 - PSWAPD m0, [r4 + r2 + 4] - mova [r4 + r2 + 4], m0 -%else - movaps xmm0, [r4 + r2] - movaps xmm1, xmm0 - unpcklps xmm0, [r4 + r2 + 16] - unpckhps xmm1, [r4 + r2 + 16] - movaps [r4 + r2], xmm0 - movaps [r4 + r2 + 16], xmm1 -%endif - add r2, mmsize*2 - jl .loop -.end: -%if cpuflag(3dnow) - femms - RET -%else - REP_RET -%endif -%endmacro - -%if ARCH_X86_32 -INIT_MMX 3dnow -FFT_CALC_FUNC -INIT_MMX 3dnowext -FFT_CALC_FUNC -%endif -INIT_XMM sse -FFT_CALC_FUNC - -cglobal fft_permute, 2,7,1 - mov r4, [r0 + FFTContext.revtab] - mov r5, [r0 + FFTContext.tmpbuf] - mov ecx, [r0 + FFTContext.nbits] - mov r2, 1 - shl r2, cl - xor r0, r0 -%if ARCH_X86_32 - mov r1, r1m -%endif -.loop: - movaps xmm0, [r1 + 8*r0] - movzx r6, word [r4 + 2*r0] - movzx r3, word [r4 + 2*r0 + 2] - movlps [r5 + 8*r6], xmm0 - movhps [r5 + 8*r3], xmm0 - add r0, 2 - cmp r0, r2 - jl .loop - shl r2, 3 - add r1, r2 - add r5, r2 - neg r2 -; nbits >= 2 (FFT4) and sizeof(FFTComplex)=8 => at least 32B -.loopcopy: - movaps xmm0, [r5 + r2] - movaps xmm1, [r5 + r2 + 16] - movaps [r1 + r2], xmm0 - movaps [r1 + r2 + 16], xmm1 - add r2, 32 - jl .loopcopy - REP_RET - -%macro IMDCT_CALC_FUNC 0 -cglobal imdct_calc, 3,5,3 - mov r3d, [r0 + FFTContext.mdctsize] - mov r4, [r0 + FFTContext.imdcthalf] - add r1, r3 - PUSH r3 - PUSH r1 -%if ARCH_X86_32 - push r2 - push r1 - push r0 -%else - sub rsp, 8+32*WIN64 ; allocate win64 shadow space -%endif - call r4 -%if ARCH_X86_32 - add esp, 12 -%else - add rsp, 8+32*WIN64 -%endif - POP r1 - POP r3 - lea r0, [r1 + 2*r3] - mov r2, r3 - sub r3, mmsize - neg r2 - mova m2, [ps_m1m1m1m1] -.loop: -%if mmsize == 8 - PSWAPD m0, [r1 + r3] - PSWAPD m1, [r0 + r2] - pxor m0, m2 -%else - mova m0, [r1 + r3] - mova m1, [r0 + r2] - shufps m0, m0, 0x1b - shufps m1, m1, 0x1b - xorps m0, m2 -%endif - mova [r0 + r3], m1 - mova [r1 + r2], m0 - sub r3, mmsize - add r2, mmsize - jl .loop -%if cpuflag(3dnow) - femms - RET -%else - REP_RET -%endif -%endmacro - -%if ARCH_X86_32 -INIT_MMX 3dnow -IMDCT_CALC_FUNC -INIT_MMX 3dnowext -IMDCT_CALC_FUNC -%endif - -INIT_XMM sse -IMDCT_CALC_FUNC - -%if ARCH_X86_32 -INIT_MMX 3dnow -%define mulps pfmul -%define addps pfadd -%define subps pfsub -%define unpcklps punpckldq -%define unpckhps punpckhdq -DECL_PASS pass_3dnow, PASS_SMALL 1, [wq], [wq+o1q] -DECL_PASS pass_interleave_3dnow, PASS_BIG 0 -%define pass_3dnowext pass_3dnow -%define pass_interleave_3dnowext pass_interleave_3dnow -%endif - -%ifdef PIC -%define SECTION_REL - $$ -%else -%define SECTION_REL -%endif - -%macro DECL_FFT 1-2 ; nbits, suffix -%ifidn %0, 1 -%xdefine fullsuffix SUFFIX -%else -%xdefine fullsuffix %2 %+ SUFFIX -%endif -%xdefine list_of_fft fft4 %+ SUFFIX SECTION_REL, fft8 %+ SUFFIX SECTION_REL -%if %1>=5 -%xdefine list_of_fft list_of_fft, fft16 %+ SUFFIX SECTION_REL -%endif -%if %1>=6 -%xdefine list_of_fft list_of_fft, fft32 %+ fullsuffix SECTION_REL -%endif - -%assign n 1<<%1 -%rep 17-%1 -%assign n2 n/2 -%assign n4 n/4 -%xdefine list_of_fft list_of_fft, fft %+ n %+ fullsuffix SECTION_REL - -align 16 -fft %+ n %+ fullsuffix: - call fft %+ n2 %+ SUFFIX - add r0, n*4 - (n&(-2<<%1)) - call fft %+ n4 %+ SUFFIX - add r0, n*2 - (n2&(-2<<%1)) - call fft %+ n4 %+ SUFFIX - sub r0, n*6 + (n2&(-2<<%1)) - lea r1, [cos_ %+ n] - mov r2d, n4/2 - jmp pass %+ fullsuffix - -%assign n n*2 -%endrep -%undef n - -align 8 -dispatch_tab %+ fullsuffix: pointer list_of_fft -%endmacro ; DECL_FFT - -INIT_YMM avx -DECL_FFT 6 -DECL_FFT 6, _interleave -INIT_XMM sse -DECL_FFT 5 -DECL_FFT 5, _interleave -%if ARCH_X86_32 -INIT_MMX 3dnow -DECL_FFT 4 -DECL_FFT 4, _interleave -INIT_MMX 3dnowext -DECL_FFT 4 -DECL_FFT 4, _interleave -%endif - -INIT_XMM sse -%undef mulps -%undef addps -%undef subps -%undef unpcklps -%undef unpckhps - -%macro PREROTATER 5 ;-2*k, 2*k, input+n4, tcos+n8, tsin+n8 -%if mmsize == 8 ; j*2+2-n4, n4-2-j*2, input+n4, tcos+n8, tsin+n8 - PSWAPD m0, [%3+%2*4] - movq m2, [%3+%1*4-8] - movq m3, m0 - punpckldq m0, m2 - punpckhdq m2, m3 - movd m1, [%4+%1*2-4] ; tcos[j] - movd m3, [%4+%2*2] ; tcos[n4-j-1] - punpckldq m1, [%5+%1*2-4] ; tsin[j] - punpckldq m3, [%5+%2*2] ; tsin[n4-j-1] - - mova m4, m0 - PSWAPD m5, m1 - pfmul m0, m1 - pfmul m4, m5 - mova m6, m2 - PSWAPD m5, m3 - pfmul m2, m3 - pfmul m6, m5 -%if cpuflag(3dnowext) - pfpnacc m0, m4 - pfpnacc m2, m6 -%else - SBUTTERFLY dq, 0, 4, 1 - SBUTTERFLY dq, 2, 6, 3 - pxor m4, m7 - pxor m6, m7 - pfadd m0, m4 - pfadd m2, m6 -%endif -%else - movaps xmm0, [%3+%2*4] - movaps xmm1, [%3+%1*4-0x10] - movaps xmm2, xmm0 - shufps xmm0, xmm1, 0x88 - shufps xmm1, xmm2, 0x77 - movlps xmm4, [%4+%2*2] - movlps xmm5, [%5+%2*2+0x0] - movhps xmm4, [%4+%1*2-0x8] - movhps xmm5, [%5+%1*2-0x8] - movaps xmm2, xmm0 - movaps xmm3, xmm1 - mulps xmm0, xmm5 - mulps xmm1, xmm4 - mulps xmm2, xmm4 - mulps xmm3, xmm5 - subps xmm1, xmm0 - addps xmm2, xmm3 - movaps xmm0, xmm1 - unpcklps xmm1, xmm2 - unpckhps xmm0, xmm2 -%endif -%endmacro - -%macro CMUL 6 ;j, xmm0, xmm1, 3, 4, 5 - mulps m6, %3, [%5+%1] - mulps m7, %2, [%5+%1] - mulps %2, %2, [%6+%1] - mulps %3, %3, [%6+%1] - subps %2, %2, m6 - addps %3, %3, m7 -%endmacro - -%macro POSROTATESHUF_AVX 5 ;j, k, z+n8, tcos+n8, tsin+n8 -.post: - vmovaps ymm1, [%3+%1*2] - vmovaps ymm0, [%3+%1*2+0x20] - vmovaps ymm3, [%3+%2*2] - vmovaps ymm2, [%3+%2*2+0x20] - - CMUL %1, ymm0, ymm1, %3, %4, %5 - CMUL %2, ymm2, ymm3, %3, %4, %5 - vshufps ymm1, ymm1, ymm1, 0x1b - vshufps ymm3, ymm3, ymm3, 0x1b - vperm2f128 ymm1, ymm1, ymm1, 0x01 - vperm2f128 ymm3, ymm3, ymm3, 0x01 - vunpcklps ymm6, ymm2, ymm1 - vunpckhps ymm4, ymm2, ymm1 - vunpcklps ymm7, ymm0, ymm3 - vunpckhps ymm5, ymm0, ymm3 - - vextractf128 [%3+%1*2], ymm7, 0 - vextractf128 [%3+%1*2+0x10], ymm5, 0 - vextractf128 [%3+%1*2+0x20], ymm7, 1 - vextractf128 [%3+%1*2+0x30], ymm5, 1 - - vextractf128 [%3+%2*2], ymm6, 0 - vextractf128 [%3+%2*2+0x10], ymm4, 0 - vextractf128 [%3+%2*2+0x20], ymm6, 1 - vextractf128 [%3+%2*2+0x30], ymm4, 1 - sub %2, 0x20 - add %1, 0x20 - jl .post -%endmacro - -%macro POSROTATESHUF 5 ;j, k, z+n8, tcos+n8, tsin+n8 -.post: - movaps xmm1, [%3+%1*2] - movaps xmm0, [%3+%1*2+0x10] - CMUL %1, xmm0, xmm1, %3, %4, %5 - movaps xmm5, [%3+%2*2] - movaps xmm4, [%3+%2*2+0x10] - CMUL %2, xmm4, xmm5, %3, %4, %5 - shufps xmm1, xmm1, 0x1b - shufps xmm5, xmm5, 0x1b - movaps xmm6, xmm4 - unpckhps xmm4, xmm1 - unpcklps xmm6, xmm1 - movaps xmm2, xmm0 - unpcklps xmm0, xmm5 - unpckhps xmm2, xmm5 - movaps [%3+%2*2], xmm6 - movaps [%3+%2*2+0x10], xmm4 - movaps [%3+%1*2], xmm0 - movaps [%3+%1*2+0x10], xmm2 - sub %2, 0x10 - add %1, 0x10 - jl .post -%endmacro - -%macro CMUL_3DNOW 6 - mova m6, [%1+%2*2] - mova %3, [%1+%2*2+8] - mova %4, m6 - mova m7, %3 - pfmul m6, [%5+%2] - pfmul %3, [%6+%2] - pfmul %4, [%6+%2] - pfmul m7, [%5+%2] - pfsub %3, m6 - pfadd %4, m7 -%endmacro - -%macro POSROTATESHUF_3DNOW 5 ;j, k, z+n8, tcos+n8, tsin+n8 -.post: - CMUL_3DNOW %3, %1, m0, m1, %4, %5 - CMUL_3DNOW %3, %2, m2, m3, %4, %5 - movd [%3+%1*2+ 0], m0 - movd [%3+%2*2+12], m1 - movd [%3+%2*2+ 0], m2 - movd [%3+%1*2+12], m3 - psrlq m0, 32 - psrlq m1, 32 - psrlq m2, 32 - psrlq m3, 32 - movd [%3+%1*2+ 8], m0 - movd [%3+%2*2+ 4], m1 - movd [%3+%2*2+ 8], m2 - movd [%3+%1*2+ 4], m3 - sub %2, 8 - add %1, 8 - jl .post -%endmacro - -%macro DECL_IMDCT 1 -cglobal imdct_half, 3,12,8; FFTContext *s, FFTSample *output, const FFTSample *input -%if ARCH_X86_64 -%define rrevtab r7 -%define rtcos r8 -%define rtsin r9 -%else -%define rrevtab r6 -%define rtsin r6 -%define rtcos r5 -%endif - mov r3d, [r0+FFTContext.mdctsize] - add r2, r3 - shr r3, 1 - mov rtcos, [r0+FFTContext.tcos] - mov rtsin, [r0+FFTContext.tsin] - add rtcos, r3 - add rtsin, r3 -%if ARCH_X86_64 == 0 - push rtcos - push rtsin -%endif - shr r3, 1 - mov rrevtab, [r0+FFTContext.revtab] - add rrevtab, r3 -%if ARCH_X86_64 == 0 - push rrevtab -%endif - -%if mmsize == 8 - sub r3, 2 -%else - sub r3, 4 -%endif -%if ARCH_X86_64 || mmsize == 8 - xor r4, r4 - sub r4, r3 -%endif -%if notcpuflag(3dnowext) && mmsize == 8 - movd m7, [ps_m1m1m1m1] -%endif -.pre: -%if ARCH_X86_64 == 0 -;unspill -%if mmsize != 8 - xor r4, r4 - sub r4, r3 -%endif - mov rtcos, [esp+8] - mov rtsin, [esp+4] -%endif - - PREROTATER r4, r3, r2, rtcos, rtsin -%if mmsize == 8 - mov r6, [esp] ; rrevtab = ptr+n8 - movzx r5, word [rrevtab+r4-2] ; rrevtab[j] - movzx r6, word [rrevtab+r3] ; rrevtab[n4-j-1] - mova [r1+r5*8], m0 - mova [r1+r6*8], m2 - add r4, 2 - sub r3, 2 -%else -%if ARCH_X86_64 - movzx r5, word [rrevtab+r4-4] - movzx r6, word [rrevtab+r4-2] - movzx r10, word [rrevtab+r3] - movzx r11, word [rrevtab+r3+2] - movlps [r1+r5 *8], xmm0 - movhps [r1+r6 *8], xmm0 - movlps [r1+r10*8], xmm1 - movhps [r1+r11*8], xmm1 - add r4, 4 -%else - mov r6, [esp] - movzx r5, word [r6+r4-4] - movzx r4, word [r6+r4-2] - movlps [r1+r5*8], xmm0 - movhps [r1+r4*8], xmm0 - movzx r5, word [r6+r3] - movzx r4, word [r6+r3+2] - movlps [r1+r5*8], xmm1 - movhps [r1+r4*8], xmm1 -%endif - sub r3, 4 -%endif - jns .pre - - mov r5, r0 - mov r6, r1 - mov r0, r1 - mov r1d, [r5+FFTContext.nbits] - - FFT_DISPATCH SUFFIX, r1 - - mov r0d, [r5+FFTContext.mdctsize] - add r6, r0 - shr r0, 1 -%if ARCH_X86_64 == 0 -%define rtcos r2 -%define rtsin r3 - mov rtcos, [esp+8] - mov rtsin, [esp+4] -%endif - neg r0 - mov r1, -mmsize - sub r1, r0 - %1 r0, r1, r6, rtcos, rtsin -%if ARCH_X86_64 == 0 - add esp, 12 -%endif -%if mmsize == 8 - femms -%endif - RET -%endmacro - -DECL_IMDCT POSROTATESHUF - -%if ARCH_X86_32 -INIT_MMX 3dnow -DECL_IMDCT POSROTATESHUF_3DNOW - -INIT_MMX 3dnowext -DECL_IMDCT POSROTATESHUF_3DNOW -%endif - -INIT_YMM avx -DECL_IMDCT POSROTATESHUF_AVX diff --git a/media/libav/libavcodec/x86/fft.h b/media/libav/libavcodec/x86/fft.h deleted file mode 100644 index a60495683..000000000 --- a/media/libav/libavcodec/x86/fft.h +++ /dev/null @@ -1,38 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_X86_FFT_H -#define AVCODEC_X86_FFT_H - -#include "libavcodec/fft.h" - -void ff_fft_permute_sse(FFTContext *s, FFTComplex *z); -void ff_fft_calc_avx(FFTContext *s, FFTComplex *z); -void ff_fft_calc_sse(FFTContext *s, FFTComplex *z); -void ff_fft_calc_3dnow(FFTContext *s, FFTComplex *z); -void ff_fft_calc_3dnowext(FFTContext *s, FFTComplex *z); - -void ff_imdct_calc_3dnow(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_3dnow(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_calc_3dnowext(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_3dnowext(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_calc_sse(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_sse(FFTContext *s, FFTSample *output, const FFTSample *input); -void ff_imdct_half_avx(FFTContext *s, FFTSample *output, const FFTSample *input); - -#endif /* AVCODEC_X86_FFT_H */ diff --git a/media/libav/libavcodec/x86/fft_init.c b/media/libav/libavcodec/x86/fft_init.c deleted file mode 100644 index 7ca72c54a..000000000 --- a/media/libav/libavcodec/x86/fft_init.c +++ /dev/null @@ -1,57 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "libavutil/attributes.h" -#include "libavutil/cpu.h" -#include "libavutil/x86/cpu.h" -#include "fft.h" - -av_cold void ff_fft_init_x86(FFTContext *s) -{ - int cpu_flags = av_get_cpu_flags(); - -#if ARCH_X86_32 - if (EXTERNAL_AMD3DNOW(cpu_flags)) { - /* 3DNow! for K6-2/3 */ - s->imdct_calc = ff_imdct_calc_3dnow; - s->imdct_half = ff_imdct_half_3dnow; - s->fft_calc = ff_fft_calc_3dnow; - } - if (EXTERNAL_AMD3DNOWEXT(cpu_flags)) { - /* 3DNowEx for K7 */ - s->imdct_calc = ff_imdct_calc_3dnowext; - s->imdct_half = ff_imdct_half_3dnowext; - s->fft_calc = ff_fft_calc_3dnowext; - } -#endif - if (EXTERNAL_SSE(cpu_flags)) { - /* SSE for P3/P4/K8 */ - s->imdct_calc = ff_imdct_calc_sse; - s->imdct_half = ff_imdct_half_sse; - s->fft_permute = ff_fft_permute_sse; - s->fft_calc = ff_fft_calc_sse; - s->fft_permutation = FF_FFT_PERM_SWAP_LSBS; - } - if (EXTERNAL_AVX(cpu_flags) && s->nbits >= 5) { - /* AVX for SB */ - s->imdct_half = ff_imdct_half_avx; - s->fft_calc = ff_fft_calc_avx; - s->fft_permutation = FF_FFT_PERM_AVX; - } -} diff --git a/media/libav/libavcodec/x86/mathops.h b/media/libav/libavcodec/x86/mathops.h deleted file mode 100644 index a62094ee9..000000000 --- a/media/libav/libavcodec/x86/mathops.h +++ /dev/null @@ -1,128 +0,0 @@ -/* - * simple math operations - * Copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> et al - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_X86_MATHOPS_H -#define AVCODEC_X86_MATHOPS_H - -#include "config.h" -#include "libavutil/common.h" - -#if HAVE_INLINE_ASM - -#if ARCH_X86_32 - -#define MULL MULL -static av_always_inline av_const int MULL(int a, int b, unsigned shift) -{ - int rt, dummy; - __asm__ ( - "imull %3 \n\t" - "shrdl %4, %%edx, %%eax \n\t" - :"=a"(rt), "=d"(dummy) - :"a"(a), "rm"(b), "ci"((uint8_t)shift) - ); - return rt; -} - -#define MULH MULH -static av_always_inline av_const int MULH(int a, int b) -{ - int rt, dummy; - __asm__ ( - "imull %3" - :"=d"(rt), "=a"(dummy) - :"a"(a), "rm"(b) - ); - return rt; -} - -#define MUL64 MUL64 -static av_always_inline av_const int64_t MUL64(int a, int b) -{ - int64_t rt; - __asm__ ( - "imull %2" - :"=A"(rt) - :"a"(a), "rm"(b) - ); - return rt; -} - -#endif /* ARCH_X86_32 */ - -#if HAVE_I686 -/* median of 3 */ -#define mid_pred mid_pred -static inline av_const int mid_pred(int a, int b, int c) -{ - int i=b; - __asm__ ( - "cmp %2, %1 \n\t" - "cmovg %1, %0 \n\t" - "cmovg %2, %1 \n\t" - "cmp %3, %1 \n\t" - "cmovl %3, %1 \n\t" - "cmp %1, %0 \n\t" - "cmovg %1, %0 \n\t" - :"+&r"(i), "+&r"(a) - :"r"(b), "r"(c) - ); - return i; -} - -#define COPY3_IF_LT(x, y, a, b, c, d)\ -__asm__ volatile(\ - "cmpl %0, %3 \n\t"\ - "cmovl %3, %0 \n\t"\ - "cmovl %4, %1 \n\t"\ - "cmovl %5, %2 \n\t"\ - : "+&r" (x), "+&r" (a), "+r" (c)\ - : "r" (y), "r" (b), "r" (d)\ -); -#endif /* HAVE_I686 */ - -#define MASK_ABS(mask, level) \ - __asm__ ("cltd \n\t" \ - "xorl %1, %0 \n\t" \ - "subl %1, %0 \n\t" \ - : "+a"(level), "=&d"(mask)) - -// avoid +32 for shift optimization (gcc should do that ...) -#define NEG_SSR32 NEG_SSR32 -static inline int32_t NEG_SSR32( int32_t a, int8_t s){ - __asm__ ("sarl %1, %0\n\t" - : "+r" (a) - : "ic" ((uint8_t)(-s)) - ); - return a; -} - -#define NEG_USR32 NEG_USR32 -static inline uint32_t NEG_USR32(uint32_t a, int8_t s){ - __asm__ ("shrl %1, %0\n\t" - : "+r" (a) - : "ic" ((uint8_t)(-s)) - ); - return a; -} - -#endif /* HAVE_INLINE_ASM */ -#endif /* AVCODEC_X86_MATHOPS_H */ diff --git a/media/libav/libavcommon.mozbuild b/media/libav/libavcommon.mozbuild deleted file mode 100644 index ac1a2bf0e..000000000 --- a/media/libav/libavcommon.mozbuild +++ /dev/null @@ -1,50 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Add assembler flags and includes -if CONFIG['LIBAV_FFT_ASFLAGS']: - ASFLAGS += CONFIG['LIBAV_FFT_ASFLAGS'] - ASFLAGS += ['-I%s/media/libav' % TOPSRCDIR] - USE_YASM = True - -if CONFIG['OS_ARCH'] == 'WINNT': - # Fix inline symbols and math defines for windows. - DEFINES['_USE_MATH_DEFINES'] = True - DEFINES['inline'] = "__inline" - ASFLAGS += ['-Pconfig_win.asm'] - # 32-bit windows need to prefix symbols with an underscore. - if CONFIG['CPU_ARCH'] == 'x86': - ASFLAGS += ['-DPREFIX'] -elif CONFIG['OS_ARCH'] == 'Darwin': - # 32/64-bit macosx assemblers need to prefix symbols with an underscore. - ASFLAGS += ['-Pconfig_darwin.asm', '-DPREFIX'] -else: - # Default to unix, similar to how ASFLAGS setup works in configure.in - ASFLAGS += ['-Pconfig_unix.asm'] - -LOCAL_INCLUDES += ['/media/libav'] - -# Suppress warnings in third-party code. -if CONFIG['GNU_CC'] or CONFIG['CLANG_CL']: - CFLAGS += [ - '-Wno-parentheses', - '-Wno-pointer-sign', - '-Wno-sign-compare', - '-Wno-switch', - '-Wno-type-limits', - ] -if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: - CFLAGS += [ - '-Wno-incompatible-pointer-types-discards-qualifiers', - '-Wno-logical-op-parentheses', - ] -if CONFIG['_MSC_VER'] and not CONFIG['CLANG_CL']: - CFLAGS += [ - '-wd4090', # 'return' : different 'const' qualifiers - '-wd4018', # '>' : signed/unsigned mismatch - '-wd4305', # 'initializing' : truncation from '__int64' to 'double' - ] - -FINAL_LIBRARY = 'lgpllibs' diff --git a/media/libav/libavutil/attributes.h b/media/libav/libavutil/attributes.h deleted file mode 100644 index d7f2bb5c6..000000000 --- a/media/libav/libavutil/attributes.h +++ /dev/null @@ -1,126 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Macro definitions for various function/variable attributes - */ - -#ifndef AVUTIL_ATTRIBUTES_H -#define AVUTIL_ATTRIBUTES_H - -#ifdef __GNUC__ -# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > x || __GNUC__ == x && __GNUC_MINOR__ >= y) -#else -# define AV_GCC_VERSION_AT_LEAST(x,y) 0 -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_always_inline __attribute__((always_inline)) inline -#elif defined(_MSC_VER) -# define av_always_inline __forceinline -#else -# define av_always_inline inline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_noinline __attribute__((noinline)) -#elif defined(_MSC_VER) -# define av_noinline __declspec(noinline) -#else -# define av_noinline -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_pure __attribute__((pure)) -#else -# define av_pure -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,6) -# define av_const __attribute__((const)) -#else -# define av_const -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) -# define av_cold __attribute__((cold)) -#else -# define av_cold -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__) -# define av_flatten __attribute__((flatten)) -#else -# define av_flatten -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define attribute_deprecated __attribute__((deprecated)) -#elif defined(_MSC_VER) -# define attribute_deprecated __declspec(deprecated) -#else -# define attribute_deprecated -#endif - -#if defined(__GNUC__) -# define av_unused __attribute__((unused)) -#else -# define av_unused -#endif - -/** - * Mark a variable as used and prevent the compiler from optimizing it - * away. This is useful for variables accessed only from inline - * assembler without the compiler being aware. - */ -#if AV_GCC_VERSION_AT_LEAST(3,1) -# define av_used __attribute__((used)) -#else -# define av_used -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,3) -# define av_alias __attribute__((may_alias)) -#else -# define av_alias -#endif - -#if defined(__GNUC__) && !defined(__ICC) -# define av_uninit(x) x=x -#else -# define av_uninit(x) x -#endif - -#ifdef __GNUC__ -# define av_builtin_constant_p __builtin_constant_p -# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos))) -#else -# define av_builtin_constant_p(x) 0 -# define av_printf_format(fmtpos, attrpos) -#endif - -#if AV_GCC_VERSION_AT_LEAST(2,5) -# define av_noreturn __attribute__((noreturn)) -#else -# define av_noreturn -#endif - -#endif /* AVUTIL_ATTRIBUTES_H */ diff --git a/media/libav/libavutil/avassert.h b/media/libav/libavutil/avassert.h deleted file mode 100644 index b223d26e8..000000000 --- a/media/libav/libavutil/avassert.h +++ /dev/null @@ -1,66 +0,0 @@ -/* - * copyright (c) 2010 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple assert() macros that are a bit more flexible than ISO C assert(). - * @author Michael Niedermayer <michaelni@gmx.at> - */ - -#ifndef AVUTIL_AVASSERT_H -#define AVUTIL_AVASSERT_H - -#include <stdlib.h> -#include "avutil.h" -#include "log.h" - -/** - * assert() equivalent, that is always enabled. - */ -#define av_assert0(cond) do { \ - if (!(cond)) { \ - av_log(NULL, AV_LOG_FATAL, "Assertion %s failed at %s:%d\n", \ - AV_STRINGIFY(cond), __FILE__, __LINE__); \ - abort(); \ - } \ -} while (0) - - -/** - * assert() equivalent, that does not lie in speed critical code. - * These asserts() thus can be enabled without fearing speedloss. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 0 -#define av_assert1(cond) av_assert0(cond) -#else -#define av_assert1(cond) ((void)0) -#endif - - -/** - * assert() equivalent, that does lie in speed critical code. - */ -#if defined(ASSERT_LEVEL) && ASSERT_LEVEL > 1 -#define av_assert2(cond) av_assert0(cond) -#else -#define av_assert2(cond) ((void)0) -#endif - -#endif /* AVUTIL_AVASSERT_H */ diff --git a/media/libav/libavutil/avconfig.h b/media/libav/libavutil/avconfig.h deleted file mode 100644 index f10aa6186..000000000 --- a/media/libav/libavutil/avconfig.h +++ /dev/null @@ -1,6 +0,0 @@ -/* Generated by ffconf */ -#ifndef AVUTIL_AVCONFIG_H -#define AVUTIL_AVCONFIG_H -#define AV_HAVE_BIGENDIAN 0 -#define AV_HAVE_FAST_UNALIGNED 1 -#endif /* AVUTIL_AVCONFIG_H */ diff --git a/media/libav/libavutil/avstring.c b/media/libav/libavutil/avstring.c deleted file mode 100644 index eb5c95a01..000000000 --- a/media/libav/libavutil/avstring.c +++ /dev/null @@ -1,305 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * Copyright (c) 2007 Mans Rullgard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdarg.h> -#include <stdint.h> -#include <stdio.h> -#include <string.h> - -#include "config.h" -#include "common.h" -#include "mem.h" -#include "avstring.h" - -int av_strstart(const char *str, const char *pfx, const char **ptr) -{ - while (*pfx && *pfx == *str) { - pfx++; - str++; - } - if (!*pfx && ptr) - *ptr = str; - return !*pfx; -} - -int av_stristart(const char *str, const char *pfx, const char **ptr) -{ - while (*pfx && av_toupper((unsigned)*pfx) == av_toupper((unsigned)*str)) { - pfx++; - str++; - } - if (!*pfx && ptr) - *ptr = str; - return !*pfx; -} - -char *av_stristr(const char *s1, const char *s2) -{ - if (!*s2) - return s1; - - do - if (av_stristart(s1, s2, NULL)) - return s1; - while (*s1++); - - return NULL; -} - -char *av_strnstr(const char *haystack, const char *needle, size_t hay_length) -{ - size_t needle_len = strlen(needle); - if (!needle_len) - return haystack; - while (hay_length >= needle_len) { - hay_length--; - if (!memcmp(haystack, needle, needle_len)) - return haystack; - haystack++; - } - return NULL; -} - -size_t av_strlcpy(char *dst, const char *src, size_t size) -{ - size_t len = 0; - while (++len < size && *src) - *dst++ = *src++; - if (len <= size) - *dst = 0; - return len + strlen(src) - 1; -} - -size_t av_strlcat(char *dst, const char *src, size_t size) -{ - size_t len = strlen(dst); - if (size <= len + 1) - return len + strlen(src); - return len + av_strlcpy(dst + len, src, size - len); -} - -size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) -{ - int len = strlen(dst); - va_list vl; - - va_start(vl, fmt); - len += vsnprintf(dst + len, size > len ? size - len : 0, fmt, vl); - va_end(vl); - - return len; -} - -char *av_d2str(double d) -{ - char *str = av_malloc(16); - if (str) - snprintf(str, 16, "%f", d); - return str; -} - -#define WHITESPACES " \n\t" - -char *av_get_token(const char **buf, const char *term) -{ - char *out = av_malloc(strlen(*buf) + 1); - char *ret = out, *end = out; - const char *p = *buf; - if (!out) - return NULL; - p += strspn(p, WHITESPACES); - - while (*p && !strspn(p, term)) { - char c = *p++; - if (c == '\\' && *p) { - *out++ = *p++; - end = out; - } else if (c == '\'') { - while (*p && *p != '\'') - *out++ = *p++; - if (*p) { - p++; - end = out; - } - } else { - *out++ = c; - } - } - - do - *out-- = 0; - while (out >= end && strspn(out, WHITESPACES)); - - *buf = p; - - return ret; -} - -int av_strcasecmp(const char *a, const char *b) -{ - uint8_t c1, c2; - do { - c1 = av_tolower(*a++); - c2 = av_tolower(*b++); - } while (c1 && c1 == c2); - return c1 - c2; -} - -int av_strncasecmp(const char *a, const char *b, size_t n) -{ - const char *end = a + n; - uint8_t c1, c2; - do { - c1 = av_tolower(*a++); - c2 = av_tolower(*b++); - } while (a < end && c1 && c1 == c2); - return c1 - c2; -} - -const char *av_basename(const char *path) -{ - char *p = strrchr(path, '/'); - -#if HAVE_DOS_PATHS - char *q = strrchr(path, '\\'); - char *d = strchr(path, ':'); - - p = FFMAX3(p, q, d); -#endif - - if (!p) - return path; - - return p + 1; -} - -const char *av_dirname(char *path) -{ - char *p = strrchr(path, '/'); - -#if HAVE_DOS_PATHS - char *q = strrchr(path, '\\'); - char *d = strchr(path, ':'); - - d = d ? d + 1 : d; - - p = FFMAX3(p, q, d); -#endif - - if (!p) - return "."; - - *p = '\0'; - - return path; -} - -int av_isdigit(int c) -{ - return c >= '0' && c <= '9'; -} - -int av_isgraph(int c) -{ - return c > 32 && c < 127; -} - -int av_isspace(int c) -{ - return c == ' ' || c == '\f' || c == '\n' || c == '\r' || c == '\t' || - c == '\v'; -} - -int av_isxdigit(int c) -{ - c = av_tolower(c); - return av_isdigit(c) || (c >= 'a' && c <= 'f'); -} - -int av_match_name(const char *name, const char *names) -{ - const char *p; - int len, namelen; - - if (!name || !names) - return 0; - - namelen = strlen(name); - while ((p = strchr(names, ','))) { - len = FFMAX(p - names, namelen); - if (!av_strncasecmp(name, names, len)) - return 1; - names = p + 1; - } - return !av_strcasecmp(name, names); -} - - - -#ifdef TEST - -int main(void) -{ - int i; - const char *strings[] = { - "''", - "", - ":", - "\\", - "'", - " '' :", - " '' '' :", - "foo '' :", - "'foo'", - "foo ", - " ' foo ' ", - "foo\\", - "foo': blah:blah", - "foo\\: blah:blah", - "foo\'", - "'foo : ' :blahblah", - "\\ :blah", - " foo", - " foo ", - " foo \\ ", - "foo ':blah", - " foo bar : blahblah", - "\\f\\o\\o", - "'foo : \\ \\ ' : blahblah", - "'\\fo\\o:': blahblah", - "\\'fo\\o\\:': foo ' :blahblah" - }; - - printf("Testing av_get_token()\n"); - for (i = 0; i < FF_ARRAY_ELEMS(strings); i++) { - const char *p = strings[i]; - char *q; - printf("|%s|", p); - q = av_get_token(&p, ":"); - printf(" -> |%s|", q); - printf(" + |%s|\n", p); - av_free(q); - } - - return 0; -} - -#endif /* TEST */ diff --git a/media/libav/libavutil/avstring.h b/media/libav/libavutil/avstring.h deleted file mode 100644 index 9a18ddd89..000000000 --- a/media/libav/libavutil/avstring.h +++ /dev/null @@ -1,235 +0,0 @@ -/* - * Copyright (c) 2007 Mans Rullgard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVSTRING_H -#define AVUTIL_AVSTRING_H - -#include <stddef.h> -#include "attributes.h" - -/** - * @addtogroup lavu_string - * @{ - */ - -/** - * Return non-zero if pfx is a prefix of str. If it is, *ptr is set to - * the address of the first character in str after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_strstart(const char *str, const char *pfx, const char **ptr); - -/** - * Return non-zero if pfx is a prefix of str independent of case. If - * it is, *ptr is set to the address of the first character in str - * after the prefix. - * - * @param str input string - * @param pfx prefix to test - * @param ptr updated if the prefix is matched inside str - * @return non-zero if the prefix matches, zero otherwise - */ -int av_stristart(const char *str, const char *pfx, const char **ptr); - -/** - * Locate the first case-independent occurrence in the string haystack - * of the string needle. A zero-length string needle is considered to - * match at the start of haystack. - * - * This function is a case-insensitive version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_stristr(const char *haystack, const char *needle); - -/** - * Locate the first occurrence of the string needle in the string haystack - * where not more than hay_length characters are searched. A zero-length - * string needle is considered to match at the start of haystack. - * - * This function is a length-limited version of the standard strstr(). - * - * @param haystack string to search in - * @param needle string to search for - * @param hay_length length of string to search in - * @return pointer to the located match within haystack - * or a null pointer if no match - */ -char *av_strnstr(const char *haystack, const char *needle, size_t hay_length); - -/** - * Copy the string src to dst, but no more than size - 1 bytes, and - * null-terminate dst. - * - * This function is the same as BSD strlcpy(). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the length of src - * - * @warning since the return value is the length of src, src absolutely - * _must_ be a properly 0-terminated string, otherwise this will read beyond - * the end of the buffer and possibly crash. - */ -size_t av_strlcpy(char *dst, const char *src, size_t size); - -/** - * Append the string src to the string dst, but to a total length of - * no more than size - 1 bytes, and null-terminate dst. - * - * This function is similar to BSD strlcat(), but differs when - * size <= strlen(dst). - * - * @param dst destination buffer - * @param src source string - * @param size size of destination buffer - * @return the total length of src and dst - * - * @warning since the return value use the length of src and dst, these - * absolutely _must_ be a properly 0-terminated strings, otherwise this - * will read beyond the end of the buffer and possibly crash. - */ -size_t av_strlcat(char *dst, const char *src, size_t size); - -/** - * Append output to a string, according to a format. Never write out of - * the destination buffer, and always put a terminating 0 within - * the buffer. - * @param dst destination buffer (string to which the output is - * appended) - * @param size total size of the destination buffer - * @param fmt printf-compatible format string, specifying how the - * following parameters are used - * @return the length of the string that would have been generated - * if enough space had been available - */ -size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4); - -/** - * Convert a number to a av_malloced string. - */ -char *av_d2str(double d); - -/** - * Unescape the given string until a non escaped terminating char, - * and return the token corresponding to the unescaped string. - * - * The normal \ and ' escaping is supported. Leading and trailing - * whitespaces are removed, unless they are escaped with '\' or are - * enclosed between ''. - * - * @param buf the buffer to parse, buf will be updated to point to the - * terminating char - * @param term a 0-terminated list of terminating chars - * @return the malloced unescaped string, which must be av_freed by - * the user, NULL in case of allocation failure - */ -char *av_get_token(const char **buf, const char *term); - -/** - * Locale-independent conversion of ASCII isdigit. - */ -int av_isdigit(int c); - -/** - * Locale-independent conversion of ASCII isgraph. - */ -int av_isgraph(int c); - -/** - * Locale-independent conversion of ASCII isspace. - */ -int av_isspace(int c); - -/** - * Locale-independent conversion of ASCII characters to uppercase. - */ -static inline int av_toupper(int c) -{ - if (c >= 'a' && c <= 'z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII characters to lowercase. - */ -static inline int av_tolower(int c) -{ - if (c >= 'A' && c <= 'Z') - c ^= 0x20; - return c; -} - -/** - * Locale-independent conversion of ASCII isxdigit. - */ -int av_isxdigit(int c); - -/* - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strcasecmp(const char *a, const char *b); - -/** - * Locale-independent case-insensitive compare. - * @note This means only ASCII-range characters are case-insensitive - */ -int av_strncasecmp(const char *a, const char *b, size_t n); - - -/** - * Thread safe basename. - * @param path the path, on DOS both \ and / are considered separators. - * @return pointer to the basename substring. - */ -const char *av_basename(const char *path); - -/** - * Thread safe dirname. - * @param path the path, on DOS both \ and / are considered separators. - * @return the path with the separator replaced by the string terminator or ".". - * @note the function may change the input string. - */ -const char *av_dirname(char *path); - - -/** - * Match instances of a name in a comma-separated list of names. - * @param name Name to look for. - * @param names List of names. - * @return 1 on match, 0 otherwise. - */ -int av_match_name(const char *name, const char *names); - -/** - * @} - */ - -#endif /* AVUTIL_AVSTRING_H */ diff --git a/media/libav/libavutil/avutil.h b/media/libav/libavutil/avutil.h deleted file mode 100644 index f056415f0..000000000 --- a/media/libav/libavutil/avutil.h +++ /dev/null @@ -1,290 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_AVUTIL_H -#define AVUTIL_AVUTIL_H - -/** - * @file - * external API header - */ - -/** - * @mainpage - * - * @section libav_intro Introduction - * - * This document describes the usage of the different libraries - * provided by Libav. - * - * @li @ref libavc "libavcodec" encoding/decoding library - * @li @ref lavfi "libavfilter" graph-based frame editing library - * @li @ref libavf "libavformat" I/O and muxing/demuxing library - * @li @ref lavd "libavdevice" special devices muxing/demuxing library - * @li @ref lavu "libavutil" common utility library - * @li @ref lavr "libavresample" audio resampling, format conversion and mixing - * @li @ref libsws "libswscale" color conversion and scaling library - * - * @section libav_versioning Versioning and compatibility - * - * Each of the Libav libraries contains a version.h header, which defines a - * major, minor and micro version number with the - * <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version - * number is incremented with backward incompatible changes - e.g. removing - * parts of the public API, reordering public struct members, etc. The minor - * version number is incremented for backward compatible API changes or major - * new features - e.g. adding a new public function or a new decoder. The micro - * version number is incremented for smaller changes that a calling program - * might still want to check for - e.g. changing behavior in a previously - * unspecified situation. - * - * Libav guarantees backward API and ABI compatibility for each library as long - * as its major version number is unchanged. This means that no public symbols - * will be removed or renamed. Types and names of the public struct members and - * values of public macros and enums will remain the same (unless they were - * explicitly declared as not part of the public API). Documented behavior will - * not change. - * - * In other words, any correct program that works with a given Libav snapshot - * should work just as well without any changes with any later snapshot with the - * same major versions. This applies to both rebuilding the program against new - * Libav versions or to replacing the dynamic Libav libraries that a program - * links against. - * - * However, new public symbols may be added and new members may be appended to - * public structs whose size is not part of public ABI (most public structs in - * Libav). New macros and enum values may be added. Behavior in undocumented - * situations may change slightly (and be documented). All those are accompanied - * by an entry in doc/APIchanges and incrementing either the minor or micro - * version number. - */ - -/** - * @defgroup lavu Common utility functions - * - * @brief - * libavutil contains the code shared across all the other Libav - * libraries - * - * @note In order to use the functions provided by avutil you must include - * the specific header. - * - * @{ - * - * @defgroup lavu_crypto Crypto and Hashing - * - * @{ - * @} - * - * @defgroup lavu_math Maths - * @{ - * - * @} - * - * @defgroup lavu_string String Manipulation - * - * @{ - * - * @} - * - * @defgroup lavu_mem Memory Management - * - * @{ - * - * @} - * - * @defgroup lavu_data Data Structures - * @{ - * - * @} - * - * @defgroup lavu_audio Audio related - * - * @{ - * - * @} - * - * @defgroup lavu_error Error Codes - * - * @{ - * - * @} - * - * @defgroup lavu_log Logging Facility - * - * @{ - * - * @} - * - * @defgroup lavu_misc Other - * - * @{ - * - * @defgroup lavu_internal Internal - * - * Not exported functions, for internal usage only - * - * @{ - * - * @} - * - * @defgroup preproc_misc Preprocessor String Macros - * - * @{ - * - * @} - */ - - -/** - * @addtogroup lavu_ver - * @{ - */ - -/** - * Return the LIBAVUTIL_VERSION_INT constant. - */ -unsigned avutil_version(void); - -/** - * Return the libavutil build-time configuration. - */ -const char *avutil_configuration(void); - -/** - * Return the libavutil license. - */ -const char *avutil_license(void); - -/** - * @} - */ - -/** - * @addtogroup lavu_media Media Type - * @brief Media Type - */ - -enum AVMediaType { - AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA - AVMEDIA_TYPE_VIDEO, - AVMEDIA_TYPE_AUDIO, - AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous - AVMEDIA_TYPE_SUBTITLE, - AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse - AVMEDIA_TYPE_NB -}; - -/** - * @defgroup lavu_const Constants - * @{ - * - * @defgroup lavu_enc Encoding specific - * - * @note those definition should move to avcodec - * @{ - */ - -#define FF_LAMBDA_SHIFT 7 -#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT) -#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda -#define FF_LAMBDA_MAX (256*128-1) - -#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove - -/** - * @} - * @defgroup lavu_time Timestamp specific - * - * Libav internal timebase and timestamp definitions - * - * @{ - */ - -/** - * @brief Undefined timestamp value - * - * Usually reported by demuxer that work on containers that do not provide - * either pts or dts. - */ - -#define AV_NOPTS_VALUE INT64_C(0x8000000000000000) - -/** - * Internal time base represented as integer - */ - -#define AV_TIME_BASE 1000000 - -/** - * Internal time base represented as fractional value - */ - -#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE} - -/** - * @} - * @} - * @defgroup lavu_picture Image related - * - * AVPicture types, pixel formats and basic image planes manipulation. - * - * @{ - */ - -enum AVPictureType { - AV_PICTURE_TYPE_I = 1, ///< Intra - AV_PICTURE_TYPE_P, ///< Predicted - AV_PICTURE_TYPE_B, ///< Bi-dir predicted - AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG4 - AV_PICTURE_TYPE_SI, ///< Switching Intra - AV_PICTURE_TYPE_SP, ///< Switching Predicted - AV_PICTURE_TYPE_BI, ///< BI type -}; - -/** - * Return a single letter to describe the given picture type - * pict_type. - * - * @param[in] pict_type the picture type @return a single character - * representing the picture type, '?' if pict_type is unknown - */ -char av_get_picture_type_char(enum AVPictureType pict_type); - -/** - * @} - */ - -#include "error.h" -#include "rational.h" -#include "version.h" -#include "macros.h" - -/** - * Return the fractional representation of the internal time base. - */ -AVRational av_get_time_base_q(void); - -/** - * @} - * @} - */ - -#endif /* AVUTIL_AVUTIL_H */ diff --git a/media/libav/libavutil/bswap.h b/media/libav/libavutil/bswap.h deleted file mode 100644 index 93a6016b8..000000000 --- a/media/libav/libavutil/bswap.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * byte swapping routines - */ - -#ifndef AVUTIL_BSWAP_H -#define AVUTIL_BSWAP_H - -#include <stdint.h> -#include "libavutil/avconfig.h" -#include "attributes.h" - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_AARCH64 -# include "aarch64/bswap.h" -#elif ARCH_ARM -# include "arm/bswap.h" -#elif ARCH_AVR32 -# include "avr32/bswap.h" -#elif ARCH_BFIN -# include "bfin/bswap.h" -#elif ARCH_SH4 -# include "sh4/bswap.h" -#elif ARCH_X86 -# include "x86/bswap.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -#define AV_BSWAP16C(x) (((x) << 8 & 0xff00) | ((x) >> 8 & 0x00ff)) -#define AV_BSWAP32C(x) (AV_BSWAP16C(x) << 16 | AV_BSWAP16C((x) >> 16)) -#define AV_BSWAP64C(x) (AV_BSWAP32C(x) << 32 | AV_BSWAP32C((x) >> 32)) - -#define AV_BSWAPC(s, x) AV_BSWAP##s##C(x) - -#ifndef av_bswap16 -static av_always_inline av_const uint16_t av_bswap16(uint16_t x) -{ - x= (x>>8) | (x<<8); - return x; -} -#endif - -#ifndef av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ - return AV_BSWAP32C(x); -} -#endif - -#ifndef av_bswap64 -static inline uint64_t av_const av_bswap64(uint64_t x) -{ - return (uint64_t)av_bswap32(x) << 32 | av_bswap32(x >> 32); -} -#endif - -// be2ne ... big-endian to native-endian -// le2ne ... little-endian to native-endian - -#if AV_HAVE_BIGENDIAN -#define av_be2ne16(x) (x) -#define av_be2ne32(x) (x) -#define av_be2ne64(x) (x) -#define av_le2ne16(x) av_bswap16(x) -#define av_le2ne32(x) av_bswap32(x) -#define av_le2ne64(x) av_bswap64(x) -#define AV_BE2NEC(s, x) (x) -#define AV_LE2NEC(s, x) AV_BSWAPC(s, x) -#else -#define av_be2ne16(x) av_bswap16(x) -#define av_be2ne32(x) av_bswap32(x) -#define av_be2ne64(x) av_bswap64(x) -#define av_le2ne16(x) (x) -#define av_le2ne32(x) (x) -#define av_le2ne64(x) (x) -#define AV_BE2NEC(s, x) AV_BSWAPC(s, x) -#define AV_LE2NEC(s, x) (x) -#endif - -#define AV_BE2NE16C(x) AV_BE2NEC(16, x) -#define AV_BE2NE32C(x) AV_BE2NEC(32, x) -#define AV_BE2NE64C(x) AV_BE2NEC(64, x) -#define AV_LE2NE16C(x) AV_LE2NEC(16, x) -#define AV_LE2NE32C(x) AV_LE2NEC(32, x) -#define AV_LE2NE64C(x) AV_LE2NEC(64, x) - -#endif /* AVUTIL_BSWAP_H */ diff --git a/media/libav/libavutil/common.h b/media/libav/libavutil/common.h deleted file mode 100644 index eb40e1299..000000000 --- a/media/libav/libavutil/common.h +++ /dev/null @@ -1,406 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal and external API header - */ - -#ifndef AVUTIL_COMMON_H -#define AVUTIL_COMMON_H - -#include <errno.h> -#include <inttypes.h> -#include <limits.h> -#include <math.h> -#include <stdint.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "attributes.h" -#include "version.h" -#include "libavutil/avconfig.h" - -#if AV_HAVE_BIGENDIAN -# define AV_NE(be, le) (be) -#else -# define AV_NE(be, le) (le) -#endif - -//rounded division & shift -#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b)) -/* assume b>0 */ -#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b)) -#define FFABS(a) ((a) >= 0 ? (a) : (-(a))) -#define FFSIGN(a) ((a) > 0 ? 1 : -1) - -#define FFMAX(a,b) ((a) > (b) ? (a) : (b)) -#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c) -#define FFMIN(a,b) ((a) > (b) ? (b) : (a)) -#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c) - -#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0) -#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0])) -#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1)) - -/* misc math functions */ - -#if FF_API_AV_REVERSE -extern attribute_deprecated const uint8_t av_reverse[256]; -#endif - -#ifdef HAVE_AV_CONFIG_H -# include "config.h" -# include "intmath.h" -#endif - -/* Pull in unguarded fallback defines at the end of this file. */ -#include "common.h" - -#ifndef av_log2 -av_const int av_log2(unsigned v); -#endif - -#ifndef av_log2_16bit -av_const int av_log2_16bit(unsigned v); -#endif - -/** - * Clip a signed integer value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const int av_clip_c(int a, int amin, int amax) -{ - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** - * Clip a signed integer value into the 0-255 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint8_t av_clip_uint8_c(int a) -{ - if (a&(~0xFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -128,127 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int8_t av_clip_int8_c(int a) -{ - if ((a+0x80) & ~0xFF) return (a>>31) ^ 0x7F; - else return a; -} - -/** - * Clip a signed integer value into the 0-65535 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const uint16_t av_clip_uint16_c(int a) -{ - if (a&(~0xFFFF)) return (-a)>>31; - else return a; -} - -/** - * Clip a signed integer value into the -32768,32767 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int16_t av_clip_int16_c(int a) -{ - if ((a+0x8000) & ~0xFFFF) return (a>>31) ^ 0x7FFF; - else return a; -} - -/** - * Clip a signed 64-bit integer value into the -2147483648,2147483647 range. - * @param a value to clip - * @return clipped value - */ -static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a) -{ - if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF; - else return a; -} - -/** - * Clip a signed integer to an unsigned power of two range. - * @param a value to clip - * @param p bit position to clip at - * @return clipped value - */ -static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p) -{ - if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1); - else return a; -} - -/** - * Add two signed 32-bit values with saturation. - * - * @param a one value - * @param b another value - * @return sum with signed saturation - */ -static av_always_inline int av_sat_add32_c(int a, int b) -{ - return av_clipl_int32((int64_t)a + b); -} - -/** - * Add a doubled value to another value with saturation at both stages. - * - * @param a first value - * @param b value doubled and added to a - * @return sum with signed saturation - */ -static av_always_inline int av_sat_dadd32_c(int a, int b) -{ - return av_sat_add32(a, av_sat_add32(b, b)); -} - -/** - * Clip a float value into the amin-amax range. - * @param a value to clip - * @param amin minimum value of the clip range - * @param amax maximum value of the clip range - * @return clipped value - */ -static av_always_inline av_const float av_clipf_c(float a, float amin, float amax) -{ - if (a < amin) return amin; - else if (a > amax) return amax; - else return a; -} - -/** Compute ceil(log2(x)). - * @param x value used to compute ceil(log2(x)) - * @return computed ceiling of log2(x) - */ -static av_always_inline av_const int av_ceil_log2_c(int x) -{ - return av_log2((x - 1) << 1); -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount_c(uint32_t x) -{ - x -= (x >> 1) & 0x55555555; - x = (x & 0x33333333) + ((x >> 2) & 0x33333333); - x = (x + (x >> 4)) & 0x0F0F0F0F; - x += x >> 8; - return (x + (x >> 16)) & 0x3F; -} - -/** - * Count number of bits set to one in x - * @param x value to count bits of - * @return the number of bits set to one in x - */ -static av_always_inline av_const int av_popcount64_c(uint64_t x) -{ - return av_popcount(x) + av_popcount(x >> 32); -} - -#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24)) -#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24)) - -/** - * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_BYTE Expression reading one byte from the input. - * Evaluated up to 7 times (4 for the currently - * assigned Unicode range). With a memory buffer - * input, this could be *ptr++. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF8(val, GET_BYTE, ERROR)\ - val= GET_BYTE;\ - {\ - uint32_t top = (val & 128) >> 1;\ - if ((val & 0xc0) == 0x80)\ - ERROR\ - while (val & top) {\ - int tmp= GET_BYTE - 128;\ - if(tmp>>6)\ - ERROR\ - val= (val<<6) + tmp;\ - top <<= 5;\ - }\ - val &= (top << 1) - 1;\ - } - -/** - * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form. - * - * @param val Output value, must be an lvalue of type uint32_t. - * @param GET_16BIT Expression returning two bytes of UTF-16 data converted - * to native byte order. Evaluated one or two times. - * @param ERROR Expression to be evaluated on invalid input, - * typically a goto statement. - */ -#define GET_UTF16(val, GET_16BIT, ERROR)\ - val = GET_16BIT;\ - {\ - unsigned int hi = val - 0xD800;\ - if (hi < 0x800) {\ - val = GET_16BIT - 0xDC00;\ - if (val > 0x3FFU || hi > 0x3FFU)\ - ERROR\ - val += (hi<<10) + 0x10000;\ - }\ - }\ - -/** - * @def PUT_UTF8(val, tmp, PUT_BYTE) - * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint8_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_BYTE. - * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination. - * It could be a function or a statement, and uses tmp as the input byte. - * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be - * executed up to 4 times for values in the valid UTF-8 range and up to - * 7 times in the general case, depending on the length of the converted - * Unicode character. - */ -#define PUT_UTF8(val, tmp, PUT_BYTE)\ - {\ - int bytes, shift;\ - uint32_t in = val;\ - if (in < 0x80) {\ - tmp = in;\ - PUT_BYTE\ - } else {\ - bytes = (av_log2(in) + 4) / 5;\ - shift = (bytes - 1) * 6;\ - tmp = (256 - (256 >> bytes)) | (in >> shift);\ - PUT_BYTE\ - while (shift >= 6) {\ - shift -= 6;\ - tmp = 0x80 | ((in >> shift) & 0x3f);\ - PUT_BYTE\ - }\ - }\ - } - -/** - * @def PUT_UTF16(val, tmp, PUT_16BIT) - * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes). - * @param val is an input-only argument and should be of type uint32_t. It holds - * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If - * val is given as a function it is executed only once. - * @param tmp is a temporary variable and should be of type uint16_t. It - * represents an intermediate value during conversion that is to be - * output by PUT_16BIT. - * @param PUT_16BIT writes the converted UTF-16 data to any proper destination - * in desired endianness. It could be a function or a statement, and uses tmp - * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;" - * PUT_BYTE will be executed 1 or 2 times depending on input character. - */ -#define PUT_UTF16(val, tmp, PUT_16BIT)\ - {\ - uint32_t in = val;\ - if (in < 0x10000) {\ - tmp = in;\ - PUT_16BIT\ - } else {\ - tmp = 0xD800 | ((in - 0x10000) >> 10);\ - PUT_16BIT\ - tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\ - PUT_16BIT\ - }\ - }\ - - - -#include "mem.h" - -#ifdef HAVE_AV_CONFIG_H -# include "internal.h" -#endif /* HAVE_AV_CONFIG_H */ - -#endif /* AVUTIL_COMMON_H */ - -/* - * The following definitions are outside the multiple inclusion guard - * to ensure they are immediately available in intmath.h. - */ - -#ifndef av_ceil_log2 -# define av_ceil_log2 av_ceil_log2_c -#endif -#ifndef av_clip -# define av_clip av_clip_c -#endif -#ifndef av_clip_uint8 -# define av_clip_uint8 av_clip_uint8_c -#endif -#ifndef av_clip_int8 -# define av_clip_int8 av_clip_int8_c -#endif -#ifndef av_clip_uint16 -# define av_clip_uint16 av_clip_uint16_c -#endif -#ifndef av_clip_int16 -# define av_clip_int16 av_clip_int16_c -#endif -#ifndef av_clipl_int32 -# define av_clipl_int32 av_clipl_int32_c -#endif -#ifndef av_clip_uintp2 -# define av_clip_uintp2 av_clip_uintp2_c -#endif -#ifndef av_sat_add32 -# define av_sat_add32 av_sat_add32_c -#endif -#ifndef av_sat_dadd32 -# define av_sat_dadd32 av_sat_dadd32_c -#endif -#ifndef av_clipf -# define av_clipf av_clipf_c -#endif -#ifndef av_popcount -# define av_popcount av_popcount_c -#endif -#ifndef av_popcount64 -# define av_popcount64 av_popcount64_c -#endif diff --git a/media/libav/libavutil/cpu.c b/media/libav/libavutil/cpu.c deleted file mode 100644 index 354d21e76..000000000 --- a/media/libav/libavutil/cpu.c +++ /dev/null @@ -1,295 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdint.h> - -#include "cpu.h" -#include "cpu_internal.h" -#include "config.h" -#include "opt.h" -#include "common.h" - -#if HAVE_SCHED_GETAFFINITY -#define _GNU_SOURCE -#include <sched.h> -#endif -#if HAVE_GETPROCESSAFFINITYMASK -#include <windows.h> -#endif -#if HAVE_SYSCTL -#if HAVE_SYS_PARAM_H -#include <sys/param.h> -#endif -#include <sys/types.h> -#include <sys/sysctl.h> -#endif -#if HAVE_SYSCONF -#include <unistd.h> -#endif - -static int cpuflags_mask = -1, checked; - -int av_get_cpu_flags(void) -{ - static int flags; - - if (checked) - return flags; - - if (ARCH_AARCH64) - flags = ff_get_cpu_flags_aarch64(); - if (ARCH_ARM) - flags = ff_get_cpu_flags_arm(); - if (ARCH_PPC) - flags = ff_get_cpu_flags_ppc(); - if (ARCH_X86) - flags = ff_get_cpu_flags_x86(); - - flags &= cpuflags_mask; - checked = 1; - - return flags; -} - -void av_set_cpu_flags_mask(int mask) -{ - cpuflags_mask = mask; - checked = 0; -} - -int av_parse_cpu_flags(const char *s) -{ -#define CPUFLAG_MMXEXT (AV_CPU_FLAG_MMX | AV_CPU_FLAG_MMXEXT | AV_CPU_FLAG_CMOV) -#define CPUFLAG_3DNOW (AV_CPU_FLAG_3DNOW | AV_CPU_FLAG_MMX) -#define CPUFLAG_3DNOWEXT (AV_CPU_FLAG_3DNOWEXT | CPUFLAG_3DNOW) -#define CPUFLAG_SSE (AV_CPU_FLAG_SSE | CPUFLAG_MMXEXT) -#define CPUFLAG_SSE2 (AV_CPU_FLAG_SSE2 | CPUFLAG_SSE) -#define CPUFLAG_SSE2SLOW (AV_CPU_FLAG_SSE2SLOW | CPUFLAG_SSE2) -#define CPUFLAG_SSE3 (AV_CPU_FLAG_SSE3 | CPUFLAG_SSE2) -#define CPUFLAG_SSE3SLOW (AV_CPU_FLAG_SSE3SLOW | CPUFLAG_SSE3) -#define CPUFLAG_SSSE3 (AV_CPU_FLAG_SSSE3 | CPUFLAG_SSE3) -#define CPUFLAG_SSE4 (AV_CPU_FLAG_SSE4 | CPUFLAG_SSSE3) -#define CPUFLAG_SSE42 (AV_CPU_FLAG_SSE42 | CPUFLAG_SSE4) -#define CPUFLAG_AVX (AV_CPU_FLAG_AVX | CPUFLAG_SSE42) -#define CPUFLAG_XOP (AV_CPU_FLAG_XOP | CPUFLAG_AVX) -#define CPUFLAG_FMA3 (AV_CPU_FLAG_FMA3 | CPUFLAG_AVX) -#define CPUFLAG_FMA4 (AV_CPU_FLAG_FMA4 | CPUFLAG_AVX) -#define CPUFLAG_AVX2 (AV_CPU_FLAG_AVX2 | CPUFLAG_AVX) -#define CPUFLAG_BMI1 (AV_CPU_FLAG_BMI1) -#define CPUFLAG_BMI2 (AV_CPU_FLAG_BMI2 | CPUFLAG_BMI1) - static const AVOption cpuflags_opts[] = { - { "flags" , NULL, 0, AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT64_MIN, INT64_MAX, .unit = "flags" }, -#if ARCH_PPC - { "altivec" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ALTIVEC }, .unit = "flags" }, -#elif ARCH_X86 - { "mmx" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_MMX }, .unit = "flags" }, - { "mmxext" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_MMXEXT }, .unit = "flags" }, - { "sse" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE }, .unit = "flags" }, - { "sse2" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE2 }, .unit = "flags" }, - { "sse2slow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE2SLOW }, .unit = "flags" }, - { "sse3" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE3 }, .unit = "flags" }, - { "sse3slow", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE3SLOW }, .unit = "flags" }, - { "ssse3" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSSE3 }, .unit = "flags" }, - { "atom" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ATOM }, .unit = "flags" }, - { "sse4.1" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE4 }, .unit = "flags" }, - { "sse4.2" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_SSE42 }, .unit = "flags" }, - { "avx" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_AVX }, .unit = "flags" }, - { "xop" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_XOP }, .unit = "flags" }, - { "fma3" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_FMA3 }, .unit = "flags" }, - { "fma4" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_FMA4 }, .unit = "flags" }, - { "avx2" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_AVX2 }, .unit = "flags" }, - { "bmi1" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_BMI1 }, .unit = "flags" }, - { "bmi2" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_BMI2 }, .unit = "flags" }, - { "3dnow" , NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_3DNOW }, .unit = "flags" }, - { "3dnowext", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = CPUFLAG_3DNOWEXT }, .unit = "flags" }, - { "cmov", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_CMOV }, .unit = "flags" }, -#elif ARCH_ARM - { "armv5te", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV5TE }, .unit = "flags" }, - { "armv6", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV6 }, .unit = "flags" }, - { "armv6t2", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV6T2 }, .unit = "flags" }, - { "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" }, - { "vfpv3", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFPV3 }, .unit = "flags" }, - { "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, -#elif ARCH_AARCH64 - { "armv8", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_ARMV8 }, .unit = "flags" }, - { "neon", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_NEON }, .unit = "flags" }, - { "vfp", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AV_CPU_FLAG_VFP }, .unit = "flags" }, -#endif - { NULL }, - }; - static const AVClass class = { - .class_name = "cpuflags", - .item_name = av_default_item_name, - .option = cpuflags_opts, - .version = LIBAVUTIL_VERSION_INT, - }; - - int flags = 0, ret; - const AVClass *pclass = &class; - - if ((ret = av_opt_eval_flags(&pclass, &cpuflags_opts[0], s, &flags)) < 0) - return ret; - - return flags & INT_MAX; -} - -int av_cpu_count(void) -{ - int nb_cpus = 1; -#if HAVE_SCHED_GETAFFINITY && defined(CPU_COUNT) - cpu_set_t cpuset; - - CPU_ZERO(&cpuset); - - if (!sched_getaffinity(0, sizeof(cpuset), &cpuset)) - nb_cpus = CPU_COUNT(&cpuset); -#elif HAVE_GETPROCESSAFFINITYMASK - DWORD_PTR proc_aff, sys_aff; - if (GetProcessAffinityMask(GetCurrentProcess(), &proc_aff, &sys_aff)) - nb_cpus = av_popcount64(proc_aff); -#elif HAVE_SYSCTL && defined(HW_NCPU) - int mib[2] = { CTL_HW, HW_NCPU }; - size_t len = sizeof(nb_cpus); - - if (sysctl(mib, 2, &nb_cpus, &len, NULL, 0) == -1) - nb_cpus = 0; -#elif HAVE_SYSCONF && defined(_SC_NPROC_ONLN) - nb_cpus = sysconf(_SC_NPROC_ONLN); -#elif HAVE_SYSCONF && defined(_SC_NPROCESSORS_ONLN) - nb_cpus = sysconf(_SC_NPROCESSORS_ONLN); -#endif - - return nb_cpus; -} - -#ifdef TEST - -#include <stdio.h> -#if HAVE_UNISTD_H -#include <unistd.h> -#endif - -#include "avstring.h" - -#if !HAVE_GETOPT -#include "compat/getopt.c" -#endif - -static const struct { - int flag; - const char *name; -} cpu_flag_tab[] = { -#if ARCH_AARCH64 - { AV_CPU_FLAG_ARMV8, "armv8" }, - { AV_CPU_FLAG_NEON, "neon" }, - { AV_CPU_FLAG_VFP, "vfp" }, -#elif ARCH_ARM - { AV_CPU_FLAG_ARMV5TE, "armv5te" }, - { AV_CPU_FLAG_ARMV6, "armv6" }, - { AV_CPU_FLAG_ARMV6T2, "armv6t2" }, - { AV_CPU_FLAG_VFP, "vfp" }, - { AV_CPU_FLAG_VFPV3, "vfpv3" }, - { AV_CPU_FLAG_NEON, "neon" }, -#elif ARCH_PPC - { AV_CPU_FLAG_ALTIVEC, "altivec" }, -#elif ARCH_X86 - { AV_CPU_FLAG_MMX, "mmx" }, - { AV_CPU_FLAG_MMXEXT, "mmxext" }, - { AV_CPU_FLAG_SSE, "sse" }, - { AV_CPU_FLAG_SSE2, "sse2" }, - { AV_CPU_FLAG_SSE2SLOW, "sse2(slow)" }, - { AV_CPU_FLAG_SSE3, "sse3" }, - { AV_CPU_FLAG_SSE3SLOW, "sse3(slow)" }, - { AV_CPU_FLAG_SSSE3, "ssse3" }, - { AV_CPU_FLAG_ATOM, "atom" }, - { AV_CPU_FLAG_SSE4, "sse4.1" }, - { AV_CPU_FLAG_SSE42, "sse4.2" }, - { AV_CPU_FLAG_AVX, "avx" }, - { AV_CPU_FLAG_XOP, "xop" }, - { AV_CPU_FLAG_FMA3, "fma3" }, - { AV_CPU_FLAG_FMA4, "fma4" }, - { AV_CPU_FLAG_3DNOW, "3dnow" }, - { AV_CPU_FLAG_3DNOWEXT, "3dnowext" }, - { AV_CPU_FLAG_CMOV, "cmov" }, - { AV_CPU_FLAG_AVX2, "avx2" }, - { AV_CPU_FLAG_BMI1, "bmi1" }, - { AV_CPU_FLAG_BMI2, "bmi2" }, -#endif - { 0 } -}; - -static void print_cpu_flags(int cpu_flags, const char *type) -{ - int i; - - fprintf(stderr, "cpu_flags(%s) = 0x%08X\n", type, cpu_flags); - fprintf(stderr, "cpu_flags_str(%s) =", type); - for (i = 0; cpu_flag_tab[i].flag; i++) - if (cpu_flags & cpu_flag_tab[i].flag) - fprintf(stderr, " %s", cpu_flag_tab[i].name); - fprintf(stderr, "\n"); -} - - -int main(int argc, char **argv) -{ - int cpu_flags_raw = av_get_cpu_flags(); - int cpu_flags_eff; - int cpu_count = av_cpu_count(); - char threads[5] = "auto"; - - if (cpu_flags_raw < 0) - return 1; - - for (;;) { - int c = getopt(argc, argv, "c:t:"); - if (c == -1) - break; - switch (c) { - case 'c': - { - int cpuflags = av_parse_cpu_flags(optarg); - if (cpuflags < 0) - return 2; - av_set_cpu_flags_mask(cpuflags); - break; - } - case 't': - { - int len = av_strlcpy(threads, optarg, sizeof(threads)); - if (len >= sizeof(threads)) { - fprintf(stderr, "Invalid thread count '%s'\n", optarg); - return 2; - } - } - } - } - - cpu_flags_eff = av_get_cpu_flags(); - - if (cpu_flags_eff < 0) - return 3; - - print_cpu_flags(cpu_flags_raw, "raw"); - print_cpu_flags(cpu_flags_eff, "effective"); - fprintf(stderr, "threads = %s (cpu_count = %d)\n", threads, cpu_count); - - return 0; -} - -#endif diff --git a/media/libav/libavutil/cpu.h b/media/libav/libavutil/cpu.h deleted file mode 100644 index 7cecccc9c..000000000 --- a/media/libav/libavutil/cpu.h +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2000, 2001, 2002 Fabrice Bellard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_H -#define AVUTIL_CPU_H - -#include "version.h" - -#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */ - - /* lower 16 bits - CPU features */ -#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX -#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext -#if FF_API_CPU_FLAG_MMX2 -#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext -#endif -#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW -#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions -#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions -#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt -#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions -#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster - ///< than regular MMX/SSE (e.g. Core1) -#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions -#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower -#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions -#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions -#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions -#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions -#define AV_CPU_FLAG_CMOV 0x1000 ///< i686 cmov -#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used -#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions -#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1 -#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2 - -#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard - -#define AV_CPU_FLAG_ARMV5TE (1 << 0) -#define AV_CPU_FLAG_ARMV6 (1 << 1) -#define AV_CPU_FLAG_ARMV6T2 (1 << 2) -#define AV_CPU_FLAG_VFP (1 << 3) -#define AV_CPU_FLAG_VFPV3 (1 << 4) -#define AV_CPU_FLAG_NEON (1 << 5) -#define AV_CPU_FLAG_ARMV8 (1 << 6) - -/** - * Return the flags which specify extensions supported by the CPU. - */ -int av_get_cpu_flags(void); - -/** - * Set a mask on flags returned by av_get_cpu_flags(). - * This function is mainly useful for testing. - * - * @warning this function is not thread safe. - */ -void av_set_cpu_flags_mask(int mask); - -/** - * Parse CPU flags from a string. - * - * @return a combination of AV_CPU_* flags, negative on error. - */ -int av_parse_cpu_flags(const char *s); - -/** - * @return the number of logical CPU cores present. - */ -int av_cpu_count(void); - -#endif /* AVUTIL_CPU_H */ diff --git a/media/libav/libavutil/cpu_internal.h b/media/libav/libavutil/cpu_internal.h deleted file mode 100644 index 3bfe8a82d..000000000 --- a/media/libav/libavutil/cpu_internal.h +++ /dev/null @@ -1,34 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_CPU_INTERNAL_H -#define AVUTIL_CPU_INTERNAL_H - -#include "cpu.h" - -#define CPUEXT_SUFFIX(flags, suffix, cpuext) \ - (HAVE_ ## cpuext ## suffix && ((flags) & AV_CPU_FLAG_ ## cpuext)) - -#define CPUEXT(flags, cpuext) CPUEXT_SUFFIX(flags, , cpuext) - -int ff_get_cpu_flags_aarch64(void); -int ff_get_cpu_flags_arm(void); -int ff_get_cpu_flags_ppc(void); -int ff_get_cpu_flags_x86(void); - -#endif /* AVUTIL_CPU_INTERNAL_H */ diff --git a/media/libav/libavutil/dict.c b/media/libav/libavutil/dict.c deleted file mode 100644 index e4ea7769e..000000000 --- a/media/libav/libavutil/dict.c +++ /dev/null @@ -1,190 +0,0 @@ -/* - * copyright (c) 2009 Michael Niedermayer - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <string.h> - -#include "avstring.h" -#include "dict.h" -#include "internal.h" -#include "mem.h" - -struct AVDictionary { - int count; - AVDictionaryEntry *elems; -}; - -int av_dict_count(const AVDictionary *m) -{ - return m ? m->count : 0; -} - -AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, - const AVDictionaryEntry *prev, int flags) -{ - unsigned int i, j; - - if (!m) - return NULL; - - if (prev) - i = prev - m->elems + 1; - else - i = 0; - - for (; i < m->count; i++) { - const char *s = m->elems[i].key; - if (flags & AV_DICT_MATCH_CASE) - for (j = 0; s[j] == key[j] && key[j]; j++) - ; - else - for (j = 0; av_toupper(s[j]) == av_toupper(key[j]) && key[j]; j++) - ; - if (key[j]) - continue; - if (s[j] && !(flags & AV_DICT_IGNORE_SUFFIX)) - continue; - return &m->elems[i]; - } - return NULL; -} - -int av_dict_set(AVDictionary **pm, const char *key, const char *value, - int flags) -{ - AVDictionary *m = *pm; - AVDictionaryEntry *tag = av_dict_get(m, key, NULL, flags); - char *oldval = NULL; - - if (!m) - m = *pm = av_mallocz(sizeof(*m)); - - if (tag) { - if (flags & AV_DICT_DONT_OVERWRITE) { - if (flags & AV_DICT_DONT_STRDUP_KEY) av_free(key); - if (flags & AV_DICT_DONT_STRDUP_VAL) av_free(value); - return 0; - } - if (flags & AV_DICT_APPEND) - oldval = tag->value; - else - av_free(tag->value); - av_free(tag->key); - *tag = m->elems[--m->count]; - } else { - AVDictionaryEntry *tmp = av_realloc(m->elems, - (m->count + 1) * sizeof(*m->elems)); - if (tmp) - m->elems = tmp; - else - return AVERROR(ENOMEM); - } - if (value) { - if (flags & AV_DICT_DONT_STRDUP_KEY) - m->elems[m->count].key = key; - else - m->elems[m->count].key = av_strdup(key); - if (flags & AV_DICT_DONT_STRDUP_VAL) { - m->elems[m->count].value = value; - } else if (oldval && flags & AV_DICT_APPEND) { - int len = strlen(oldval) + strlen(value) + 1; - if (!(oldval = av_realloc(oldval, len))) - return AVERROR(ENOMEM); - av_strlcat(oldval, value, len); - m->elems[m->count].value = oldval; - } else - m->elems[m->count].value = av_strdup(value); - m->count++; - } - if (!m->count) { - av_free(m->elems); - av_freep(pm); - } - - return 0; -} - -static int parse_key_value_pair(AVDictionary **pm, const char **buf, - const char *key_val_sep, const char *pairs_sep, - int flags) -{ - char *key = av_get_token(buf, key_val_sep); - char *val = NULL; - int ret; - - if (key && *key && strspn(*buf, key_val_sep)) { - (*buf)++; - val = av_get_token(buf, pairs_sep); - } - - if (key && *key && val && *val) - ret = av_dict_set(pm, key, val, flags); - else - ret = AVERROR(EINVAL); - - av_freep(&key); - av_freep(&val); - - return ret; -} - -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags) -{ - int ret; - - if (!str) - return 0; - - /* ignore STRDUP flags */ - flags &= ~(AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - - while (*str) { - if ((ret = parse_key_value_pair(pm, &str, key_val_sep, pairs_sep, flags)) < 0) - return ret; - - if (*str) - str++; - } - - return 0; -} - -void av_dict_free(AVDictionary **pm) -{ - AVDictionary *m = *pm; - - if (m) { - while (m->count--) { - av_free(m->elems[m->count].key); - av_free(m->elems[m->count].value); - } - av_free(m->elems); - } - av_freep(pm); -} - -void av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags) -{ - AVDictionaryEntry *t = NULL; - - while ((t = av_dict_get(src, "", t, AV_DICT_IGNORE_SUFFIX))) - av_dict_set(dst, t->key, t->value, flags); -} diff --git a/media/libav/libavutil/dict.h b/media/libav/libavutil/dict.h deleted file mode 100644 index e4aee27ca..000000000 --- a/media/libav/libavutil/dict.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Public dictionary API. - */ - -#ifndef AVUTIL_DICT_H -#define AVUTIL_DICT_H - -/** - * @addtogroup lavu_dict AVDictionary - * @ingroup lavu_data - * - * @brief Simple key:value store - * - * @{ - * Dictionaries are used for storing key:value pairs. To create - * an AVDictionary, simply pass an address of a NULL pointer to - * av_dict_set(). NULL can be used as an empty dictionary wherever - * a pointer to an AVDictionary is required. - * Use av_dict_get() to retrieve an entry or iterate over all - * entries and finally av_dict_free() to free the dictionary - * and all its contents. - * - @code - AVDictionary *d = NULL; // "create" an empty dictionary - AVDictionaryEntry *t = NULL; - - av_dict_set(&d, "foo", "bar", 0); // add an entry - - char *k = av_strdup("key"); // if your strings are already allocated, - char *v = av_strdup("value"); // you can avoid copying them like this - av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL); - - while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) { - <....> // iterate over all entries in d - } - av_dict_free(&d); - @endcode - * - */ - -#define AV_DICT_MATCH_CASE 1 -#define AV_DICT_IGNORE_SUFFIX 2 -#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been - allocated with av_malloc() and children. */ -#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been - allocated with av_malloc() and chilren. */ -#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries. -#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no - delimiter is added, the strings are simply concatenated. */ - -typedef struct AVDictionaryEntry { - char *key; - char *value; -} AVDictionaryEntry; - -typedef struct AVDictionary AVDictionary; - -/** - * Get a dictionary entry with matching key. - * - * @param prev Set to the previous matching element to find the next. - * If set to NULL the first matching element is returned. - * @param flags Allows case as well as suffix-insensitive comparisons. - * @return Found entry or NULL, changing key or value leads to undefined behavior. - */ -AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key, - const AVDictionaryEntry *prev, int flags); - -/** - * Get number of entries in dictionary. - * - * @param m dictionary - * @return number of entries in dictionary - */ -int av_dict_count(const AVDictionary *m); - -/** - * Set the given entry in *pm, overwriting an existing entry. - * - * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL - * a dictionary struct is allocated and put in *pm. - * @param key entry key to add to *pm (will be av_strduped depending on flags) - * @param value entry value to add to *pm (will be av_strduped depending on flags). - * Passing a NULL value will cause an existing entry to be deleted. - * @return >= 0 on success otherwise an error code <0 - */ -int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags); - -/** - * Parse the key/value pairs list and add to a dictionary. - * - * @param key_val_sep a 0-terminated list of characters used to separate - * key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @param flags flags to use when adding to dictionary. - * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL - * are ignored since the key/value tokens will always - * be duplicated. - * @return 0 on success, negative AVERROR code on failure - */ -int av_dict_parse_string(AVDictionary **pm, const char *str, - const char *key_val_sep, const char *pairs_sep, - int flags); - -/** - * Copy entries from one AVDictionary struct into another. - * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL, - * this function will allocate a struct for you and put it in *dst - * @param src pointer to source AVDictionary struct - * @param flags flags to use when setting entries in *dst - * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag - */ -void av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags); - -/** - * Free all the memory allocated for an AVDictionary struct - * and all keys and values. - */ -void av_dict_free(AVDictionary **m); - -/** - * @} - */ - -#endif /* AVUTIL_DICT_H */ diff --git a/media/libav/libavutil/error.c b/media/libav/libavutil/error.c deleted file mode 100644 index 6803d2d4c..000000000 --- a/media/libav/libavutil/error.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "avutil.h" -#include "avstring.h" -#include "common.h" - -int av_strerror(int errnum, char *errbuf, size_t errbuf_size) -{ - int ret = 0; - const char *errstr = NULL; - - switch (errnum) { - case AVERROR_BSF_NOT_FOUND: errstr = "Bitstream filter not found" ; break; - case AVERROR_DECODER_NOT_FOUND: errstr = "Decoder not found" ; break; - case AVERROR_DEMUXER_NOT_FOUND: errstr = "Demuxer not found" ; break; - case AVERROR_ENCODER_NOT_FOUND: errstr = "Encoder not found" ; break; - case AVERROR_EOF: errstr = "End of file" ; break; - case AVERROR_EXIT: errstr = "Immediate exit requested" ; break; - case AVERROR_FILTER_NOT_FOUND: errstr = "Filter not found" ; break; - case AVERROR_INVALIDDATA: errstr = "Invalid data found when processing input" ; break; - case AVERROR_MUXER_NOT_FOUND: errstr = "Muxer not found" ; break; - case AVERROR_OPTION_NOT_FOUND: errstr = "Option not found" ; break; - case AVERROR_PATCHWELCOME: errstr = "Not yet implemented in Libav, patches welcome"; break; - case AVERROR_PROTOCOL_NOT_FOUND:errstr = "Protocol not found" ; break; - case AVERROR_STREAM_NOT_FOUND: errstr = "Stream not found" ; break; - case AVERROR_BUG: errstr = "Bug detected, please report the issue" ; break; - case AVERROR_UNKNOWN: errstr = "Unknown error occurred" ; break; - case AVERROR_EXPERIMENTAL: errstr = "Experimental feature" ; break; - } - - if (errstr) { - av_strlcpy(errbuf, errstr, errbuf_size); - } else { -#if HAVE_STRERROR_R - ret = strerror_r(AVUNERROR(errnum), errbuf, errbuf_size); -#else - ret = -1; -#endif - if (ret < 0) - snprintf(errbuf, errbuf_size, "Error number %d occurred", errnum); - } - - return ret; -} diff --git a/media/libav/libavutil/error.h b/media/libav/libavutil/error.h deleted file mode 100644 index 8be87cbeb..000000000 --- a/media/libav/libavutil/error.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * error code definitions - */ - -#ifndef AVUTIL_ERROR_H -#define AVUTIL_ERROR_H - -#include <errno.h> -#include <stddef.h> - -/** - * @addtogroup lavu_error - * - * @{ - */ - - -/* error handling */ -#if EDOM > 0 -#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions. -#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value. -#else -/* Some platforms have E* and errno already negated. */ -#define AVERROR(e) (e) -#define AVUNERROR(e) (e) -#endif - -#define AVERROR_BSF_NOT_FOUND (-0x39acbd08) ///< Bitstream filter not found -#define AVERROR_DECODER_NOT_FOUND (-0x3cbabb08) ///< Decoder not found -#define AVERROR_DEMUXER_NOT_FOUND (-0x32babb08) ///< Demuxer not found -#define AVERROR_ENCODER_NOT_FOUND (-0x3cb1ba08) ///< Encoder not found -#define AVERROR_EOF (-0x5fb9b0bb) ///< End of file -#define AVERROR_EXIT (-0x2bb6a7bb) ///< Immediate exit was requested; the called function should not be restarted -#define AVERROR_FILTER_NOT_FOUND (-0x33b6b908) ///< Filter not found -#define AVERROR_INVALIDDATA (-0x3ebbb1b7) ///< Invalid data found when processing input -#define AVERROR_MUXER_NOT_FOUND (-0x27aab208) ///< Muxer not found -#define AVERROR_OPTION_NOT_FOUND (-0x2bafb008) ///< Option not found -#define AVERROR_PATCHWELCOME (-0x3aa8beb0) ///< Not yet implemented in Libav, patches welcome -#define AVERROR_PROTOCOL_NOT_FOUND (-0x30adaf08) ///< Protocol not found -#define AVERROR_STREAM_NOT_FOUND (-0x2dabac08) ///< Stream not found -#define AVERROR_BUG (-0x5fb8aabe) ///< Bug detected, please report the issue -#define AVERROR_UNKNOWN (-0x31b4b1ab) ///< Unknown error, typically from an external library -#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it. -#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED) -#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED) - -/** - * Put a description of the AVERROR code errnum in errbuf. - * In case of failure the global variable errno is set to indicate the - * error. Even in case of failure av_strerror() will print a generic - * error message indicating the errnum provided to errbuf. - * - * @param errnum error code to describe - * @param errbuf buffer to which description is written - * @param errbuf_size the size in bytes of errbuf - * @return 0 on success, a negative value if a description for errnum - * cannot be found - */ -int av_strerror(int errnum, char *errbuf, size_t errbuf_size); - -/** - * @} - */ - -#endif /* AVUTIL_ERROR_H */ diff --git a/media/libav/libavutil/eval.c b/media/libav/libavutil/eval.c deleted file mode 100644 index 31e9ebbc9..000000000 --- a/media/libav/libavutil/eval.c +++ /dev/null @@ -1,691 +0,0 @@ -/* - * Copyright (c) 2002-2006 Michael Niedermayer <michaelni@gmx.at> - * Copyright (c) 2006 Oded Shimon <ods15@ods15.dyndns.org> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple arithmetic expression evaluator. - * - * see http://joe.hotchkiss.com/programming/eval/eval.html - */ - -#include "attributes.h" -#include "avutil.h" -#include "common.h" -#include "eval.h" -#include "log.h" -#include "mathematics.h" -#include "avstring.h" -#include "timer.h" - -typedef struct Parser { - const AVClass *class; - int stack_index; - char *s; - const double *const_values; - const char * const *const_names; // NULL terminated - double (* const *funcs1)(void *, double a); // NULL terminated - const char * const *func1_names; // NULL terminated - double (* const *funcs2)(void *, double a, double b); // NULL terminated - const char * const *func2_names; // NULL terminated - void *opaque; - int log_offset; - void *log_ctx; -#define VARS 10 - double var[VARS]; -} Parser; - -static const AVClass class = { "Eval", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, offsetof(Parser,log_offset), offsetof(Parser,log_ctx) }; - -static const int8_t si_prefixes['z' - 'E' + 1] = { - ['y'-'E']= -24, - ['z'-'E']= -21, - ['a'-'E']= -18, - ['f'-'E']= -15, - ['p'-'E']= -12, - ['n'-'E']= - 9, - ['u'-'E']= - 6, - ['m'-'E']= - 3, - ['c'-'E']= - 2, - ['d'-'E']= - 1, - ['h'-'E']= 2, - ['k'-'E']= 3, - ['K'-'E']= 3, - ['M'-'E']= 6, - ['G'-'E']= 9, - ['T'-'E']= 12, - ['P'-'E']= 15, - ['E'-'E']= 18, - ['Z'-'E']= 21, - ['Y'-'E']= 24, -}; - -double av_strtod(const char *numstr, char **tail) -{ - double d; - char *next; - d = strtod(numstr, &next); - /* if parsing succeeded, check for and interpret postfixes */ - if (next!=numstr) { - if (next[0] == 'd' && next[1] == 'B') { - /* treat dB as decibels instead of decibytes */ - d = pow(10, d / 20); - next += 2; - } else if (*next >= 'E' && *next <= 'z') { - int e= si_prefixes[*next - 'E']; - if (e) { - if (next[1] == 'i') { - d*= pow( 2, e/0.3); - next+=2; - } else { - d*= pow(10, e); - next++; - } - } - } - - if (*next=='B') { - d*=8; - next++; - } - } - /* if requested, fill in tail with the position after the last parsed - character */ - if (tail) - *tail = next; - return d; -} - -#define IS_IDENTIFIER_CHAR(c) ((c) - '0' <= 9U || (c) - 'a' <= 25U || (c) - 'A' <= 25U || (c) == '_') - -static int strmatch(const char *s, const char *prefix) -{ - int i; - for (i=0; prefix[i]; i++) { - if (prefix[i] != s[i]) return 0; - } - /* return 1 only if the s identifier is terminated */ - return !IS_IDENTIFIER_CHAR(s[i]); -} - -struct AVExpr { - enum { - e_value, e_const, e_func0, e_func1, e_func2, - e_squish, e_gauss, e_ld, e_isnan, e_isinf, - e_mod, e_max, e_min, e_eq, e_gt, e_gte, - e_pow, e_mul, e_div, e_add, - e_last, e_st, e_while, e_floor, e_ceil, e_trunc, - e_sqrt, e_not, - } type; - double value; // is sign in other types - union { - int const_index; - double (*func0)(double); - double (*func1)(void *, double); - double (*func2)(void *, double, double); - } a; - struct AVExpr *param[2]; -}; - -static double eval_expr(Parser *p, AVExpr *e) -{ - switch (e->type) { - case e_value: return e->value; - case e_const: return e->value * p->const_values[e->a.const_index]; - case e_func0: return e->value * e->a.func0(eval_expr(p, e->param[0])); - case e_func1: return e->value * e->a.func1(p->opaque, eval_expr(p, e->param[0])); - case e_func2: return e->value * e->a.func2(p->opaque, eval_expr(p, e->param[0]), eval_expr(p, e->param[1])); - case e_squish: return 1/(1+exp(4*eval_expr(p, e->param[0]))); - case e_gauss: { double d = eval_expr(p, e->param[0]); return exp(-d*d/2)/sqrt(2*M_PI); } - case e_ld: return e->value * p->var[av_clip(eval_expr(p, e->param[0]), 0, VARS-1)]; - case e_isnan: return e->value * !!isnan(eval_expr(p, e->param[0])); - case e_isinf: return e->value * !!isinf(eval_expr(p, e->param[0])); - case e_floor: return e->value * floor(eval_expr(p, e->param[0])); - case e_ceil : return e->value * ceil (eval_expr(p, e->param[0])); - case e_trunc: return e->value * trunc(eval_expr(p, e->param[0])); - case e_sqrt: return e->value * sqrt (eval_expr(p, e->param[0])); - case e_not: return e->value * eval_expr(p, e->param[0]) == 0; - case e_while: { - double d = NAN; - while (eval_expr(p, e->param[0])) - d=eval_expr(p, e->param[1]); - return d; - } - default: { - double d = eval_expr(p, e->param[0]); - double d2 = eval_expr(p, e->param[1]); - switch (e->type) { - case e_mod: return e->value * (d - floor(d/d2)*d2); - case e_max: return e->value * (d > d2 ? d : d2); - case e_min: return e->value * (d < d2 ? d : d2); - case e_eq: return e->value * (d == d2 ? 1.0 : 0.0); - case e_gt: return e->value * (d > d2 ? 1.0 : 0.0); - case e_gte: return e->value * (d >= d2 ? 1.0 : 0.0); - case e_pow: return e->value * pow(d, d2); - case e_mul: return e->value * (d * d2); - case e_div: return e->value * (d / d2); - case e_add: return e->value * (d + d2); - case e_last:return e->value * d2; - case e_st : return e->value * (p->var[av_clip(d, 0, VARS-1)]= d2); - } - } - } - return NAN; -} - -static int parse_expr(AVExpr **e, Parser *p); - -void av_expr_free(AVExpr *e) -{ - if (!e) return; - av_expr_free(e->param[0]); - av_expr_free(e->param[1]); - av_freep(&e); -} - -static int parse_primary(AVExpr **e, Parser *p) -{ - AVExpr *d = av_mallocz(sizeof(AVExpr)); - char *next = p->s, *s0 = p->s; - int ret, i; - - if (!d) - return AVERROR(ENOMEM); - - /* number */ - d->value = av_strtod(p->s, &next); - if (next != p->s) { - d->type = e_value; - p->s= next; - *e = d; - return 0; - } - d->value = 1; - - /* named constants */ - for (i=0; p->const_names && p->const_names[i]; i++) { - if (strmatch(p->s, p->const_names[i])) { - p->s+= strlen(p->const_names[i]); - d->type = e_const; - d->a.const_index = i; - *e = d; - return 0; - } - } - - p->s= strchr(p->s, '('); - if (!p->s) { - av_log(p, AV_LOG_ERROR, "Undefined constant or missing '(' in '%s'\n", s0); - p->s= next; - av_expr_free(d); - return AVERROR(EINVAL); - } - p->s++; // "(" - if (*next == '(') { // special case do-nothing - av_freep(&d); - if ((ret = parse_expr(&d, p)) < 0) - return ret; - if (p->s[0] != ')') { - av_log(p, AV_LOG_ERROR, "Missing ')' in '%s'\n", s0); - av_expr_free(d); - return AVERROR(EINVAL); - } - p->s++; // ")" - *e = d; - return 0; - } - if ((ret = parse_expr(&(d->param[0]), p)) < 0) { - av_expr_free(d); - return ret; - } - if (p->s[0]== ',') { - p->s++; // "," - parse_expr(&d->param[1], p); - } - if (p->s[0] != ')') { - av_log(p, AV_LOG_ERROR, "Missing ')' or too many args in '%s'\n", s0); - av_expr_free(d); - return AVERROR(EINVAL); - } - p->s++; // ")" - - d->type = e_func0; - if (strmatch(next, "sinh" )) d->a.func0 = sinh; - else if (strmatch(next, "cosh" )) d->a.func0 = cosh; - else if (strmatch(next, "tanh" )) d->a.func0 = tanh; - else if (strmatch(next, "sin" )) d->a.func0 = sin; - else if (strmatch(next, "cos" )) d->a.func0 = cos; - else if (strmatch(next, "tan" )) d->a.func0 = tan; - else if (strmatch(next, "atan" )) d->a.func0 = atan; - else if (strmatch(next, "asin" )) d->a.func0 = asin; - else if (strmatch(next, "acos" )) d->a.func0 = acos; - else if (strmatch(next, "exp" )) d->a.func0 = exp; - else if (strmatch(next, "log" )) d->a.func0 = log; - else if (strmatch(next, "abs" )) d->a.func0 = fabs; - else if (strmatch(next, "squish")) d->type = e_squish; - else if (strmatch(next, "gauss" )) d->type = e_gauss; - else if (strmatch(next, "mod" )) d->type = e_mod; - else if (strmatch(next, "max" )) d->type = e_max; - else if (strmatch(next, "min" )) d->type = e_min; - else if (strmatch(next, "eq" )) d->type = e_eq; - else if (strmatch(next, "gte" )) d->type = e_gte; - else if (strmatch(next, "gt" )) d->type = e_gt; - else if (strmatch(next, "lte" )) { AVExpr *tmp = d->param[1]; d->param[1] = d->param[0]; d->param[0] = tmp; d->type = e_gte; } - else if (strmatch(next, "lt" )) { AVExpr *tmp = d->param[1]; d->param[1] = d->param[0]; d->param[0] = tmp; d->type = e_gt; } - else if (strmatch(next, "ld" )) d->type = e_ld; - else if (strmatch(next, "isnan" )) d->type = e_isnan; - else if (strmatch(next, "isinf" )) d->type = e_isinf; - else if (strmatch(next, "st" )) d->type = e_st; - else if (strmatch(next, "while" )) d->type = e_while; - else if (strmatch(next, "floor" )) d->type = e_floor; - else if (strmatch(next, "ceil" )) d->type = e_ceil; - else if (strmatch(next, "trunc" )) d->type = e_trunc; - else if (strmatch(next, "sqrt" )) d->type = e_sqrt; - else if (strmatch(next, "not" )) d->type = e_not; - else { - for (i=0; p->func1_names && p->func1_names[i]; i++) { - if (strmatch(next, p->func1_names[i])) { - d->a.func1 = p->funcs1[i]; - d->type = e_func1; - *e = d; - return 0; - } - } - - for (i=0; p->func2_names && p->func2_names[i]; i++) { - if (strmatch(next, p->func2_names[i])) { - d->a.func2 = p->funcs2[i]; - d->type = e_func2; - *e = d; - return 0; - } - } - - av_log(p, AV_LOG_ERROR, "Unknown function in '%s'\n", s0); - av_expr_free(d); - return AVERROR(EINVAL); - } - - *e = d; - return 0; -} - -static AVExpr *new_eval_expr(int type, int value, AVExpr *p0, AVExpr *p1) -{ - AVExpr *e = av_mallocz(sizeof(AVExpr)); - if (!e) - return NULL; - e->type =type ; - e->value =value ; - e->param[0] =p0 ; - e->param[1] =p1 ; - return e; -} - -static int parse_pow(AVExpr **e, Parser *p, int *sign) -{ - *sign= (*p->s == '+') - (*p->s == '-'); - p->s += *sign&1; - return parse_primary(e, p); -} - -static int parse_dB(AVExpr **e, Parser *p, int *sign) -{ - /* do not filter out the negative sign when parsing a dB value. - for example, -3dB is not the same as -(3dB) */ - if (*p->s == '-') { - char *next; - double av_unused ignored = strtod(p->s, &next); - if (next != p->s && next[0] == 'd' && next[1] == 'B') { - *sign = 0; - return parse_primary(e, p); - } - } - return parse_pow(e, p, sign); -} - -static int parse_factor(AVExpr **e, Parser *p) -{ - int sign, sign2, ret; - AVExpr *e0, *e1, *e2; - if ((ret = parse_dB(&e0, p, &sign)) < 0) - return ret; - while(p->s[0]=='^'){ - e1 = e0; - p->s++; - if ((ret = parse_dB(&e2, p, &sign2)) < 0) { - av_expr_free(e1); - return ret; - } - e0 = new_eval_expr(e_pow, 1, e1, e2); - if (!e0) { - av_expr_free(e1); - av_expr_free(e2); - return AVERROR(ENOMEM); - } - if (e0->param[1]) e0->param[1]->value *= (sign2|1); - } - if (e0) e0->value *= (sign|1); - - *e = e0; - return 0; -} - -static int parse_term(AVExpr **e, Parser *p) -{ - int ret; - AVExpr *e0, *e1, *e2; - if ((ret = parse_factor(&e0, p)) < 0) - return ret; - while (p->s[0]=='*' || p->s[0]=='/') { - int c= *p->s++; - e1 = e0; - if ((ret = parse_factor(&e2, p)) < 0) { - av_expr_free(e1); - return ret; - } - e0 = new_eval_expr(c == '*' ? e_mul : e_div, 1, e1, e2); - if (!e0) { - av_expr_free(e1); - av_expr_free(e2); - return AVERROR(ENOMEM); - } - } - *e = e0; - return 0; -} - -static int parse_subexpr(AVExpr **e, Parser *p) -{ - int ret; - AVExpr *e0, *e1, *e2; - if ((ret = parse_term(&e0, p)) < 0) - return ret; - while (*p->s == '+' || *p->s == '-') { - e1 = e0; - if ((ret = parse_term(&e2, p)) < 0) { - av_expr_free(e1); - return ret; - } - e0 = new_eval_expr(e_add, 1, e1, e2); - if (!e0) { - av_expr_free(e1); - av_expr_free(e2); - return AVERROR(ENOMEM); - } - }; - - *e = e0; - return 0; -} - -static int parse_expr(AVExpr **e, Parser *p) -{ - int ret; - AVExpr *e0, *e1, *e2; - if (p->stack_index <= 0) //protect against stack overflows - return AVERROR(EINVAL); - p->stack_index--; - - if ((ret = parse_subexpr(&e0, p)) < 0) - return ret; - while (*p->s == ';') { - p->s++; - e1 = e0; - if ((ret = parse_subexpr(&e2, p)) < 0) { - av_expr_free(e1); - return ret; - } - e0 = new_eval_expr(e_last, 1, e1, e2); - if (!e0) { - av_expr_free(e1); - av_expr_free(e2); - return AVERROR(ENOMEM); - } - }; - - p->stack_index++; - *e = e0; - return 0; -} - -static int verify_expr(AVExpr *e) -{ - if (!e) return 0; - switch (e->type) { - case e_value: - case e_const: return 1; - case e_func0: - case e_func1: - case e_squish: - case e_ld: - case e_gauss: - case e_isnan: - case e_isinf: - case e_floor: - case e_ceil: - case e_trunc: - case e_sqrt: - case e_not: - return verify_expr(e->param[0]); - default: return verify_expr(e->param[0]) && verify_expr(e->param[1]); - } -} - -int av_expr_parse(AVExpr **expr, const char *s, - const char * const *const_names, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - int log_offset, void *log_ctx) -{ - Parser p = { 0 }; - AVExpr *e = NULL; - char *w = av_malloc(strlen(s) + 1); - char *wp = w; - const char *s0 = s; - int ret = 0; - - if (!w) - return AVERROR(ENOMEM); - - while (*s) - if (!av_isspace(*s++)) *wp++ = s[-1]; - *wp++ = 0; - - p.class = &class; - p.stack_index=100; - p.s= w; - p.const_names = const_names; - p.funcs1 = funcs1; - p.func1_names = func1_names; - p.funcs2 = funcs2; - p.func2_names = func2_names; - p.log_offset = log_offset; - p.log_ctx = log_ctx; - - if ((ret = parse_expr(&e, &p)) < 0) - goto end; - if (*p.s) { - av_expr_free(e); - av_log(&p, AV_LOG_ERROR, "Invalid chars '%s' at the end of expression '%s'\n", p.s, s0); - ret = AVERROR(EINVAL); - goto end; - } - if (!verify_expr(e)) { - av_expr_free(e); - ret = AVERROR(EINVAL); - goto end; - } - *expr = e; -end: - av_free(w); - return ret; -} - -double av_expr_eval(AVExpr *e, const double *const_values, void *opaque) -{ - Parser p = { 0 }; - - p.const_values = const_values; - p.opaque = opaque; - return eval_expr(&p, e); -} - -int av_expr_parse_and_eval(double *d, const char *s, - const char * const *const_names, const double *const_values, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - void *opaque, int log_offset, void *log_ctx) -{ - AVExpr *e = NULL; - int ret = av_expr_parse(&e, s, const_names, func1_names, funcs1, func2_names, funcs2, log_offset, log_ctx); - - if (ret < 0) { - *d = NAN; - return ret; - } - *d = av_expr_eval(e, const_values, opaque); - av_expr_free(e); - return isnan(*d) ? AVERROR(EINVAL) : 0; -} - -#ifdef TEST -#include <string.h> - -static const double const_values[] = { - M_PI, - M_E, - 0 -}; - -static const char *const const_names[] = { - "PI", - "E", - 0 -}; - -int main(int argc, char **argv) -{ - int i; - double d; - const char *const *expr; - static const char *const exprs[] = { - "", - "1;2", - "-20", - "-PI", - "+PI", - "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", - "80G/80Gi", - "1k", - "1Gi", - "1gi", - "1GiFoo", - "1k+1k", - "1Gi*3foo", - "foo", - "foo(", - "foo()", - "foo)", - "sin", - "sin(", - "sin()", - "sin)", - "sin 10", - "sin(1,2,3)", - "sin(1 )", - "1", - "1foo", - "bar + PI + E + 100f*2 + foo", - "13k + 12f - foo(1, 2)", - "1gi", - "1Gi", - "st(0, 123)", - "st(1, 123); ld(1)", - "lte(0, 1)", - "lte(1, 1)", - "lte(1, 0)", - "lt(0, 1)", - "lt(1, 1)", - "gt(1, 0)", - "gt(2, 7)", - "gte(122, 122)", - /* compute 1+2+...+N */ - "st(0, 1); while(lte(ld(0), 100), st(1, ld(1)+ld(0));st(0, ld(0)+1)); ld(1)", - /* compute Fib(N) */ - "st(1, 1); st(2, 2); st(0, 1); while(lte(ld(0),10), st(3, ld(1)+ld(2)); st(1, ld(2)); st(2, ld(3)); st(0, ld(0)+1)); ld(3)", - "while(0, 10)", - "st(0, 1); while(lte(ld(0),100), st(1, ld(1)+ld(0)); st(0, ld(0)+1))", - "isnan(1)", - "isnan(NAN)", - "isnan(INF)", - "isinf(1)", - "isinf(NAN)", - "isinf(INF)", - "floor(NAN)", - "floor(123.123)", - "floor(-123.123)", - "trunc(123.123)", - "trunc(-123.123)", - "ceil(123.123)", - "ceil(-123.123)", - "sqrt(1764)", - "isnan(sqrt(-1))", - "not(1)", - "not(NAN)", - "not(0)", - "6.0206dB", - "-3.0103dB", - NULL - }; - - for (expr = exprs; *expr; expr++) { - printf("Evaluating '%s'\n", *expr); - av_expr_parse_and_eval(&d, *expr, - const_names, const_values, - NULL, NULL, NULL, NULL, NULL, 0, NULL); - if (isnan(d)) - printf("'%s' -> nan\n\n", *expr); - else - printf("'%s' -> %f\n\n", *expr, d); - } - - av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", - const_names, const_values, - NULL, NULL, NULL, NULL, NULL, 0, NULL); - printf("%f == 12.7\n", d); - av_expr_parse_and_eval(&d, "80G/80Gi", - const_names, const_values, - NULL, NULL, NULL, NULL, NULL, 0, NULL); - printf("%f == 0.931322575\n", d); - - if (argc > 1 && !strcmp(argv[1], "-t")) { - for (i = 0; i < 1050; i++) { - START_TIMER; - av_expr_parse_and_eval(&d, "1+(5-2)^(3-1)+1/2+sin(PI)-max(-2.2,-3.1)", - const_names, const_values, - NULL, NULL, NULL, NULL, NULL, 0, NULL); - STOP_TIMER("av_expr_parse_and_eval"); - } - } - - return 0; -} -#endif diff --git a/media/libav/libavutil/eval.h b/media/libav/libavutil/eval.h deleted file mode 100644 index ccb29e7a3..000000000 --- a/media/libav/libavutil/eval.h +++ /dev/null @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2002 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * simple arithmetic expression evaluator - */ - -#ifndef AVUTIL_EVAL_H -#define AVUTIL_EVAL_H - -#include "avutil.h" - -typedef struct AVExpr AVExpr; - -/** - * Parse and evaluate an expression. - * Note, this is significantly slower than av_expr_eval(). - * - * @param res a pointer to a double where is put the result value of - * the expression, or NAN in case of error - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param const_values a zero terminated array of values for the identifiers from const_names - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @param log_ctx parent logging context - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse_and_eval(double *res, const char *s, - const char * const *const_names, const double *const_values, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - void *opaque, int log_offset, void *log_ctx); - -/** - * Parse an expression. - * - * @param expr a pointer where is put an AVExpr containing the parsed - * value in case of successful parsing, or NULL otherwise. - * The pointed to AVExpr must be freed with av_expr_free() by the user - * when it is not needed anymore. - * @param s expression as a zero terminated string, for example "1+2^3+5*5+sin(2/3)" - * @param const_names NULL terminated array of zero terminated strings of constant identifiers, for example {"PI", "E", 0} - * @param func1_names NULL terminated array of zero terminated strings of funcs1 identifiers - * @param funcs1 NULL terminated array of function pointers for functions which take 1 argument - * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers - * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments - * @param log_ctx parent logging context - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_expr_parse(AVExpr **expr, const char *s, - const char * const *const_names, - const char * const *func1_names, double (* const *funcs1)(void *, double), - const char * const *func2_names, double (* const *funcs2)(void *, double, double), - int log_offset, void *log_ctx); - -/** - * Evaluate a previously parsed expression. - * - * @param const_values a zero terminated array of values for the identifiers from av_expr_parse() const_names - * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2 - * @return the value of the expression - */ -double av_expr_eval(AVExpr *e, const double *const_values, void *opaque); - -/** - * Free a parsed expression previously created with av_expr_parse(). - */ -void av_expr_free(AVExpr *e); - -/** - * Parse the string in numstr and return its value as a double. If - * the string is empty, contains only whitespaces, or does not contain - * an initial substring that has the expected syntax for a - * floating-point number, no conversion is performed. In this case, - * returns a value of zero and the value returned in tail is the value - * of numstr. - * - * @param numstr a string representing a number, may contain one of - * the International System number postfixes, for example 'K', 'M', - * 'G'. If 'i' is appended after the postfix, powers of 2 are used - * instead of powers of 10. The 'B' postfix multiplies the value for - * 8, and can be appended after another postfix or used alone. This - * allows using for example 'KB', 'MiB', 'G' and 'B' as postfix. - * @param tail if non-NULL puts here the pointer to the char next - * after the last parsed character - */ -double av_strtod(const char *numstr, char **tail); - -#endif /* AVUTIL_EVAL_H */ diff --git a/media/libav/libavutil/file.c b/media/libav/libavutil/file.c deleted file mode 100644 index d2765b849..000000000 --- a/media/libav/libavutil/file.c +++ /dev/null @@ -1,138 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "file.h" -#include "internal.h" -#include "log.h" -#include "mem.h" -#include <fcntl.h> -#include <sys/stat.h> -#if HAVE_UNISTD_H -#include <unistd.h> -#endif -#if HAVE_IO_H -#include <io.h> -#endif -#if HAVE_MMAP -#include <sys/mman.h> -#elif HAVE_MAPVIEWOFFILE -#include <windows.h> -#endif - -typedef struct { - const AVClass *class; - int log_offset; - void *log_ctx; -} FileLogContext; - -static const AVClass file_log_ctx_class = { - "FILE", av_default_item_name, NULL, LIBAVUTIL_VERSION_INT, - offsetof(FileLogContext, log_offset), offsetof(FileLogContext, log_ctx) -}; - -int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, - int log_offset, void *log_ctx) -{ - FileLogContext file_log_ctx = { &file_log_ctx_class, log_offset, log_ctx }; - int err, fd = avpriv_open(filename, O_RDONLY); - struct stat st; - av_unused void *ptr; - off_t off_size; - char errbuf[128]; - *bufptr = NULL; - - if (fd < 0) { - err = AVERROR(errno); - av_strerror(err, errbuf, sizeof(errbuf)); - av_log(&file_log_ctx, AV_LOG_ERROR, "Cannot read file '%s': %s\n", filename, errbuf); - return err; - } - - if (fstat(fd, &st) < 0) { - err = AVERROR(errno); - av_strerror(err, errbuf, sizeof(errbuf)); - av_log(&file_log_ctx, AV_LOG_ERROR, "Error occurred in fstat(): %s\n", errbuf); - close(fd); - return err; - } - - off_size = st.st_size; - if (off_size > SIZE_MAX) { - av_log(&file_log_ctx, AV_LOG_ERROR, - "File size for file '%s' is too big\n", filename); - close(fd); - return AVERROR(EINVAL); - } - *size = off_size; - -#if HAVE_MMAP - ptr = mmap(NULL, *size, PROT_READ|PROT_WRITE, MAP_PRIVATE, fd, 0); - if (ptr == MAP_FAILED) { - err = AVERROR(errno); - av_strerror(err, errbuf, sizeof(errbuf)); - av_log(&file_log_ctx, AV_LOG_ERROR, "Error occurred in mmap(): %s\n", errbuf); - close(fd); - return err; - } - *bufptr = ptr; -#elif HAVE_MAPVIEWOFFILE - { - HANDLE mh, fh = (HANDLE)_get_osfhandle(fd); - - mh = CreateFileMapping(fh, NULL, PAGE_READONLY, 0, 0, NULL); - if (!mh) { - av_log(&file_log_ctx, AV_LOG_ERROR, "Error occurred in CreateFileMapping()\n"); - close(fd); - return -1; - } - - ptr = MapViewOfFile(mh, FILE_MAP_READ, 0, 0, *size); - CloseHandle(mh); - if (!ptr) { - av_log(&file_log_ctx, AV_LOG_ERROR, "Error occurred in MapViewOfFile()\n"); - close(fd); - return -1; - } - - *bufptr = ptr; - } -#else - *bufptr = av_malloc(*size); - if (!*bufptr) { - av_log(&file_log_ctx, AV_LOG_ERROR, "Memory allocation error occurred\n"); - close(fd); - return AVERROR(ENOMEM); - } - read(fd, *bufptr, *size); -#endif - - close(fd); - return 0; -} - -void av_file_unmap(uint8_t *bufptr, size_t size) -{ -#if HAVE_MMAP - munmap(bufptr, size); -#elif HAVE_MAPVIEWOFFILE - UnmapViewOfFile(bufptr); -#else - av_free(bufptr); -#endif -} diff --git a/media/libav/libavutil/file.h b/media/libav/libavutil/file.h deleted file mode 100644 index e3f02a830..000000000 --- a/media/libav/libavutil/file.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_FILE_H -#define AVUTIL_FILE_H - -#include <stdint.h> - -#include "avutil.h" - -/** - * @file - * Misc file utilities. - */ - -/** - * Read the file with name filename, and put its content in a newly - * allocated buffer or map it with mmap() when available. - * In case of success set *bufptr to the read or mmapped buffer, and - * *size to the size in bytes of the buffer in *bufptr. - * The returned buffer must be released with av_file_unmap(). - * - * @param log_offset loglevel offset used for logging - * @param log_ctx context used for logging - * @return a non negative number in case of success, a negative value - * corresponding to an AVERROR error code in case of failure - */ -int av_file_map(const char *filename, uint8_t **bufptr, size_t *size, - int log_offset, void *log_ctx); - -/** - * Unmap or free the buffer bufptr created by av_file_map(). - * - * @param size size in bytes of bufptr, must be the same as returned - * by av_file_map() - */ -void av_file_unmap(uint8_t *bufptr, size_t size); - -#endif /* AVUTIL_FILE_H */ diff --git a/media/libav/libavutil/file_open.c b/media/libav/libavutil/file_open.c deleted file mode 100644 index 765eb60ef..000000000 --- a/media/libav/libavutil/file_open.c +++ /dev/null @@ -1,93 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" -#include "internal.h" -#include "mem.h" -#include <stdarg.h> -#include <fcntl.h> -#include <sys/stat.h> -#if HAVE_UNISTD_H -#include <unistd.h> -#endif -#if HAVE_IO_H -#include <io.h> -#endif - -#if defined(_WIN32) && !defined(__MINGW32CE__) -#undef open -#undef lseek -#undef stat -#undef fstat -#include <windows.h> -#include <share.h> -#include <errno.h> - -static int win32_open(const char *filename_utf8, int oflag, int pmode) -{ - int fd; - int num_chars; - wchar_t *filename_w; - - /* convert UTF-8 to wide chars */ - num_chars = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, filename_utf8, -1, NULL, 0); - if (num_chars <= 0) - goto fallback; - filename_w = av_mallocz(sizeof(wchar_t) * num_chars); - if (!filename_w) { - errno = ENOMEM; - return -1; - } - MultiByteToWideChar(CP_UTF8, 0, filename_utf8, -1, filename_w, num_chars); - - fd = _wsopen(filename_w, oflag, SH_DENYNO, pmode); - av_freep(&filename_w); - - if (fd != -1 || (oflag & O_CREAT)) - return fd; - -fallback: - /* filename may be be in CP_ACP */ - return _sopen(filename_utf8, oflag, SH_DENYNO, pmode); -} -#define open win32_open -#endif - -int avpriv_open(const char *filename, int flags, ...) -{ - int fd; - unsigned int mode = 0; - va_list ap; - - va_start(ap, flags); - if (flags & O_CREAT) - mode = va_arg(ap, unsigned int); - va_end(ap); - -#ifdef O_CLOEXEC - flags |= O_CLOEXEC; -#endif - - fd = open(filename, flags, mode); -#if HAVE_FCNTL - if (fd != -1) - fcntl(fd, F_SETFD, FD_CLOEXEC); -#endif - - return fd; -} diff --git a/media/libav/libavutil/internal.h b/media/libav/libavutil/internal.h deleted file mode 100644 index dd5e6a4eb..000000000 --- a/media/libav/libavutil/internal.h +++ /dev/null @@ -1,225 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * common internal API header - */ - -#ifndef AVUTIL_INTERNAL_H -#define AVUTIL_INTERNAL_H - -#if !defined(DEBUG) && !defined(NDEBUG) -# define NDEBUG -#endif - -#include <limits.h> -#include <stdint.h> -#include <stddef.h> -#include <assert.h> -#include "config.h" -#include "attributes.h" -#include "dict.h" -#include "pixfmt.h" - -#if ARCH_X86 -# include "x86/emms.h" -#endif - -#ifndef emms_c -# define emms_c() -#endif - -#ifndef attribute_align_arg -#if ARCH_X86_32 && AV_GCC_VERSION_AT_LEAST(4,2) -# define attribute_align_arg __attribute__((force_align_arg_pointer)) -#else -# define attribute_align_arg -#endif -#endif - -#if defined(_MSC_VER) && CONFIG_SHARED -# define av_export __declspec(dllimport) -#else -# define av_export -#endif - -#if HAVE_PRAGMA_DEPRECATED -# if defined(__ICL) -# define FF_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:1478)) -# define FF_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) -# elif defined(_MSC_VER) -# define FF_DISABLE_DEPRECATION_WARNINGS __pragma(warning(push)) __pragma(warning(disable:4996)) -# define FF_ENABLE_DEPRECATION_WARNINGS __pragma(warning(pop)) -# else -# define FF_DISABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") -# define FF_ENABLE_DEPRECATION_WARNINGS _Pragma("GCC diagnostic warning \"-Wdeprecated-declarations\"") -# endif -#else -# define FF_DISABLE_DEPRECATION_WARNINGS -# define FF_ENABLE_DEPRECATION_WARNINGS -#endif - -#ifndef INT_BIT -# define INT_BIT (CHAR_BIT * sizeof(int)) -#endif - -// Some broken preprocessors need a second expansion -// to be forced to tokenize __VA_ARGS__ -#define E1(x) x - -/* Check if the hard coded offset of a struct member still matches reality. - * Induce a compilation failure if not. - */ -#define AV_CHECK_OFFSET(s, m, o) struct check_##o { \ - int x_##o[offsetof(s, m) == o? 1: -1]; \ - } - -#define LOCAL_ALIGNED_A(a, t, v, s, o, ...) \ - uint8_t la_##v[sizeof(t s o) + (a)]; \ - t (*v) o = (void *)FFALIGN((uintptr_t)la_##v, a) - -#define LOCAL_ALIGNED_D(a, t, v, s, o, ...) \ - DECLARE_ALIGNED(a, t, la_##v) s o; \ - t (*v) o = la_##v - -#define LOCAL_ALIGNED(a, t, v, ...) E1(LOCAL_ALIGNED_A(a, t, v, __VA_ARGS__,,)) - -#if HAVE_LOCAL_ALIGNED_8 -# define LOCAL_ALIGNED_8(t, v, ...) E1(LOCAL_ALIGNED_D(8, t, v, __VA_ARGS__,,)) -#else -# define LOCAL_ALIGNED_8(t, v, ...) LOCAL_ALIGNED(8, t, v, __VA_ARGS__) -#endif - -#if HAVE_LOCAL_ALIGNED_16 -# define LOCAL_ALIGNED_16(t, v, ...) E1(LOCAL_ALIGNED_D(16, t, v, __VA_ARGS__,,)) -#else -# define LOCAL_ALIGNED_16(t, v, ...) LOCAL_ALIGNED(16, t, v, __VA_ARGS__) -#endif - -#define FF_ALLOC_OR_GOTO(ctx, p, size, label)\ -{\ - p = av_malloc(size);\ - if (!(p) && (size) != 0) {\ - av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\ - goto label;\ - }\ -} - -#define FF_ALLOCZ_OR_GOTO(ctx, p, size, label)\ -{\ - p = av_mallocz(size);\ - if (!(p) && (size) != 0) {\ - av_log(ctx, AV_LOG_ERROR, "Cannot allocate memory.\n");\ - goto label;\ - }\ -} - -#include "libm.h" - -#if defined(_MSC_VER) && _MSC_VER < 1800 -#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod") -#pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf") -#endif - -/** - * Return NULL if CONFIG_SMALL is true, otherwise the argument - * without modification. Used to disable the definition of strings - * (for example AVCodec long_names). - */ -#if CONFIG_SMALL -# define NULL_IF_CONFIG_SMALL(x) NULL -#else -# define NULL_IF_CONFIG_SMALL(x) x -#endif - - -/** - * Define a function with only the non-default version specified. - * - * On systems with ELF shared libraries, all symbols exported from - * Libav libraries are tagged with the name and major version of the - * library to which they belong. If a function is moved from one - * library to another, a wrapper must be retained in the original - * location to preserve binary compatibility. - * - * Functions defined with this macro will never be used to resolve - * symbols by the build-time linker. - * - * @param type return type of function - * @param name name of function - * @param args argument list of function - * @param ver version tag to assign function - */ -#if HAVE_SYMVER_ASM_LABEL -# define FF_SYMVER(type, name, args, ver) \ - type ff_##name args __asm__ (EXTERN_PREFIX #name "@" ver); \ - type ff_##name args -#elif HAVE_SYMVER_GNU_ASM -# define FF_SYMVER(type, name, args, ver) \ - __asm__ (".symver ff_" #name "," EXTERN_PREFIX #name "@" ver); \ - type ff_##name args; \ - type ff_##name args -#endif - -/** - * Return NULL if a threading library has not been enabled. - * Used to disable threading functions in AVCodec definitions - * when not needed. - */ -#if HAVE_THREADS -# define ONLY_IF_THREADS_ENABLED(x) x -#else -# define ONLY_IF_THREADS_ENABLED(x) NULL -#endif - -/** - * Log a generic warning message about a missing feature. - * - * @param[in] avc a pointer to an arbitrary struct of which the first - * field is a pointer to an AVClass struct - * @param[in] msg string containing the name of the missing feature - */ -void avpriv_report_missing_feature(void *avc, - const char *msg, ...) av_printf_format(2, 3); - -/** - * Log a generic warning message about a missing feature. - * Additionally request that a sample showcasing the feature be uploaded. - * - * @param[in] avc a pointer to an arbitrary struct of which the first field is - * a pointer to an AVClass struct - * @param[in] msg string containing the name of the missing feature - */ -void avpriv_request_sample(void *avc, - const char *msg, ...) av_printf_format(2, 3); - -#if HAVE_LIBC_MSVCRT -#define avpriv_open ff_open -#endif - -/** - * A wrapper for open() setting O_CLOEXEC. - */ -int avpriv_open(const char *filename, int flags, ...); - -int avpriv_set_systematic_pal2(uint32_t pal[256], enum AVPixelFormat pix_fmt); - -#endif /* AVUTIL_INTERNAL_H */ diff --git a/media/libav/libavutil/intfloat.h b/media/libav/libavutil/intfloat.h deleted file mode 100644 index 38d26ad87..000000000 --- a/media/libav/libavutil/intfloat.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2011 Mans Rullgard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTFLOAT_H -#define AVUTIL_INTFLOAT_H - -#include <stdint.h> -#include "attributes.h" - -union av_intfloat32 { - uint32_t i; - float f; -}; - -union av_intfloat64 { - uint64_t i; - double f; -}; - -/** - * Reinterpret a 32-bit integer as a float. - */ -static av_always_inline float av_int2float(uint32_t i) -{ - union av_intfloat32 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a float as a 32-bit integer. - */ -static av_always_inline uint32_t av_float2int(float f) -{ - union av_intfloat32 v; - v.f = f; - return v.i; -} - -/** - * Reinterpret a 64-bit integer as a double. - */ -static av_always_inline double av_int2double(uint64_t i) -{ - union av_intfloat64 v; - v.i = i; - return v.f; -} - -/** - * Reinterpret a double as a 64-bit integer. - */ -static av_always_inline uint64_t av_double2int(double f) -{ - union av_intfloat64 v; - v.f = f; - return v.i; -} - -#endif /* AVUTIL_INTFLOAT_H */ diff --git a/media/libav/libavutil/intmath.c b/media/libav/libavutil/intmath.c deleted file mode 100644 index 8db425c6e..000000000 --- a/media/libav/libavutil/intmath.c +++ /dev/null @@ -1,39 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "intmath.h" - -/* undef these to get the function prototypes from common.h */ -#undef av_log2 -#undef av_log2_16bit -#include "common.h" - -int av_log2(unsigned v) -{ - return ff_log2(v); -} - -int av_log2_16bit(unsigned v) -{ - return ff_log2_16bit(v); -} - -int av_ctz(int v) -{ - return ff_ctz(v); -} diff --git a/media/libav/libavutil/intmath.h b/media/libav/libavutil/intmath.h deleted file mode 100644 index a5ee6525e..000000000 --- a/media/libav/libavutil/intmath.h +++ /dev/null @@ -1,146 +0,0 @@ -/* - * Copyright (c) 2010 Mans Rullgard <mans@mansr.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTMATH_H -#define AVUTIL_INTMATH_H - -#include <stdint.h> - -#include "config.h" -#include "attributes.h" - -#if ARCH_ARM -# include "arm/intmath.h" -#endif - -/** - * @addtogroup lavu_internal - * @{ - */ - -#if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) - -#ifndef ff_log2 -# define ff_log2(x) (31 - __builtin_clz((x)|1)) -# ifndef ff_log2_16bit -# define ff_log2_16bit av_log2 -# endif -#endif /* ff_log2 */ - -#endif /* AV_GCC_VERSION_AT_LEAST(3,4) */ - -extern const uint8_t ff_log2_tab[256]; - -#ifndef ff_log2 -#define ff_log2 ff_log2_c -static av_always_inline av_const int ff_log2_c(unsigned int v) -{ - int n = 0; - if (v & 0xffff0000) { - v >>= 16; - n += 16; - } - if (v & 0xff00) { - v >>= 8; - n += 8; - } - n += ff_log2_tab[v]; - - return n; -} -#endif - -#ifndef ff_log2_16bit -#define ff_log2_16bit ff_log2_16bit_c -static av_always_inline av_const int ff_log2_16bit_c(unsigned int v) -{ - int n = 0; - if (v & 0xff00) { - v >>= 8; - n += 8; - } - n += ff_log2_tab[v]; - - return n; -} -#endif - -#define av_log2 ff_log2 -#define av_log2_16bit ff_log2_16bit - -/** - * @} - */ - -/** - * @addtogroup lavu_math - * @{ - */ - -#if HAVE_FAST_CLZ && AV_GCC_VERSION_AT_LEAST(3,4) -#ifndef ff_ctz -#define ff_ctz(v) __builtin_ctz(v) -#endif -#endif - -#ifndef ff_ctz -#define ff_ctz ff_ctz_c -static av_always_inline av_const int ff_ctz_c(int v) -{ - int c; - - if (v & 0x1) - return 0; - - c = 1; - if (!(v & 0xffff)) { - v >>= 16; - c += 16; - } - if (!(v & 0xff)) { - v >>= 8; - c += 8; - } - if (!(v & 0xf)) { - v >>= 4; - c += 4; - } - if (!(v & 0x3)) { - v >>= 2; - c += 2; - } - c -= v & 0x1; - - return c; -} -#endif - -/** - * Trailing zero bit count. - * - * @param v input value. If v is 0, the result is undefined. - * @return the number of trailing 0-bits - */ -int av_ctz(int v); - -/** - * @} - */ -#endif /* AVUTIL_INTMATH_H */ diff --git a/media/libav/libavutil/intreadwrite.h b/media/libav/libavutil/intreadwrite.h deleted file mode 100644 index f77fd60f3..000000000 --- a/media/libav/libavutil/intreadwrite.h +++ /dev/null @@ -1,549 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_INTREADWRITE_H -#define AVUTIL_INTREADWRITE_H - -#include <stdint.h> -#include "libavutil/avconfig.h" -#include "attributes.h" -#include "bswap.h" - -typedef union { - uint64_t u64; - uint32_t u32[2]; - uint16_t u16[4]; - uint8_t u8 [8]; - double f64; - float f32[2]; -} av_alias av_alias64; - -typedef union { - uint32_t u32; - uint16_t u16[2]; - uint8_t u8 [4]; - float f32; -} av_alias av_alias32; - -typedef union { - uint16_t u16; - uint8_t u8 [2]; -} av_alias av_alias16; - -/* - * Arch-specific headers can provide any combination of - * AV_[RW][BLN](16|24|32|64) and AV_(COPY|SWAP|ZERO)(64|128) macros. - * Preprocessor symbols must be defined, even if these are implemented - * as inline functions. - */ - -#ifdef HAVE_AV_CONFIG_H - -#include "config.h" - -#if ARCH_ARM -# include "arm/intreadwrite.h" -#elif ARCH_AVR32 -# include "avr32/intreadwrite.h" -#elif ARCH_MIPS -# include "mips/intreadwrite.h" -#elif ARCH_PPC -# include "ppc/intreadwrite.h" -#elif ARCH_TOMI -# include "tomi/intreadwrite.h" -#elif ARCH_X86 -# include "x86/intreadwrite.h" -#endif - -#endif /* HAVE_AV_CONFIG_H */ - -/* - * Map AV_RNXX <-> AV_R[BL]XX for all variants provided by per-arch headers. - */ - -#if AV_HAVE_BIGENDIAN - -# if defined(AV_RN16) && !defined(AV_RB16) -# define AV_RB16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RB16) -# define AV_RN16(p) AV_RB16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WB16) -# define AV_WB16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WB16) -# define AV_WN16(p, v) AV_WB16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RB24) -# define AV_RB24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RB24) -# define AV_RN24(p) AV_RB24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WB24) -# define AV_WB24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WB24) -# define AV_WN24(p, v) AV_WB24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RB32) -# define AV_RB32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RB32) -# define AV_RN32(p) AV_RB32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WB32) -# define AV_WB32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WB32) -# define AV_WN32(p, v) AV_WB32(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RB64) -# define AV_RB64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RB64) -# define AV_RN64(p) AV_RB64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WB64) -# define AV_WB64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WB64) -# define AV_WN64(p, v) AV_WB64(p, v) -# endif - -#else /* AV_HAVE_BIGENDIAN */ - -# if defined(AV_RN16) && !defined(AV_RL16) -# define AV_RL16(p) AV_RN16(p) -# elif !defined(AV_RN16) && defined(AV_RL16) -# define AV_RN16(p) AV_RL16(p) -# endif - -# if defined(AV_WN16) && !defined(AV_WL16) -# define AV_WL16(p, v) AV_WN16(p, v) -# elif !defined(AV_WN16) && defined(AV_WL16) -# define AV_WN16(p, v) AV_WL16(p, v) -# endif - -# if defined(AV_RN24) && !defined(AV_RL24) -# define AV_RL24(p) AV_RN24(p) -# elif !defined(AV_RN24) && defined(AV_RL24) -# define AV_RN24(p) AV_RL24(p) -# endif - -# if defined(AV_WN24) && !defined(AV_WL24) -# define AV_WL24(p, v) AV_WN24(p, v) -# elif !defined(AV_WN24) && defined(AV_WL24) -# define AV_WN24(p, v) AV_WL24(p, v) -# endif - -# if defined(AV_RN32) && !defined(AV_RL32) -# define AV_RL32(p) AV_RN32(p) -# elif !defined(AV_RN32) && defined(AV_RL32) -# define AV_RN32(p) AV_RL32(p) -# endif - -# if defined(AV_WN32) && !defined(AV_WL32) -# define AV_WL32(p, v) AV_WN32(p, v) -# elif !defined(AV_WN32) && defined(AV_WL32) -# define AV_WN32(p, v) AV_WL32(p, v) -# endif - -# if defined(AV_RN64) && !defined(AV_RL64) -# define AV_RL64(p) AV_RN64(p) -# elif !defined(AV_RN64) && defined(AV_RL64) -# define AV_RN64(p) AV_RL64(p) -# endif - -# if defined(AV_WN64) && !defined(AV_WL64) -# define AV_WL64(p, v) AV_WN64(p, v) -# elif !defined(AV_WN64) && defined(AV_WL64) -# define AV_WN64(p, v) AV_WL64(p, v) -# endif - -#endif /* !AV_HAVE_BIGENDIAN */ - -/* - * Define AV_[RW]N helper macros to simplify definitions not provided - * by per-arch headers. - */ - -#if defined(__GNUC__) && !defined(__TI_COMPILER_VERSION__) - -union unaligned_64 { uint64_t l; } __attribute__((packed)) av_alias; -union unaligned_32 { uint32_t l; } __attribute__((packed)) av_alias; -union unaligned_16 { uint16_t l; } __attribute__((packed)) av_alias; - -# define AV_RN(s, p) (((const union unaligned_##s *) (p))->l) -# define AV_WN(s, p, v) ((((union unaligned_##s *) (p))->l) = (v)) - -#elif defined(__DECC) - -# define AV_RN(s, p) (*((const __unaligned uint##s##_t*)(p))) -# define AV_WN(s, p, v) (*((__unaligned uint##s##_t*)(p)) = (v)) - -#elif AV_HAVE_FAST_UNALIGNED - -# define AV_RN(s, p) (((const av_alias##s*)(p))->u##s) -# define AV_WN(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#else - -#ifndef AV_RB16 -# define AV_RB16(x) \ - ((((const uint8_t*)(x))[0] << 8) | \ - ((const uint8_t*)(x))[1]) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, d) do { \ - ((uint8_t*)(p))[1] = (d); \ - ((uint8_t*)(p))[0] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RL16 -# define AV_RL16(x) \ - ((((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - } while(0) -#endif - -#ifndef AV_RB32 -# define AV_RB32(x) \ - (((uint32_t)((const uint8_t*)(x))[0] << 24) | \ - (((const uint8_t*)(x))[1] << 16) | \ - (((const uint8_t*)(x))[2] << 8) | \ - ((const uint8_t*)(x))[3]) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, d) do { \ - ((uint8_t*)(p))[3] = (d); \ - ((uint8_t*)(p))[2] = (d)>>8; \ - ((uint8_t*)(p))[1] = (d)>>16; \ - ((uint8_t*)(p))[0] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RL32 -# define AV_RL32(x) \ - (((uint32_t)((const uint8_t*)(x))[3] << 24) | \ - (((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - } while(0) -#endif - -#ifndef AV_RB64 -# define AV_RB64(x) \ - (((uint64_t)((const uint8_t*)(x))[0] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 8) | \ - (uint64_t)((const uint8_t*)(x))[7]) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, d) do { \ - ((uint8_t*)(p))[7] = (d); \ - ((uint8_t*)(p))[6] = (d)>>8; \ - ((uint8_t*)(p))[5] = (d)>>16; \ - ((uint8_t*)(p))[4] = (d)>>24; \ - ((uint8_t*)(p))[3] = (d)>>32; \ - ((uint8_t*)(p))[2] = (d)>>40; \ - ((uint8_t*)(p))[1] = (d)>>48; \ - ((uint8_t*)(p))[0] = (d)>>56; \ - } while(0) -#endif - -#ifndef AV_RL64 -# define AV_RL64(x) \ - (((uint64_t)((const uint8_t*)(x))[7] << 56) | \ - ((uint64_t)((const uint8_t*)(x))[6] << 48) | \ - ((uint64_t)((const uint8_t*)(x))[5] << 40) | \ - ((uint64_t)((const uint8_t*)(x))[4] << 32) | \ - ((uint64_t)((const uint8_t*)(x))[3] << 24) | \ - ((uint64_t)((const uint8_t*)(x))[2] << 16) | \ - ((uint64_t)((const uint8_t*)(x))[1] << 8) | \ - (uint64_t)((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - ((uint8_t*)(p))[3] = (d)>>24; \ - ((uint8_t*)(p))[4] = (d)>>32; \ - ((uint8_t*)(p))[5] = (d)>>40; \ - ((uint8_t*)(p))[6] = (d)>>48; \ - ((uint8_t*)(p))[7] = (d)>>56; \ - } while(0) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RN(s, p) AV_RB##s(p) -# define AV_WN(s, p, v) AV_WB##s(p, v) -#else -# define AV_RN(s, p) AV_RL##s(p) -# define AV_WN(s, p, v) AV_WL##s(p, v) -#endif - -#endif /* HAVE_FAST_UNALIGNED */ - -#ifndef AV_RN16 -# define AV_RN16(p) AV_RN(16, p) -#endif - -#ifndef AV_RN32 -# define AV_RN32(p) AV_RN(32, p) -#endif - -#ifndef AV_RN64 -# define AV_RN64(p) AV_RN(64, p) -#endif - -#ifndef AV_WN16 -# define AV_WN16(p, v) AV_WN(16, p, v) -#endif - -#ifndef AV_WN32 -# define AV_WN32(p, v) AV_WN(32, p, v) -#endif - -#ifndef AV_WN64 -# define AV_WN64(p, v) AV_WN(64, p, v) -#endif - -#if AV_HAVE_BIGENDIAN -# define AV_RB(s, p) AV_RN##s(p) -# define AV_WB(s, p, v) AV_WN##s(p, v) -# define AV_RL(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WL(s, p, v) AV_WN##s(p, av_bswap##s(v)) -#else -# define AV_RB(s, p) av_bswap##s(AV_RN##s(p)) -# define AV_WB(s, p, v) AV_WN##s(p, av_bswap##s(v)) -# define AV_RL(s, p) AV_RN##s(p) -# define AV_WL(s, p, v) AV_WN##s(p, v) -#endif - -#define AV_RB8(x) (((const uint8_t*)(x))[0]) -#define AV_WB8(p, d) do { ((uint8_t*)(p))[0] = (d); } while(0) - -#define AV_RL8(x) AV_RB8(x) -#define AV_WL8(p, d) AV_WB8(p, d) - -#ifndef AV_RB16 -# define AV_RB16(p) AV_RB(16, p) -#endif -#ifndef AV_WB16 -# define AV_WB16(p, v) AV_WB(16, p, v) -#endif - -#ifndef AV_RL16 -# define AV_RL16(p) AV_RL(16, p) -#endif -#ifndef AV_WL16 -# define AV_WL16(p, v) AV_WL(16, p, v) -#endif - -#ifndef AV_RB32 -# define AV_RB32(p) AV_RB(32, p) -#endif -#ifndef AV_WB32 -# define AV_WB32(p, v) AV_WB(32, p, v) -#endif - -#ifndef AV_RL32 -# define AV_RL32(p) AV_RL(32, p) -#endif -#ifndef AV_WL32 -# define AV_WL32(p, v) AV_WL(32, p, v) -#endif - -#ifndef AV_RB64 -# define AV_RB64(p) AV_RB(64, p) -#endif -#ifndef AV_WB64 -# define AV_WB64(p, v) AV_WB(64, p, v) -#endif - -#ifndef AV_RL64 -# define AV_RL64(p) AV_RL(64, p) -#endif -#ifndef AV_WL64 -# define AV_WL64(p, v) AV_WL(64, p, v) -#endif - -#ifndef AV_RB24 -# define AV_RB24(x) \ - ((((const uint8_t*)(x))[0] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[2]) -#endif -#ifndef AV_WB24 -# define AV_WB24(p, d) do { \ - ((uint8_t*)(p))[2] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[0] = (d)>>16; \ - } while(0) -#endif - -#ifndef AV_RL24 -# define AV_RL24(x) \ - ((((const uint8_t*)(x))[2] << 16) | \ - (((const uint8_t*)(x))[1] << 8) | \ - ((const uint8_t*)(x))[0]) -#endif -#ifndef AV_WL24 -# define AV_WL24(p, d) do { \ - ((uint8_t*)(p))[0] = (d); \ - ((uint8_t*)(p))[1] = (d)>>8; \ - ((uint8_t*)(p))[2] = (d)>>16; \ - } while(0) -#endif - -/* - * The AV_[RW]NA macros access naturally aligned data - * in a type-safe way. - */ - -#define AV_RNA(s, p) (((const av_alias##s*)(p))->u##s) -#define AV_WNA(s, p, v) (((av_alias##s*)(p))->u##s = (v)) - -#ifndef AV_RN16A -# define AV_RN16A(p) AV_RNA(16, p) -#endif - -#ifndef AV_RN32A -# define AV_RN32A(p) AV_RNA(32, p) -#endif - -#ifndef AV_RN64A -# define AV_RN64A(p) AV_RNA(64, p) -#endif - -#ifndef AV_WN16A -# define AV_WN16A(p, v) AV_WNA(16, p, v) -#endif - -#ifndef AV_WN32A -# define AV_WN32A(p, v) AV_WNA(32, p, v) -#endif - -#ifndef AV_WN64A -# define AV_WN64A(p, v) AV_WNA(64, p, v) -#endif - -/* - * The AV_COPYxxU macros are suitable for copying data to/from unaligned - * memory locations. - */ - -#define AV_COPYU(n, d, s) AV_WN##n(d, AV_RN##n(s)); - -#ifndef AV_COPY16U -# define AV_COPY16U(d, s) AV_COPYU(16, d, s) -#endif - -#ifndef AV_COPY32U -# define AV_COPY32U(d, s) AV_COPYU(32, d, s) -#endif - -#ifndef AV_COPY64U -# define AV_COPY64U(d, s) AV_COPYU(64, d, s) -#endif - -#ifndef AV_COPY128U -# define AV_COPY128U(d, s) \ - do { \ - AV_COPY64U(d, s); \ - AV_COPY64U((char *)(d) + 8, (const char *)(s) + 8); \ - } while(0) -#endif - -/* Parameters for AV_COPY*, AV_SWAP*, AV_ZERO* must be - * naturally aligned. They may be implemented using MMX, - * so emms_c() must be called before using any float code - * afterwards. - */ - -#define AV_COPY(n, d, s) \ - (((av_alias##n*)(d))->u##n = ((const av_alias##n*)(s))->u##n) - -#ifndef AV_COPY16 -# define AV_COPY16(d, s) AV_COPY(16, d, s) -#endif - -#ifndef AV_COPY32 -# define AV_COPY32(d, s) AV_COPY(32, d, s) -#endif - -#ifndef AV_COPY64 -# define AV_COPY64(d, s) AV_COPY(64, d, s) -#endif - -#ifndef AV_COPY128 -# define AV_COPY128(d, s) \ - do { \ - AV_COPY64(d, s); \ - AV_COPY64((char*)(d)+8, (char*)(s)+8); \ - } while(0) -#endif - -#define AV_SWAP(n, a, b) FFSWAP(av_alias##n, *(av_alias##n*)(a), *(av_alias##n*)(b)) - -#ifndef AV_SWAP64 -# define AV_SWAP64(a, b) AV_SWAP(64, a, b) -#endif - -#define AV_ZERO(n, d) (((av_alias##n*)(d))->u##n = 0) - -#ifndef AV_ZERO16 -# define AV_ZERO16(d) AV_ZERO(16, d) -#endif - -#ifndef AV_ZERO32 -# define AV_ZERO32(d) AV_ZERO(32, d) -#endif - -#ifndef AV_ZERO64 -# define AV_ZERO64(d) AV_ZERO(64, d) -#endif - -#ifndef AV_ZERO128 -# define AV_ZERO128(d) \ - do { \ - AV_ZERO64(d); \ - AV_ZERO64((char*)(d)+8); \ - } while(0) -#endif - -#endif /* AVUTIL_INTREADWRITE_H */ diff --git a/media/libav/libavutil/libm.h b/media/libav/libavutil/libm.h deleted file mode 100644 index d6c2cf862..000000000 --- a/media/libav/libavutil/libm.h +++ /dev/null @@ -1,178 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * Replacements for frequently missing libm functions - */ - -#ifndef AVUTIL_LIBM_H -#define AVUTIL_LIBM_H - -#include <math.h> -#include "config.h" -#include "attributes.h" -#include "intfloat.h" - -#if !HAVE_ATANF -#undef atanf -#define atanf(x) ((float)atan(x)) -#endif - -#if !HAVE_ATAN2F -#undef atan2f -#define atan2f(y, x) ((float)atan2(y, x)) -#endif - -#if !HAVE_POWF -#undef powf -#define powf(x, y) ((float)pow(x, y)) -#endif - -#if !HAVE_CBRTF -static av_always_inline float cbrtf(float x) -{ - return x < 0 ? -powf(-x, 1.0 / 3.0) : powf(x, 1.0 / 3.0); -} -#endif - -#if !HAVE_COSF -#undef cosf -#define cosf(x) ((float)cos(x)) -#endif - -#if !HAVE_EXPF -#undef expf -#define expf(x) ((float)exp(x)) -#endif - -#if !HAVE_EXP2 -#undef exp2 -#define exp2(x) exp((x) * 0.693147180559945) -#endif /* HAVE_EXP2 */ - -#if !HAVE_EXP2F -#undef exp2f -#define exp2f(x) ((float)exp2(x)) -#endif /* HAVE_EXP2F */ - -#if !HAVE_ISINF -static av_always_inline av_const int isinf(float x) -{ - uint32_t v = av_float2int(x); - if ((v & 0x7f800000) != 0x7f800000) - return 0; - return !(v & 0x007fffff); -} -#endif /* HAVE_ISINF */ - -#if !HAVE_ISNAN -static av_always_inline av_const int isnan(float x) -{ - uint32_t v = av_float2int(x); - if ((v & 0x7f800000) != 0x7f800000) - return 0; - return v & 0x007fffff; -} -#endif /* HAVE_ISNAN */ - -#if !HAVE_LDEXPF -#undef ldexpf -#define ldexpf(x, exp) ((float)ldexp(x, exp)) -#endif - -#if !HAVE_LLRINT -#undef llrint -#define llrint(x) ((long long)rint(x)) -#endif /* HAVE_LLRINT */ - -#if !HAVE_LLRINTF -#undef llrintf -#define llrintf(x) ((long long)rint(x)) -#endif /* HAVE_LLRINT */ - -#if !HAVE_LOG2 -#undef log2 -#define log2(x) (log(x) * 1.44269504088896340736) -#endif /* HAVE_LOG2 */ - -#if !HAVE_LOG2F -#undef log2f -#define log2f(x) ((float)log2(x)) -#endif /* HAVE_LOG2F */ - -#if !HAVE_LOG10F -#undef log10f -#define log10f(x) ((float)log10(x)) -#endif - -#if !HAVE_SINF -#undef sinf -#define sinf(x) ((float)sin(x)) -#endif - -#if !HAVE_RINT -static inline double rint(double x) -{ - return x >= 0 ? floor(x + 0.5) : ceil(x - 0.5); -} -#endif /* HAVE_RINT */ - -#if !HAVE_LRINT -static av_always_inline av_const long int lrint(double x) -{ - return rint(x); -} -#endif /* HAVE_LRINT */ - -#if !HAVE_LRINTF -static av_always_inline av_const long int lrintf(float x) -{ - return (int)(rint(x)); -} -#endif /* HAVE_LRINTF */ - -#if !HAVE_ROUND -static av_always_inline av_const double round(double x) -{ - return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5); -} -#endif /* HAVE_ROUND */ - -#if !HAVE_ROUNDF -static av_always_inline av_const float roundf(float x) -{ - return (x > 0) ? floor(x + 0.5) : ceil(x - 0.5); -} -#endif /* HAVE_ROUNDF */ - -#if !HAVE_TRUNC -static av_always_inline av_const double trunc(double x) -{ - return (x > 0) ? floor(x) : ceil(x); -} -#endif /* HAVE_TRUNC */ - -#if !HAVE_TRUNCF -static av_always_inline av_const float truncf(float x) -{ - return (x > 0) ? floor(x) : ceil(x); -} -#endif /* HAVE_TRUNCF */ - -#endif /* AVUTIL_LIBM_H */ diff --git a/media/libav/libavutil/log.c b/media/libav/libavutil/log.c deleted file mode 100644 index d38e40bfd..000000000 --- a/media/libav/libavutil/log.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - * log functions - * Copyright (c) 2003 Michel Bardiaux - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * logging functions - */ - -#include "config.h" - -#if HAVE_UNISTD_H -#include <unistd.h> -#endif -#if HAVE_IO_H -#include <io.h> -#endif -#include <stdarg.h> -#include <stdlib.h> -#include "avstring.h" -#include "avutil.h" -#include "common.h" -#include "internal.h" -#include "log.h" - -static int av_log_level = AV_LOG_INFO; -static int flags; - -#if HAVE_SETCONSOLETEXTATTRIBUTE -#include <windows.h> -static const uint8_t color[] = { 12, 12, 12, 14, 7, 10, 11 }; -static int16_t background, attr_orig; -static HANDLE con; -#define set_color(x) SetConsoleTextAttribute(con, background | color[x]) -#define reset_color() SetConsoleTextAttribute(con, attr_orig) -#define print_256color(x) -#else -static const uint8_t color[] = { 0x41, 0x41, 0x11, 0x03, 9, 0x02, 0x06 }; -#define set_color(x) fprintf(stderr, "\033[%d;3%dm", color[x] >> 4, color[x]&15) -#define print_256color(x) fprintf(stderr, "\033[38;5;%dm", x) -#define reset_color() fprintf(stderr, "\033[0m") -#endif -static int use_color = -1; - -static void check_color_terminal(void) -{ -#if HAVE_SETCONSOLETEXTATTRIBUTE - CONSOLE_SCREEN_BUFFER_INFO con_info; - con = GetStdHandle(STD_ERROR_HANDLE); - use_color = (con != INVALID_HANDLE_VALUE) && !getenv("NO_COLOR") && - !getenv("AV_LOG_FORCE_NOCOLOR"); - if (use_color) { - GetConsoleScreenBufferInfo(con, &con_info); - attr_orig = con_info.wAttributes; - background = attr_orig & 0xF0; - } -#elif HAVE_ISATTY - char *term = getenv("TERM"); - use_color = !getenv("NO_COLOR") && !getenv("AV_LOG_FORCE_NOCOLOR") && - (getenv("TERM") && isatty(2) || getenv("AV_LOG_FORCE_COLOR")); - if (use_color) - use_color += term && strstr(term, "256color"); -#else - use_color = getenv("AV_LOG_FORCE_COLOR") && !getenv("NO_COLOR") && - !getenv("AV_LOG_FORCE_NOCOLOR"); -#endif -} - -static void colored_fputs(int level, int tint, const char *str) -{ - if (use_color < 0) - check_color_terminal(); - - switch (use_color) { - case 1: - set_color(level); - break; - case 2: - set_color(level); - if (tint) - print_256color(tint); - break; - default: - break; - } - fputs(str, stderr); - if (use_color) { - reset_color(); - } -} - -const char *av_default_item_name(void *ptr) -{ - return (*(AVClass **) ptr)->class_name; -} - -void av_log_default_callback(void *avcl, int level, const char *fmt, va_list vl) -{ - static int print_prefix = 1; - static int count; - static char prev[1024]; - char line[1024]; - static int is_atty; - AVClass* avc = avcl ? *(AVClass **) avcl : NULL; - unsigned tint = level & 0xff00; - - level &= 0xff; - - if (level > av_log_level) - return; - line[0] = 0; - if (print_prefix && avc) { - if (avc->parent_log_context_offset) { - AVClass** parent = *(AVClass ***) (((uint8_t *) avcl) + - avc->parent_log_context_offset); - if (parent && *parent) { - snprintf(line, sizeof(line), "[%s @ %p] ", - (*parent)->item_name(parent), parent); - } - } - snprintf(line + strlen(line), sizeof(line) - strlen(line), "[%s @ %p] ", - avc->item_name(avcl), avcl); - } - - vsnprintf(line + strlen(line), sizeof(line) - strlen(line), fmt, vl); - - print_prefix = strlen(line) && line[strlen(line) - 1] == '\n'; - -#if HAVE_ISATTY - if (!is_atty) - is_atty = isatty(2) ? 1 : -1; -#endif - - if (print_prefix && (flags & AV_LOG_SKIP_REPEATED) && - !strncmp(line, prev, sizeof line)) { - count++; - if (is_atty == 1) - fprintf(stderr, " Last message repeated %d times\r", count); - return; - } - if (count > 0) { - fprintf(stderr, " Last message repeated %d times\n", count); - count = 0; - } - colored_fputs(av_clip(level >> 3, 0, 6), tint >> 8, line); - av_strlcpy(prev, line, sizeof line); -} - -static void (*av_log_callback)(void*, int, const char*, va_list) = - av_log_default_callback; - -void av_log(void* avcl, int level, const char *fmt, ...) -{ - AVClass* avc = avcl ? *(AVClass **) avcl : NULL; - va_list vl; - va_start(vl, fmt); - if (avc && avc->version >= (50 << 16 | 15 << 8 | 2) && - avc->log_level_offset_offset && level >= AV_LOG_FATAL) - level += *(int *) (((uint8_t *) avcl) + avc->log_level_offset_offset); - av_vlog(avcl, level, fmt, vl); - va_end(vl); -} - -void av_vlog(void* avcl, int level, const char *fmt, va_list vl) -{ - av_log_callback(avcl, level, fmt, vl); -} - -int av_log_get_level(void) -{ - return av_log_level; -} - -void av_log_set_level(int level) -{ - av_log_level = level; -} - -void av_log_set_flags(int arg) -{ - flags = arg; -} - -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)) -{ - av_log_callback = callback; -} - -static void missing_feature_sample(int sample, void *avc, const char *msg, - va_list argument_list) -{ - av_vlog(avc, AV_LOG_WARNING, msg, argument_list); - av_log(avc, AV_LOG_WARNING, " is not implemented. Update your Libav " - "version to the newest one from Git. If the problem still " - "occurs, it means that your file has a feature which has not " - "been implemented.\n"); - if (sample) - av_log(avc, AV_LOG_WARNING, "If you want to help, upload a sample " - "of this file to ftp://upload.libav.org/incoming/ " - "and contact the libav-devel mailing list.\n"); -} - -void avpriv_request_sample(void *avc, const char *msg, ...) -{ - va_list argument_list; - - va_start(argument_list, msg); - missing_feature_sample(1, avc, msg, argument_list); - va_end(argument_list); -} - -void avpriv_report_missing_feature(void *avc, const char *msg, ...) -{ - va_list argument_list; - - va_start(argument_list, msg); - missing_feature_sample(0, avc, msg, argument_list); - va_end(argument_list); -} diff --git a/media/libav/libavutil/log.h b/media/libav/libavutil/log.h deleted file mode 100644 index 4e4424a55..000000000 --- a/media/libav/libavutil/log.h +++ /dev/null @@ -1,272 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_LOG_H -#define AVUTIL_LOG_H - -#include <stdarg.h> -#include "avutil.h" -#include "attributes.h" - -/** - * Describe the class of an AVClass context structure. That is an - * arbitrary struct of which the first field is a pointer to an - * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.). - */ -typedef struct AVClass { - /** - * The name of the class; usually it is the same name as the - * context structure type to which the AVClass is associated. - */ - const char* class_name; - - /** - * A pointer to a function which returns the name of a context - * instance ctx associated with the class. - */ - const char* (*item_name)(void* ctx); - - /** - * a pointer to the first option specified in the class if any or NULL - * - * @see av_set_default_options() - */ - const struct AVOption *option; - - /** - * LIBAVUTIL_VERSION with which this structure was created. - * This is used to allow fields to be added without requiring major - * version bumps everywhere. - */ - - int version; - - /** - * Offset in the structure where log_level_offset is stored. - * 0 means there is no such variable - */ - int log_level_offset_offset; - - /** - * Offset in the structure where a pointer to the parent context for - * logging is stored. For example a decoder could pass its AVCodecContext - * to eval as such a parent context, which an av_log() implementation - * could then leverage to display the parent context. - * The offset can be NULL. - */ - int parent_log_context_offset; - - /** - * Return next AVOptions-enabled child or NULL - */ - void* (*child_next)(void *obj, void *prev); - - /** - * Return an AVClass corresponding to the next potential - * AVOptions-enabled child. - * - * The difference between child_next and this is that - * child_next iterates over _already existing_ objects, while - * child_class_next iterates over _all possible_ children. - */ - const struct AVClass* (*child_class_next)(const struct AVClass *prev); -} AVClass; - -/** - * @addtogroup lavu_log - * - * @{ - * - * @defgroup lavu_log_constants Logging Constants - * - * @{ - */ - -/** - * Print no output. - */ -#define AV_LOG_QUIET -8 - -/** - * Something went really wrong and we will crash now. - */ -#define AV_LOG_PANIC 0 - -/** - * Something went wrong and recovery is not possible. - * For example, no header was found for a format which depends - * on headers or an illegal combination of parameters is used. - */ -#define AV_LOG_FATAL 8 - -/** - * Something went wrong and cannot losslessly be recovered. - * However, not all future data is affected. - */ -#define AV_LOG_ERROR 16 - -/** - * Something somehow does not look correct. This may or may not - * lead to problems. An example would be the use of '-vstrict -2'. - */ -#define AV_LOG_WARNING 24 - -/** - * Standard information. - */ -#define AV_LOG_INFO 32 - -/** - * Detailed information. - */ -#define AV_LOG_VERBOSE 40 - -/** - * Stuff which is only useful for libav* developers. - */ -#define AV_LOG_DEBUG 48 - -/** - * @} - */ - -/** - * Sets additional colors for extended debugging sessions. - * @code - av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n"); - @endcode - * Requires 256color terminal support. Uses outside debugging is not - * recommended. - */ -#define AV_LOG_C(x) (x << 8) - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - */ -void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4); - - -/** - * Send the specified message to the log if the level is less than or equal - * to the current av_log_level. By default, all logging messages are sent to - * stderr. This behavior can be altered by setting a different logging callback - * function. - * @see av_log_set_callback - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_vlog(void *avcl, int level, const char *fmt, va_list vl); - -/** - * Get the current log level - * - * @see lavu_log_constants - * - * @return Current log level - */ -int av_log_get_level(void); - -/** - * Set the log level - * - * @see lavu_log_constants - * - * @param level Logging level - */ -void av_log_set_level(int level); - -/** - * Set the logging callback - * - * @see av_log_default_callback - * - * @param callback A logging function with a compatible signature. - */ -void av_log_set_callback(void (*callback)(void*, int, const char*, va_list)); - -/** - * Default logging callback - * - * It prints the message to stderr, optionally colorizing it. - * - * @param avcl A pointer to an arbitrary struct of which the first field is a - * pointer to an AVClass struct. - * @param level The importance level of the message expressed using a @ref - * lavu_log_constants "Logging Constant". - * @param fmt The format string (printf-compatible) that specifies how - * subsequent arguments are converted to output. - * @param vl The arguments referenced by the format string. - */ -void av_log_default_callback(void *avcl, int level, const char *fmt, - va_list vl); - -/** - * Return the context name - * - * @param ctx The AVClass context - * - * @return The AVClass class_name - */ -const char* av_default_item_name(void* ctx); - -/** - * av_dlog macros - * Useful to print debug messages that shouldn't get compiled in normally. - */ - -#ifdef DEBUG -# define av_dlog(pctx, ...) av_log(pctx, AV_LOG_DEBUG, __VA_ARGS__) -#else -# define av_dlog(pctx, ...) -#endif - -/** - * Skip repeated messages, this requires the user app to use av_log() instead of - * (f)printf as the 2 would otherwise interfere and lead to - * "Last message repeated x times" messages below (f)printf messages with some - * bad luck. - * Also to receive the last, "last repeated" line if any, the user app must - * call av_log(NULL, AV_LOG_QUIET, ""); at the end - */ -#define AV_LOG_SKIP_REPEATED 1 -void av_log_set_flags(int arg); - -/** - * @} - */ - -#endif /* AVUTIL_LOG_H */ diff --git a/media/libav/libavutil/log2_tab.c b/media/libav/libavutil/log2_tab.c deleted file mode 100644 index f6cbe7906..000000000 --- a/media/libav/libavutil/log2_tab.c +++ /dev/null @@ -1,30 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdint.h> - -const uint8_t ff_log2_tab[256]={ - 0,0,1,1,2,2,2,2,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, - 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7, - 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 -}; diff --git a/media/libav/libavutil/macros.h b/media/libav/libavutil/macros.h deleted file mode 100644 index bf3eb9b9a..000000000 --- a/media/libav/libavutil/macros.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * @ingroup lavu - * Utility Preprocessor macros - */ - -#ifndef AVUTIL_MACROS_H -#define AVUTIL_MACROS_H - -/** - * @addtogroup preproc_misc Preprocessor String Macros - * - * String manipulation macros - * - * @{ - */ - -#define AV_STRINGIFY(s) AV_TOSTRING(s) -#define AV_TOSTRING(s) #s - -#define AV_GLUE(a, b) a ## b -#define AV_JOIN(a, b) AV_GLUE(a, b) - -/** - * @} - */ - -#define AV_PRAGMA(s) _Pragma(#s) - -#endif /* AVUTIL_MACROS_H */ diff --git a/media/libav/libavutil/mathematics.c b/media/libav/libavutil/mathematics.c deleted file mode 100644 index f36623a0b..000000000 --- a/media/libav/libavutil/mathematics.c +++ /dev/null @@ -1,151 +0,0 @@ -/* - * Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * miscellaneous math routines and tables - */ - -#include <stdint.h> -#include <limits.h> - -#include "mathematics.h" -#include "version.h" - -#if FF_API_AV_REVERSE -const uint8_t av_reverse[256] = { -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, -0x01,0x81,0x41,0xC1,0x21,0xA1,0x61,0xE1,0x11,0x91,0x51,0xD1,0x31,0xB1,0x71,0xF1, -0x09,0x89,0x49,0xC9,0x29,0xA9,0x69,0xE9,0x19,0x99,0x59,0xD9,0x39,0xB9,0x79,0xF9, -0x05,0x85,0x45,0xC5,0x25,0xA5,0x65,0xE5,0x15,0x95,0x55,0xD5,0x35,0xB5,0x75,0xF5, -0x0D,0x8D,0x4D,0xCD,0x2D,0xAD,0x6D,0xED,0x1D,0x9D,0x5D,0xDD,0x3D,0xBD,0x7D,0xFD, -0x03,0x83,0x43,0xC3,0x23,0xA3,0x63,0xE3,0x13,0x93,0x53,0xD3,0x33,0xB3,0x73,0xF3, -0x0B,0x8B,0x4B,0xCB,0x2B,0xAB,0x6B,0xEB,0x1B,0x9B,0x5B,0xDB,0x3B,0xBB,0x7B,0xFB, -0x07,0x87,0x47,0xC7,0x27,0xA7,0x67,0xE7,0x17,0x97,0x57,0xD7,0x37,0xB7,0x77,0xF7, -0x0F,0x8F,0x4F,0xCF,0x2F,0xAF,0x6F,0xEF,0x1F,0x9F,0x5F,0xDF,0x3F,0xBF,0x7F,0xFF, -}; -#endif - -int64_t av_gcd(int64_t a, int64_t b) -{ - if (b) - return av_gcd(b, a % b); - else - return a; -} - -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) -{ - int64_t r = 0; - - if (c <= 0 || b < 0 || rnd == 4 || rnd > 5) - return INT64_MIN; - - if (a < 0 && a != INT64_MIN) - return -av_rescale_rnd(-a, b, c, rnd ^ ((rnd >> 1) & 1)); - - if (rnd == AV_ROUND_NEAR_INF) - r = c / 2; - else if (rnd & 1) - r = c - 1; - - if (b <= INT_MAX && c <= INT_MAX) { - if (a <= INT_MAX) - return (a * b + r) / c; - else - return a / c * b + (a % c * b + r) / c; - } else { -#if 1 - uint64_t a0 = a & 0xFFFFFFFF; - uint64_t a1 = a >> 32; - uint64_t b0 = b & 0xFFFFFFFF; - uint64_t b1 = b >> 32; - uint64_t t1 = a0 * b1 + a1 * b0; - uint64_t t1a = t1 << 32; - int i; - - a0 = a0 * b0 + t1a; - a1 = a1 * b1 + (t1 >> 32) + (a0 < t1a); - a0 += r; - a1 += a0 < r; - - for (i = 63; i >= 0; i--) { - a1 += a1 + ((a0 >> i) & 1); - t1 += t1; - if (c <= a1) { - a1 -= c; - t1++; - } - } - return t1; - } -#else - AVInteger ai; - ai = av_mul_i(av_int2i(a), av_int2i(b)); - ai = av_add_i(ai, av_int2i(r)); - - return av_i2int(av_div_i(ai, av_int2i(c))); - } -#endif -} - -int64_t av_rescale(int64_t a, int64_t b, int64_t c) -{ - return av_rescale_rnd(a, b, c, AV_ROUND_NEAR_INF); -} - -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding rnd) -{ - int64_t b = bq.num * (int64_t)cq.den; - int64_t c = cq.num * (int64_t)bq.den; - return av_rescale_rnd(a, b, c, rnd); -} - -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) -{ - return av_rescale_q_rnd(a, bq, cq, AV_ROUND_NEAR_INF); -} - -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b) -{ - int64_t a = tb_a.num * (int64_t)tb_b.den; - int64_t b = tb_b.num * (int64_t)tb_a.den; - if (av_rescale_rnd(ts_a, a, b, AV_ROUND_DOWN) < ts_b) - return -1; - if (av_rescale_rnd(ts_b, b, a, AV_ROUND_DOWN) < ts_a) - return 1; - return 0; -} - -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod) -{ - int64_t c = (a - b) & (mod - 1); - if (c > (mod >> 1)) - c -= mod; - return c; -} diff --git a/media/libav/libavutil/mathematics.h b/media/libav/libavutil/mathematics.h deleted file mode 100644 index 043dd0faf..000000000 --- a/media/libav/libavutil/mathematics.h +++ /dev/null @@ -1,111 +0,0 @@ -/* - * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_MATHEMATICS_H -#define AVUTIL_MATHEMATICS_H - -#include <stdint.h> -#include <math.h> -#include "attributes.h" -#include "rational.h" -#include "intfloat.h" - -#ifndef M_LOG2_10 -#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */ -#endif -#ifndef M_PHI -#define M_PHI 1.61803398874989484820 /* phi / golden ratio */ -#endif -#ifndef NAN -#define NAN av_int2float(0x7fc00000) -#endif -#ifndef INFINITY -#define INFINITY av_int2float(0x7f800000) -#endif - -/** - * @addtogroup lavu_math - * @{ - */ - - -enum AVRounding { - AV_ROUND_ZERO = 0, ///< Round toward zero. - AV_ROUND_INF = 1, ///< Round away from zero. - AV_ROUND_DOWN = 2, ///< Round toward -infinity. - AV_ROUND_UP = 3, ///< Round toward +infinity. - AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero. -}; - -/** - * Return the greatest common divisor of a and b. - * If both a and b are 0 or either or both are <0 then behavior is - * undefined. - */ -int64_t av_const av_gcd(int64_t a, int64_t b); - -/** - * Rescale a 64-bit integer with rounding to nearest. - * A simple a*b/c isn't possible as it can overflow. - */ -int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const; - -/** - * Rescale a 64-bit integer with specified rounding. - * A simple a*b/c isn't possible as it can overflow. - */ -int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers. - */ -int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const; - -/** - * Rescale a 64-bit integer by 2 rational numbers with specified rounding. - */ -int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq, - enum AVRounding) av_const; - -/** - * Compare 2 timestamps each in its own timebases. - * The result of the function is undefined if one of the timestamps - * is outside the int64_t range when represented in the others timebase. - * @return -1 if ts_a is before ts_b, 1 if ts_a is after ts_b or 0 if they represent the same position - */ -int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b); - -/** - * Compare 2 integers modulo mod. - * That is we compare integers a and b for which only the least - * significant log2(mod) bits are known. - * - * @param mod must be a power of 2 - * @return a negative value if a is smaller than b - * a positive value if a is greater than b - * 0 if a equals b - */ -int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod); - -/** - * @} - */ - -#endif /* AVUTIL_MATHEMATICS_H */ diff --git a/media/libav/libavutil/mem.c b/media/libav/libavutil/mem.c deleted file mode 100644 index b7bb65c13..000000000 --- a/media/libav/libavutil/mem.c +++ /dev/null @@ -1,399 +0,0 @@ -/* - * default memory allocator for libavutil - * Copyright (c) 2002 Fabrice Bellard - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * default memory allocator for libavutil - */ - -#include "config.h" - -#include <limits.h> -#include <stdint.h> -#include <stdlib.h> -#include <string.h> -#if HAVE_MALLOC_H -#include <malloc.h> -#endif - -#include "avutil.h" -#include "common.h" -#include "intreadwrite.h" -#include "mem.h" - -#ifdef MALLOC_PREFIX - -#define malloc AV_JOIN(MALLOC_PREFIX, malloc) -#define memalign AV_JOIN(MALLOC_PREFIX, memalign) -#define posix_memalign AV_JOIN(MALLOC_PREFIX, posix_memalign) -#define realloc AV_JOIN(MALLOC_PREFIX, realloc) -#define free AV_JOIN(MALLOC_PREFIX, free) - -void *malloc(size_t size); -void *memalign(size_t align, size_t size); -int posix_memalign(void **ptr, size_t align, size_t size); -void *realloc(void *ptr, size_t size); -void free(void *ptr); - -#endif /* MALLOC_PREFIX */ - -/* You can redefine av_malloc and av_free in your project to use your - * memory allocator. You do not need to suppress this file because the - * linker will do it automatically. */ - -void *av_malloc(size_t size) -{ - void *ptr = NULL; -#if CONFIG_MEMALIGN_HACK - long diff; -#endif - - /* let's disallow possibly ambiguous cases */ - if (size > (INT_MAX - 32) || !size) - return NULL; - -#if CONFIG_MEMALIGN_HACK - ptr = malloc(size + 32); - if (!ptr) - return ptr; - diff = ((-(long)ptr - 1) & 31) + 1; - ptr = (char *)ptr + diff; - ((char *)ptr)[-1] = diff; -#elif HAVE_POSIX_MEMALIGN - if (posix_memalign(&ptr, 32, size)) - ptr = NULL; -#elif HAVE_ALIGNED_MALLOC - ptr = _aligned_malloc(size, 32); -#elif HAVE_MEMALIGN - ptr = memalign(32, size); - /* Why 64? - * Indeed, we should align it: - * on 4 for 386 - * on 16 for 486 - * on 32 for 586, PPro - K6-III - * on 64 for K7 (maybe for P3 too). - * Because L1 and L2 caches are aligned on those values. - * But I don't want to code such logic here! - */ - /* Why 32? - * For AVX ASM. SSE / NEON needs only 16. - * Why not larger? Because I did not see a difference in benchmarks ... - */ - /* benchmarks with P3 - * memalign(64) + 1 3071, 3051, 3032 - * memalign(64) + 2 3051, 3032, 3041 - * memalign(64) + 4 2911, 2896, 2915 - * memalign(64) + 8 2545, 2554, 2550 - * memalign(64) + 16 2543, 2572, 2563 - * memalign(64) + 32 2546, 2545, 2571 - * memalign(64) + 64 2570, 2533, 2558 - * - * BTW, malloc seems to do 8-byte alignment by default here. - */ -#else - ptr = malloc(size); -#endif - return ptr; -} - -void *av_realloc(void *ptr, size_t size) -{ -#if CONFIG_MEMALIGN_HACK - int diff; -#endif - - /* let's disallow possibly ambiguous cases */ - if (size > (INT_MAX - 16)) - return NULL; - -#if CONFIG_MEMALIGN_HACK - //FIXME this isn't aligned correctly, though it probably isn't needed - if (!ptr) - return av_malloc(size); - diff = ((char *)ptr)[-1]; - return (char *)realloc((char *)ptr - diff, size + diff) + diff; -#elif HAVE_ALIGNED_MALLOC - return _aligned_realloc(ptr, size, 32); -#else - return realloc(ptr, size); -#endif -} - -int av_reallocp(void *ptr, size_t size) -{ - void **ptrptr = ptr; - void *ret; - - if (!size) { - av_freep(ptr); - return 0; - } - ret = av_realloc(*ptrptr, size); - - if (!ret) { - av_freep(ptr); - return AVERROR(ENOMEM); - } - - *ptrptr = ret; - return 0; -} - -void *av_realloc_array(void *ptr, size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_realloc(ptr, nmemb * size); -} - -int av_reallocp_array(void *ptr, size_t nmemb, size_t size) -{ - void **ptrptr = ptr; - void *ret; - if (!size || nmemb >= INT_MAX / size) - return AVERROR(ENOMEM); - if (!nmemb) { - av_freep(ptr); - return 0; - } - ret = av_realloc(*ptrptr, nmemb * size); - if (!ret) { - av_freep(ptr); - return AVERROR(ENOMEM); - } - *ptrptr = ret; - return 0; -} - -void av_free(void *ptr) -{ -#if CONFIG_MEMALIGN_HACK - if (ptr) - free((char *)ptr - ((char *)ptr)[-1]); -#elif HAVE_ALIGNED_MALLOC - _aligned_free(ptr); -#else - free(ptr); -#endif -} - -void av_freep(void *arg) -{ - void **ptr = (void **)arg; - av_free(*ptr); - *ptr = NULL; -} - -void *av_mallocz(size_t size) -{ - void *ptr = av_malloc(size); - if (ptr) - memset(ptr, 0, size); - return ptr; -} - -char *av_strdup(const char *s) -{ - char *ptr = NULL; - if (s) { - int len = strlen(s) + 1; - ptr = av_realloc(NULL, len); - if (ptr) - memcpy(ptr, s, len); - } - return ptr; -} - -char *av_strndup(const char *s, size_t len) -{ - char *ret = NULL, *end; - - if (!s) - return NULL; - - end = memchr(s, 0, len); - if (end) - len = end - s; - - ret = av_realloc(NULL, len + 1); - if (!ret) - return NULL; - - memcpy(ret, s, len); - ret[len] = 0; - return ret; -} - -static void fill16(uint8_t *dst, int len) -{ - uint32_t v = AV_RN16(dst - 2); - - v |= v << 16; - - while (len >= 4) { - AV_WN32(dst, v); - dst += 4; - len -= 4; - } - - while (len--) { - *dst = dst[-2]; - dst++; - } -} - -static void fill24(uint8_t *dst, int len) -{ -#if HAVE_BIGENDIAN - uint32_t v = AV_RB24(dst - 3); - uint32_t a = v << 8 | v >> 16; - uint32_t b = v << 16 | v >> 8; - uint32_t c = v << 24 | v; -#else - uint32_t v = AV_RL24(dst - 3); - uint32_t a = v | v << 24; - uint32_t b = v >> 8 | v << 16; - uint32_t c = v >> 16 | v << 8; -#endif - - while (len >= 12) { - AV_WN32(dst, a); - AV_WN32(dst + 4, b); - AV_WN32(dst + 8, c); - dst += 12; - len -= 12; - } - - if (len >= 4) { - AV_WN32(dst, a); - dst += 4; - len -= 4; - } - - if (len >= 4) { - AV_WN32(dst, b); - dst += 4; - len -= 4; - } - - while (len--) { - *dst = dst[-3]; - dst++; - } -} - -static void fill32(uint8_t *dst, int len) -{ - uint32_t v = AV_RN32(dst - 4); - - while (len >= 4) { - AV_WN32(dst, v); - dst += 4; - len -= 4; - } - - while (len--) { - *dst = dst[-4]; - dst++; - } -} - -void av_memcpy_backptr(uint8_t *dst, int back, int cnt) -{ - const uint8_t *src = &dst[-back]; - if (!back) - return; - - if (back == 1) { - memset(dst, *src, cnt); - } else if (back == 2) { - fill16(dst, cnt); - } else if (back == 3) { - fill24(dst, cnt); - } else if (back == 4) { - fill32(dst, cnt); - } else { - if (cnt >= 16) { - int blocklen = back; - while (cnt > blocklen) { - memcpy(dst, src, blocklen); - dst += blocklen; - cnt -= blocklen; - blocklen <<= 1; - } - memcpy(dst, src, cnt); - return; - } - if (cnt >= 8) { - AV_COPY32U(dst, src); - AV_COPY32U(dst + 4, src + 4); - src += 8; - dst += 8; - cnt -= 8; - } - if (cnt >= 4) { - AV_COPY32U(dst, src); - src += 4; - dst += 4; - cnt -= 4; - } - if (cnt >= 2) { - AV_COPY16U(dst, src); - src += 2; - dst += 2; - cnt -= 2; - } - if (cnt) - *dst = *src; - } -} - -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size) -{ - if (min_size < *size) - return ptr; - - min_size = FFMAX(17 * min_size / 16 + 32, min_size); - - ptr = av_realloc(ptr, min_size); - /* we could set this to the unmodified min_size but this is safer - * if the user lost the ptr and uses NULL now - */ - if (!ptr) - min_size = 0; - - *size = min_size; - - return ptr; -} - -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size) -{ - void **p = ptr; - if (min_size < *size) - return; - min_size = FFMAX(17 * min_size / 16 + 32, min_size); - av_free(*p); - *p = av_malloc(min_size); - if (!*p) - min_size = 0; - *size = min_size; -} diff --git a/media/libav/libavutil/mem.h b/media/libav/libavutil/mem.h deleted file mode 100644 index 9f667c270..000000000 --- a/media/libav/libavutil/mem.h +++ /dev/null @@ -1,275 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * memory handling functions - */ - -#ifndef AVUTIL_MEM_H -#define AVUTIL_MEM_H - -#include <limits.h> -#include <stdint.h> - -#include "attributes.h" -#include "avutil.h" - -/** - * @addtogroup lavu_mem - * @{ - */ - - -#if defined(__ICC) && __ICC < 1200 || defined(__SUNPRO_C) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v -#elif defined(__TI_COMPILER_VERSION__) - #define DECLARE_ALIGNED(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - t __attribute__((aligned(n))) v - #define DECLARE_ASM_CONST(n,t,v) \ - AV_PRAGMA(DATA_ALIGN(v,n)) \ - static const t __attribute__((aligned(n))) v -#elif defined(__GNUC__) - #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v - #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v -#elif defined(_MSC_VER) - #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v - #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v -#else - #define DECLARE_ALIGNED(n,t,v) t v - #define DECLARE_ASM_CONST(n,t,v) static const t v -#endif - -#if AV_GCC_VERSION_AT_LEAST(3,1) - #define av_malloc_attrib __attribute__((__malloc__)) -#else - #define av_malloc_attrib -#endif - -#if AV_GCC_VERSION_AT_LEAST(4,3) - #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__))) -#else - #define av_alloc_size(...) -#endif - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU). - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - */ -void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a block of size * nmemb bytes with av_malloc(). - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_malloc() - */ -av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_malloc(nmemb * size); -} - -/** - * Allocate or reallocate a block of memory. - * If ptr is NULL and size > 0, allocate a new block. If - * size is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or NULL. - * @param size Size in bytes of the memory block to be allocated or - * reallocated. - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - * @see av_fast_realloc() - */ -void *av_realloc(void *ptr, size_t size) av_alloc_size(2); - -/** - * Allocate or reallocate a block of memory. - * If *ptr is NULL and size > 0, allocate a new block. If - * size is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or pointer to a pointer to NULL. - * The pointer is updated on success, or freed on failure. - * @param size Size in bytes for the memory block to be allocated or - * reallocated - * @return Zero on success, an AVERROR error code on failure. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_reallocp(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -int av_reallocp(void *ptr, size_t size); - -/** - * Allocate or reallocate an array. - * If ptr is NULL and nmemb > 0, allocate a new block. If - * nmemb is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a memory block already allocated with - * av_realloc() or NULL. - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to a newly-reallocated block or NULL if the block - * cannot be reallocated or the function is used to free the memory block. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size); - -/** - * Allocate or reallocate an array through a pointer to a pointer. - * If *ptr is NULL and nmemb > 0, allocate a new block. If - * nmemb is zero, free the memory block pointed to by ptr. - * @param ptr Pointer to a pointer to a memory block already allocated - * with av_realloc(), or pointer to a pointer to NULL. - * The pointer is updated on success, or freed on failure. - * @param nmemb Number of elements - * @param size Size of the single element - * @return Zero on success, an AVERROR error code on failure. - * @warning Pointers originating from the av_malloc() family of functions must - * not be passed to av_realloc(). The former can be implemented using - * memalign() (or other functions), and there is no guarantee that - * pointers from such functions can be passed to realloc() at all. - * The situation is undefined according to POSIX and may crash with - * some libc implementations. - */ -av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size); - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc(). - * @param ptr Pointer to the memory block which should be freed. - * @note ptr = NULL is explicitly allowed. - * @note It is recommended that you use av_freep() instead. - * @see av_freep() - */ -void av_free(void *ptr); - -/** - * Allocate a block of size bytes with alignment suitable for all - * memory accesses (including vectors if available on the CPU) and - * zero all the bytes of the block. - * @param size Size in bytes for the memory block to be allocated. - * @return Pointer to the allocated block, NULL if it cannot be allocated. - * @see av_malloc() - */ -void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1); - -/** - * Allocate a block of size * nmemb bytes with av_mallocz(). - * @param nmemb Number of elements - * @param size Size of the single element - * @return Pointer to the allocated block, NULL if the block cannot - * be allocated. - * @see av_mallocz() - * @see av_malloc_array() - */ -av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size) -{ - if (!size || nmemb >= INT_MAX / size) - return NULL; - return av_mallocz(nmemb * size); -} - -/** - * Duplicate the string s. - * @param s string to be duplicated - * @return Pointer to a newly-allocated string containing a - * copy of s or NULL if the string cannot be allocated. - */ -char *av_strdup(const char *s) av_malloc_attrib; - -/** - * Duplicate a substring of the string s. - * @param s string to be duplicated - * @param len the maximum length of the resulting string (not counting the - * terminating byte). - * @return Pointer to a newly-allocated string containing a - * copy of s or NULL if the string cannot be allocated. - */ -char *av_strndup(const char *s, size_t len) av_malloc_attrib; - -/** - * Free a memory block which has been allocated with av_malloc(z)() or - * av_realloc() and set the pointer pointing to it to NULL. - * @param ptr Pointer to the pointer to the memory block which should - * be freed. - * @see av_free() - */ -void av_freep(void *ptr); - -/** - * deliberately overlapping memcpy implementation - * @param dst destination buffer - * @param back how many bytes back we start (the initial size of the overlapping window) - * @param cnt number of bytes to copy, must be >= 0 - * - * cnt > back is valid, this will copy the bytes we just copied, - * thus creating a repeating pattern with a period length of back. - */ -void av_memcpy_backptr(uint8_t *dst, int back, int cnt); - -/** - * Reallocate the given block if it is not large enough, otherwise do nothing. - * - * @see av_realloc - */ -void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * Allocate a buffer, reusing the given one if large enough. - * - * Contrary to av_fast_realloc the current buffer contents might not be - * preserved and on error the old buffer is freed, thus no special - * handling to avoid memleaks is necessary. - * - * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer - * @param size size of the buffer *ptr points to - * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and - * *size 0 if an error occurred. - */ -void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size); - -/** - * @} - */ - -#endif /* AVUTIL_MEM_H */ diff --git a/media/libav/libavutil/old_pix_fmts.h b/media/libav/libavutil/old_pix_fmts.h deleted file mode 100644 index d3e1e5b24..000000000 --- a/media/libav/libavutil/old_pix_fmts.h +++ /dev/null @@ -1,134 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_OLD_PIX_FMTS_H -#define AVUTIL_OLD_PIX_FMTS_H - -/* - * This header exists to prevent new pixel formats from being accidentally added - * to the deprecated list. - * Do not include it directly. It will be removed on next major bump - * - * Do not add new items to this list. Use the AVPixelFormat enum instead. - */ - PIX_FMT_NONE = AV_PIX_FMT_NONE, - PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - PIX_FMT_GRAY8, ///< Y , 8bpp - PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette - PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range - PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range - PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range -#if FF_API_XVMC - PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - PIX_FMT_XVMC_MPEG2_IDCT, -#endif /* FF_API_XVMC */ - PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range - PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) -#if FF_API_VDPAU - PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 - PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 - - PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 - PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 - - PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - - PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian -#if FF_API_VDPAU - PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 - PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 - PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 - PIX_FMT_Y400A, ///< 8bit gray, 8bit alpha - PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big endian - PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little endian - PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big endian - PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little endian - PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big endian - PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little endian - PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions - -#endif /* AVUTIL_OLD_PIX_FMTS_H */ diff --git a/media/libav/libavutil/opt.c b/media/libav/libavutil/opt.c deleted file mode 100644 index 059c525c3..000000000 --- a/media/libav/libavutil/opt.c +++ /dev/null @@ -1,847 +0,0 @@ -/* - * AVOptions - * Copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * AVOptions - * @author Michael Niedermayer <michaelni@gmx.at> - */ - -#include "avutil.h" -#include "avstring.h" -#include "common.h" -#include "opt.h" -#include "eval.h" -#include "dict.h" -#include "log.h" -#include "mathematics.h" - -const AVOption *av_opt_next(void *obj, const AVOption *last) -{ - AVClass *class = *(AVClass**)obj; - if (!last && class->option && class->option[0].name) - return class->option; - if (last && last[1].name) - return ++last; - return NULL; -} - -static int read_number(const AVOption *o, void *dst, double *num, int *den, int64_t *intnum) -{ - switch (o->type) { - case AV_OPT_TYPE_FLAGS: *intnum = *(unsigned int*)dst;return 0; - case AV_OPT_TYPE_INT: *intnum = *(int *)dst;return 0; - case AV_OPT_TYPE_INT64: *intnum = *(int64_t *)dst;return 0; - case AV_OPT_TYPE_FLOAT: *num = *(float *)dst;return 0; - case AV_OPT_TYPE_DOUBLE: *num = *(double *)dst;return 0; - case AV_OPT_TYPE_RATIONAL: *intnum = ((AVRational*)dst)->num; - *den = ((AVRational*)dst)->den; - return 0; - } - return AVERROR(EINVAL); -} - -static int write_number(void *obj, const AVOption *o, void *dst, double num, int den, int64_t intnum) -{ - if (o->type != AV_OPT_TYPE_FLAGS && - (o->max * den < num * intnum || o->min * den > num * intnum)) { - av_log(obj, AV_LOG_ERROR, "Value %f for parameter '%s' out of range\n", - num*intnum/den, o->name); - return AVERROR(ERANGE); - } - - switch (o->type) { - case AV_OPT_TYPE_FLAGS: - case AV_OPT_TYPE_INT: *(int *)dst= llrint(num/den)*intnum; break; - case AV_OPT_TYPE_INT64: *(int64_t *)dst= llrint(num/den)*intnum; break; - case AV_OPT_TYPE_FLOAT: *(float *)dst= num*intnum/den; break; - case AV_OPT_TYPE_DOUBLE:*(double *)dst= num*intnum/den; break; - case AV_OPT_TYPE_RATIONAL: - if ((int)num == num) *(AVRational*)dst= (AVRational){num*intnum, den}; - else *(AVRational*)dst= av_d2q(num*intnum/den, 1<<24); - break; - default: - return AVERROR(EINVAL); - } - return 0; -} - -static const double const_values[] = { - M_PI, - M_E, - FF_QP2LAMBDA, - 0 -}; - -static const char * const const_names[] = { - "PI", - "E", - "QP2LAMBDA", - 0 -}; - -static int hexchar2int(char c) { - if (c >= '0' && c <= '9') return c - '0'; - if (c >= 'a' && c <= 'f') return c - 'a' + 10; - if (c >= 'A' && c <= 'F') return c - 'A' + 10; - return -1; -} - -static int set_string_binary(void *obj, const AVOption *o, const char *val, uint8_t **dst) -{ - int *lendst = (int *)(dst + 1); - uint8_t *bin, *ptr; - int len = strlen(val); - - av_freep(dst); - *lendst = 0; - - if (len & 1) - return AVERROR(EINVAL); - len /= 2; - - ptr = bin = av_malloc(len); - if (!ptr) - return AVERROR(ENOMEM); - while (*val) { - int a = hexchar2int(*val++); - int b = hexchar2int(*val++); - if (a < 0 || b < 0) { - av_free(bin); - return AVERROR(EINVAL); - } - *ptr++ = (a << 4) | b; - } - *dst = bin; - *lendst = len; - - return 0; -} - -static int set_string(void *obj, const AVOption *o, const char *val, uint8_t **dst) -{ - av_freep(dst); - *dst = av_strdup(val); - return 0; -} - -#define DEFAULT_NUMVAL(opt) ((opt->type == AV_OPT_TYPE_INT64 || \ - opt->type == AV_OPT_TYPE_CONST || \ - opt->type == AV_OPT_TYPE_FLAGS || \ - opt->type == AV_OPT_TYPE_INT) ? \ - opt->default_val.i64 : opt->default_val.dbl) - -static int set_string_number(void *obj, void *target_obj, const AVOption *o, const char *val, void *dst) -{ - int ret = 0, notfirst = 0; - for (;;) { - int i, den = 1; - char buf[256]; - int cmd = 0; - double d, num = 1; - int64_t intnum = 1; - - i = 0; - if (*val == '+' || *val == '-') { - if (o->type == AV_OPT_TYPE_FLAGS) - cmd = *(val++); - else if (!notfirst) - buf[i++] = *val; - } - - for (; i < sizeof(buf) - 1 && val[i] && val[i] != '+' && val[i] != '-'; i++) - buf[i] = val[i]; - buf[i] = 0; - - { - const AVOption *o_named = av_opt_find(target_obj, buf, o->unit, 0, 0); - if (o_named && o_named->type == AV_OPT_TYPE_CONST) - d = DEFAULT_NUMVAL(o_named); - else if (!strcmp(buf, "default")) d = DEFAULT_NUMVAL(o); - else if (!strcmp(buf, "max" )) d = o->max; - else if (!strcmp(buf, "min" )) d = o->min; - else if (!strcmp(buf, "none" )) d = 0; - else if (!strcmp(buf, "all" )) d = ~0; - else { - int res = av_expr_parse_and_eval(&d, buf, const_names, const_values, NULL, NULL, NULL, NULL, NULL, 0, obj); - if (res < 0) { - av_log(obj, AV_LOG_ERROR, "Unable to parse option value \"%s\"\n", val); - return res; - } - } - } - if (o->type == AV_OPT_TYPE_FLAGS) { - read_number(o, dst, NULL, NULL, &intnum); - if (cmd == '+') d = intnum | (int64_t)d; - else if (cmd == '-') d = intnum &~(int64_t)d; - } else { - read_number(o, dst, &num, &den, &intnum); - if (cmd == '+') d = notfirst*num*intnum/den + d; - else if (cmd == '-') d = notfirst*num*intnum/den - d; - } - - if ((ret = write_number(obj, o, dst, d, 1, 1)) < 0) - return ret; - val += i; - if (!*val) - return 0; - notfirst = 1; - } - - return 0; -} - -int av_opt_set(void *obj, const char *name, const char *val, int search_flags) -{ - void *dst, *target_obj; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - if (!val || o->flags & AV_OPT_FLAG_READONLY) - return AVERROR(EINVAL); - - dst = ((uint8_t*)target_obj) + o->offset; - switch (o->type) { - case AV_OPT_TYPE_STRING: return set_string(obj, o, val, dst); - case AV_OPT_TYPE_BINARY: return set_string_binary(obj, o, val, dst); - case AV_OPT_TYPE_FLAGS: - case AV_OPT_TYPE_INT: - case AV_OPT_TYPE_INT64: - case AV_OPT_TYPE_FLOAT: - case AV_OPT_TYPE_DOUBLE: - case AV_OPT_TYPE_RATIONAL: return set_string_number(obj, target_obj, o, val, dst); - } - - av_log(obj, AV_LOG_ERROR, "Invalid option type.\n"); - return AVERROR(EINVAL); -} - -#define OPT_EVAL_NUMBER(name, opttype, vartype)\ - int av_opt_eval_ ## name(void *obj, const AVOption *o, const char *val, vartype *name ## _out)\ - {\ - if (!o || o->type != opttype || o->flags & AV_OPT_FLAG_READONLY)\ - return AVERROR(EINVAL);\ - return set_string_number(obj, obj, o, val, name ## _out);\ - } - -OPT_EVAL_NUMBER(flags, AV_OPT_TYPE_FLAGS, int) -OPT_EVAL_NUMBER(int, AV_OPT_TYPE_INT, int) -OPT_EVAL_NUMBER(int64, AV_OPT_TYPE_INT64, int64_t) -OPT_EVAL_NUMBER(float, AV_OPT_TYPE_FLOAT, float) -OPT_EVAL_NUMBER(double, AV_OPT_TYPE_DOUBLE, double) -OPT_EVAL_NUMBER(q, AV_OPT_TYPE_RATIONAL, AVRational) - -static int set_number(void *obj, const char *name, double num, int den, int64_t intnum, - int search_flags) -{ - void *dst, *target_obj; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - - if (o->flags & AV_OPT_FLAG_READONLY) - return AVERROR(EINVAL); - - dst = ((uint8_t*)target_obj) + o->offset; - return write_number(obj, o, dst, num, den, intnum); -} - -int av_opt_set_int(void *obj, const char *name, int64_t val, int search_flags) -{ - return set_number(obj, name, 1, 1, val, search_flags); -} - -int av_opt_set_double(void *obj, const char *name, double val, int search_flags) -{ - return set_number(obj, name, val, 1, 1, search_flags); -} - -int av_opt_set_q(void *obj, const char *name, AVRational val, int search_flags) -{ - return set_number(obj, name, val.num, val.den, 1, search_flags); -} - -int av_opt_set_bin(void *obj, const char *name, const uint8_t *val, int len, int search_flags) -{ - void *target_obj; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - uint8_t *ptr; - uint8_t **dst; - int *lendst; - - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - - if (o->type != AV_OPT_TYPE_BINARY || o->flags & AV_OPT_FLAG_READONLY) - return AVERROR(EINVAL); - - ptr = av_malloc(len); - if (!ptr) - return AVERROR(ENOMEM); - - dst = (uint8_t **)(((uint8_t *)target_obj) + o->offset); - lendst = (int *)(dst + 1); - - av_free(*dst); - *dst = ptr; - *lendst = len; - memcpy(ptr, val, len); - - return 0; -} - -int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, int search_flags) -{ - void *target_obj; - AVDictionary **dst; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - if (o->flags & AV_OPT_FLAG_READONLY) - return AVERROR(EINVAL); - - dst = (AVDictionary **)(((uint8_t *)target_obj) + o->offset); - av_dict_free(dst); - av_dict_copy(dst, val, 0); - - return 0; -} - -int av_opt_get(void *obj, const char *name, int search_flags, uint8_t **out_val) -{ - void *dst, *target_obj; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - uint8_t *bin, buf[128]; - int len, i, ret; - - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - - dst = (uint8_t*)target_obj + o->offset; - - buf[0] = 0; - switch (o->type) { - case AV_OPT_TYPE_FLAGS: ret = snprintf(buf, sizeof(buf), "0x%08X", *(int *)dst);break; - case AV_OPT_TYPE_INT: ret = snprintf(buf, sizeof(buf), "%d" , *(int *)dst);break; - case AV_OPT_TYPE_INT64: ret = snprintf(buf, sizeof(buf), "%"PRId64, *(int64_t*)dst);break; - case AV_OPT_TYPE_FLOAT: ret = snprintf(buf, sizeof(buf), "%f" , *(float *)dst);break; - case AV_OPT_TYPE_DOUBLE: ret = snprintf(buf, sizeof(buf), "%f" , *(double *)dst);break; - case AV_OPT_TYPE_RATIONAL: ret = snprintf(buf, sizeof(buf), "%d/%d", ((AVRational*)dst)->num, ((AVRational*)dst)->den);break; - case AV_OPT_TYPE_STRING: - if (*(uint8_t**)dst) - *out_val = av_strdup(*(uint8_t**)dst); - else - *out_val = av_strdup(""); - return 0; - case AV_OPT_TYPE_BINARY: - len = *(int*)(((uint8_t *)dst) + sizeof(uint8_t *)); - if ((uint64_t)len*2 + 1 > INT_MAX) - return AVERROR(EINVAL); - if (!(*out_val = av_malloc(len*2 + 1))) - return AVERROR(ENOMEM); - bin = *(uint8_t**)dst; - for (i = 0; i < len; i++) - snprintf(*out_val + i*2, 3, "%02X", bin[i]); - return 0; - default: - return AVERROR(EINVAL); - } - - if (ret >= sizeof(buf)) - return AVERROR(EINVAL); - *out_val = av_strdup(buf); - return 0; -} - -static int get_number(void *obj, const char *name, double *num, int *den, int64_t *intnum, - int search_flags) -{ - void *dst, *target_obj; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - if (!o || !target_obj) - goto error; - - dst = ((uint8_t*)target_obj) + o->offset; - - return read_number(o, dst, num, den, intnum); - -error: - *den=*intnum=0; - return -1; -} - -int av_opt_get_int(void *obj, const char *name, int search_flags, int64_t *out_val) -{ - int64_t intnum = 1; - double num = 1; - int ret, den = 1; - - if ((ret = get_number(obj, name, &num, &den, &intnum, search_flags)) < 0) - return ret; - *out_val = num*intnum/den; - return 0; -} - -int av_opt_get_double(void *obj, const char *name, int search_flags, double *out_val) -{ - int64_t intnum = 1; - double num = 1; - int ret, den = 1; - - if ((ret = get_number(obj, name, &num, &den, &intnum, search_flags)) < 0) - return ret; - *out_val = num*intnum/den; - return 0; -} - -int av_opt_get_q(void *obj, const char *name, int search_flags, AVRational *out_val) -{ - int64_t intnum = 1; - double num = 1; - int ret, den = 1; - - if ((ret = get_number(obj, name, &num, &den, &intnum, search_flags)) < 0) - return ret; - - if (num == 1.0 && (int)intnum == intnum) - *out_val = (AVRational){intnum, den}; - else - *out_val = av_d2q(num*intnum/den, 1<<24); - return 0; -} - -int av_opt_get_dict_val(void *obj, const char *name, int search_flags, AVDictionary **out_val) -{ - void *target_obj; - AVDictionary *src; - const AVOption *o = av_opt_find2(obj, name, NULL, 0, search_flags, &target_obj); - - if (!o || !target_obj) - return AVERROR_OPTION_NOT_FOUND; - if (o->type != AV_OPT_TYPE_DICT) - return AVERROR(EINVAL); - - src = *(AVDictionary **)(((uint8_t *)target_obj) + o->offset); - av_dict_copy(out_val, src, 0); - - return 0; -} - -int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name) -{ - const AVOption *field = av_opt_find(obj, field_name, NULL, 0, 0); - const AVOption *flag = av_opt_find(obj, flag_name, - field ? field->unit : NULL, 0, 0); - int64_t res; - - if (!field || !flag || flag->type != AV_OPT_TYPE_CONST || - av_opt_get_int(obj, field_name, 0, &res) < 0) - return 0; - return res & flag->default_val.i64; -} - -static void opt_list(void *obj, void *av_log_obj, const char *unit, - int req_flags, int rej_flags) -{ - const AVOption *opt=NULL; - - while ((opt = av_opt_next(obj, opt))) { - if (!(opt->flags & req_flags) || (opt->flags & rej_flags)) - continue; - - /* Don't print CONST's on level one. - * Don't print anything but CONST's on level two. - * Only print items from the requested unit. - */ - if (!unit && opt->type==AV_OPT_TYPE_CONST) - continue; - else if (unit && opt->type!=AV_OPT_TYPE_CONST) - continue; - else if (unit && opt->type==AV_OPT_TYPE_CONST && strcmp(unit, opt->unit)) - continue; - else if (unit && opt->type == AV_OPT_TYPE_CONST) - av_log(av_log_obj, AV_LOG_INFO, " %-15s ", opt->name); - else - av_log(av_log_obj, AV_LOG_INFO, "-%-17s ", opt->name); - - switch (opt->type) { - case AV_OPT_TYPE_FLAGS: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<flags>"); - break; - case AV_OPT_TYPE_INT: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<int>"); - break; - case AV_OPT_TYPE_INT64: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<int64>"); - break; - case AV_OPT_TYPE_DOUBLE: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<double>"); - break; - case AV_OPT_TYPE_FLOAT: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<float>"); - break; - case AV_OPT_TYPE_STRING: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<string>"); - break; - case AV_OPT_TYPE_RATIONAL: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<rational>"); - break; - case AV_OPT_TYPE_BINARY: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", "<binary>"); - break; - case AV_OPT_TYPE_CONST: - default: - av_log(av_log_obj, AV_LOG_INFO, "%-7s ", ""); - break; - } - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_ENCODING_PARAM) ? 'E' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_DECODING_PARAM) ? 'D' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_VIDEO_PARAM ) ? 'V' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_AUDIO_PARAM ) ? 'A' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_SUBTITLE_PARAM) ? 'S' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_EXPORT) ? 'X' : '.'); - av_log(av_log_obj, AV_LOG_INFO, "%c", (opt->flags & AV_OPT_FLAG_READONLY) ? 'R' : '.'); - - if (opt->help) - av_log(av_log_obj, AV_LOG_INFO, " %s", opt->help); - av_log(av_log_obj, AV_LOG_INFO, "\n"); - if (opt->unit && opt->type != AV_OPT_TYPE_CONST) { - opt_list(obj, av_log_obj, opt->unit, req_flags, rej_flags); - } - } -} - -int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags) -{ - if (!obj) - return -1; - - av_log(av_log_obj, AV_LOG_INFO, "%s AVOptions:\n", (*(AVClass**)obj)->class_name); - - opt_list(obj, av_log_obj, NULL, req_flags, rej_flags); - - return 0; -} - -void av_opt_set_defaults(void *s) -{ - const AVOption *opt = NULL; - while ((opt = av_opt_next(s, opt))) { - if (opt->flags & AV_OPT_FLAG_READONLY) - continue; - - switch (opt->type) { - case AV_OPT_TYPE_CONST: - /* Nothing to be done here */ - break; - case AV_OPT_TYPE_FLAGS: - case AV_OPT_TYPE_INT: - case AV_OPT_TYPE_INT64: - av_opt_set_int(s, opt->name, opt->default_val.i64, 0); - break; - case AV_OPT_TYPE_DOUBLE: - case AV_OPT_TYPE_FLOAT: { - double val; - val = opt->default_val.dbl; - av_opt_set_double(s, opt->name, val, 0); - } - break; - case AV_OPT_TYPE_RATIONAL: { - AVRational val; - val = av_d2q(opt->default_val.dbl, INT_MAX); - av_opt_set_q(s, opt->name, val, 0); - } - break; - case AV_OPT_TYPE_STRING: - av_opt_set(s, opt->name, opt->default_val.str, 0); - break; - case AV_OPT_TYPE_BINARY: - case AV_OPT_TYPE_DICT: - /* Cannot set defaults for these types */ - break; - default: - av_log(s, AV_LOG_DEBUG, "AVOption type %d of option %s not implemented yet\n", opt->type, opt->name); - } - } -} - -/** - * Store the value in the field in ctx that is named like key. - * ctx must be an AVClass context, storing is done using AVOptions. - * - * @param buf the string to parse, buf will be updated to point at the - * separator just after the parsed key/value pair - * @param key_val_sep a 0-terminated list of characters used to - * separate key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @return 0 if the key/value pair has been successfully parsed and - * set, or a negative value corresponding to an AVERROR code in case - * of error: - * AVERROR(EINVAL) if the key/value pair cannot be parsed, - * the error code issued by av_opt_set() if the key/value pair - * cannot be set - */ -static int parse_key_value_pair(void *ctx, const char **buf, - const char *key_val_sep, const char *pairs_sep) -{ - char *key = av_get_token(buf, key_val_sep); - char *val; - int ret; - - if (!key) - return AVERROR(ENOMEM); - - if (*key && strspn(*buf, key_val_sep)) { - (*buf)++; - val = av_get_token(buf, pairs_sep); - if (!val) { - av_freep(&key); - return AVERROR(ENOMEM); - } - } else { - av_log(ctx, AV_LOG_ERROR, "Missing key or no key/value separator found after key '%s'\n", key); - av_free(key); - return AVERROR(EINVAL); - } - - av_log(ctx, AV_LOG_DEBUG, "Setting value '%s' for key '%s'\n", val, key); - - ret = av_opt_set(ctx, key, val, AV_OPT_SEARCH_CHILDREN); - if (ret == AVERROR_OPTION_NOT_FOUND) - av_log(ctx, AV_LOG_ERROR, "Key '%s' not found.\n", key); - - av_free(key); - av_free(val); - return ret; -} - -int av_set_options_string(void *ctx, const char *opts, - const char *key_val_sep, const char *pairs_sep) -{ - int ret, count = 0; - - if (!opts) - return 0; - - while (*opts) { - if ((ret = parse_key_value_pair(ctx, &opts, key_val_sep, pairs_sep)) < 0) - return ret; - count++; - - if (*opts) - opts++; - } - - return count; -} - -void av_opt_free(void *obj) -{ - const AVOption *o = NULL; - while ((o = av_opt_next(obj, o))) { - switch (o->type) { - case AV_OPT_TYPE_STRING: - case AV_OPT_TYPE_BINARY: - av_freep((uint8_t *)obj + o->offset); - break; - - case AV_OPT_TYPE_DICT: - av_dict_free((AVDictionary **)(((uint8_t *)obj) + o->offset)); - break; - - default: - break; - } - } -} - -int av_opt_set_dict(void *obj, AVDictionary **options) -{ - AVDictionaryEntry *t = NULL; - AVDictionary *tmp = NULL; - int ret = 0; - - while ((t = av_dict_get(*options, "", t, AV_DICT_IGNORE_SUFFIX))) { - ret = av_opt_set(obj, t->key, t->value, 0); - if (ret == AVERROR_OPTION_NOT_FOUND) - av_dict_set(&tmp, t->key, t->value, 0); - else if (ret < 0) { - av_log(obj, AV_LOG_ERROR, "Error setting option %s to value %s.\n", t->key, t->value); - break; - } - ret = 0; - } - av_dict_free(options); - *options = tmp; - return ret; -} - -const AVOption *av_opt_find(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags) -{ - return av_opt_find2(obj, name, unit, opt_flags, search_flags, NULL); -} - -const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags, void **target_obj) -{ - const AVClass *c = *(AVClass**)obj; - const AVOption *o = NULL; - - if (!c) - return NULL; - - if (search_flags & AV_OPT_SEARCH_CHILDREN) { - if (search_flags & AV_OPT_SEARCH_FAKE_OBJ) { - const AVClass *child = NULL; - while (child = av_opt_child_class_next(c, child)) - if (o = av_opt_find2(&child, name, unit, opt_flags, search_flags, NULL)) - return o; - } else { - void *child = NULL; - while (child = av_opt_child_next(obj, child)) - if (o = av_opt_find2(child, name, unit, opt_flags, search_flags, target_obj)) - return o; - } - } - - while (o = av_opt_next(obj, o)) { - if (!strcmp(o->name, name) && (o->flags & opt_flags) == opt_flags && - ((!unit && o->type != AV_OPT_TYPE_CONST) || - (unit && o->unit && !strcmp(o->unit, unit)))) { - if (target_obj) { - if (!(search_flags & AV_OPT_SEARCH_FAKE_OBJ)) - *target_obj = obj; - else - *target_obj = NULL; - } - return o; - } - } - return NULL; -} - -void *av_opt_child_next(void *obj, void *prev) -{ - const AVClass *c = *(AVClass**)obj; - if (c->child_next) - return c->child_next(obj, prev); - return NULL; -} - -const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev) -{ - if (parent->child_class_next) - return parent->child_class_next(prev); - return NULL; -} - -#ifdef TEST - -typedef struct TestContext -{ - const AVClass *class; - int num; - int toggle; - char *string; - int flags; - AVRational rational; -} TestContext; - -#define OFFSET(x) offsetof(TestContext, x) - -#define TEST_FLAG_COOL 01 -#define TEST_FLAG_LAME 02 -#define TEST_FLAG_MU 04 - -static const AVOption test_options[]= { -{"num", "set num", OFFSET(num), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 100 }, -{"toggle", "set toggle", OFFSET(toggle), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1 }, -{"rational", "set rational", OFFSET(rational), AV_OPT_TYPE_RATIONAL, {.dbl = 0}, 0, 10 }, -{"string", "set string", OFFSET(string), AV_OPT_TYPE_STRING, {0}, CHAR_MIN, CHAR_MAX }, -{"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64 = 0}, 0, INT_MAX, 0, "flags" }, -{"cool", "set cool flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_COOL}, INT_MIN, INT_MAX, 0, "flags" }, -{"lame", "set lame flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_LAME}, INT_MIN, INT_MAX, 0, "flags" }, -{"mu", "set mu flag ", 0, AV_OPT_TYPE_CONST, {.i64 = TEST_FLAG_MU}, INT_MIN, INT_MAX, 0, "flags" }, -{NULL}, -}; - -static const char *test_get_name(void *ctx) -{ - return "test"; -} - -static const AVClass test_class = { - "TestContext", - test_get_name, - test_options -}; - -int main(void) -{ - int i; - - printf("\nTesting av_set_options_string()\n"); - { - TestContext test_ctx; - const char *options[] = { - "", - ":", - "=", - "foo=:", - ":=foo", - "=foo", - "foo=", - "foo", - "foo=val", - "foo==val", - "toggle=:", - "string=:", - "toggle=1 : foo", - "toggle=100", - "toggle==1", - "flags=+mu-lame : num=42: toggle=0", - "num=42 : string=blahblah", - "rational=0 : rational=1/2 : rational=1/-1", - "rational=-1/0", - }; - - test_ctx.class = &test_class; - av_opt_set_defaults(&test_ctx); - test_ctx.string = av_strdup("default"); - - av_log_set_level(AV_LOG_DEBUG); - - for (i=0; i < FF_ARRAY_ELEMS(options); i++) { - av_log(&test_ctx, AV_LOG_DEBUG, "Setting options string '%s'\n", options[i]); - if (av_set_options_string(&test_ctx, options[i], "=", ":") < 0) - av_log(&test_ctx, AV_LOG_ERROR, "Error setting options string: '%s'\n", options[i]); - printf("\n"); - } - } - - return 0; -} - -#endif diff --git a/media/libav/libavutil/opt.h b/media/libav/libavutil/opt.h deleted file mode 100644 index ac722ee08..000000000 --- a/media/libav/libavutil/opt.h +++ /dev/null @@ -1,538 +0,0 @@ -/* - * AVOptions - * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_OPT_H -#define AVUTIL_OPT_H - -/** - * @file - * AVOptions - */ - -#include "rational.h" -#include "avutil.h" -#include "dict.h" -#include "log.h" - -/** - * @defgroup avoptions AVOptions - * @ingroup lavu_data - * @{ - * AVOptions provide a generic system to declare options on arbitrary structs - * ("objects"). An option can have a help text, a type and a range of possible - * values. Options may then be enumerated, read and written to. - * - * @section avoptions_implement Implementing AVOptions - * This section describes how to add AVOptions capabilities to a struct. - * - * All AVOptions-related information is stored in an AVClass. Therefore - * the first member of the struct must be a pointer to an AVClass describing it. - * The option field of the AVClass must be set to a NULL-terminated static array - * of AVOptions. Each AVOption must have a non-empty name, a type, a default - * value and for number-type AVOptions also a range of allowed values. It must - * also declare an offset in bytes from the start of the struct, where the field - * associated with this AVOption is located. Other fields in the AVOption struct - * should also be set when applicable, but are not required. - * - * The following example illustrates an AVOptions-enabled struct: - * @code - * typedef struct test_struct { - * AVClass *class; - * int int_opt; - * char *str_opt; - * uint8_t *bin_opt; - * int bin_len; - * } test_struct; - * - * static const AVOption test_options[] = { - * { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt), - * AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX }, - * { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt), - * AV_OPT_TYPE_STRING }, - * { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt), - * AV_OPT_TYPE_BINARY }, - * { NULL }, - * }; - * - * static const AVClass test_class = { - * .class_name = "test class", - * .item_name = av_default_item_name, - * .option = test_options, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * @endcode - * - * Next, when allocating your struct, you must ensure that the AVClass pointer - * is set to the correct value. Then, av_opt_set_defaults() must be called to - * initialize defaults. After that the struct is ready to be used with the - * AVOptions API. - * - * When cleaning up, you may use the av_opt_free() function to automatically - * free all the allocated string and binary options. - * - * Continuing with the above example: - * - * @code - * test_struct *alloc_test_struct(void) - * { - * test_struct *ret = av_malloc(sizeof(*ret)); - * ret->class = &test_class; - * av_opt_set_defaults(ret); - * return ret; - * } - * void free_test_struct(test_struct **foo) - * { - * av_opt_free(*foo); - * av_freep(foo); - * } - * @endcode - * - * @subsection avoptions_implement_nesting Nesting - * It may happen that an AVOptions-enabled struct contains another - * AVOptions-enabled struct as a member (e.g. AVCodecContext in - * libavcodec exports generic options, while its priv_data field exports - * codec-specific options). In such a case, it is possible to set up the - * parent struct to export a child's options. To do that, simply - * implement AVClass.child_next() and AVClass.child_class_next() in the - * parent struct's AVClass. - * Assuming that the test_struct from above now also contains a - * child_struct field: - * - * @code - * typedef struct child_struct { - * AVClass *class; - * int flags_opt; - * } child_struct; - * static const AVOption child_opts[] = { - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX }, - * { NULL }, - * }; - * static const AVClass child_class = { - * .class_name = "child class", - * .item_name = av_default_item_name, - * .option = child_opts, - * .version = LIBAVUTIL_VERSION_INT, - * }; - * - * void *child_next(void *obj, void *prev) - * { - * test_struct *t = obj; - * if (!prev && t->child_struct) - * return t->child_struct; - * return NULL - * } - * const AVClass child_class_next(const AVClass *prev) - * { - * return prev ? NULL : &child_class; - * } - * @endcode - * Putting child_next() and child_class_next() as defined above into - * test_class will now make child_struct's options accessible through - * test_struct (again, proper setup as described above needs to be done on - * child_struct right after it is created). - * - * From the above example it might not be clear why both child_next() - * and child_class_next() are needed. The distinction is that child_next() - * iterates over actually existing objects, while child_class_next() - * iterates over all possible child classes. E.g. if an AVCodecContext - * was initialized to use a codec which has private options, then its - * child_next() will return AVCodecContext.priv_data and finish - * iterating. OTOH child_class_next() on AVCodecContext.av_class will - * iterate over all available codecs with private options. - * - * @subsection avoptions_implement_named_constants Named constants - * It is possible to create named constants for options. Simply set the unit - * field of the option the constants should apply to to a string and - * create the constants themselves as options of type AV_OPT_TYPE_CONST - * with their unit field set to the same string. - * Their default_val field should contain the value of the named - * constant. - * For example, to add some named constants for the test_flags option - * above, put the following into the child_opts array: - * @code - * { "test_flags", "This is a test option of flags type.", - * offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" }, - * { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" }, - * @endcode - * - * @section avoptions_use Using AVOptions - * This section deals with accessing options in an AVOptions-enabled struct. - * Such structs in Libav are e.g. AVCodecContext in libavcodec or - * AVFormatContext in libavformat. - * - * @subsection avoptions_use_examine Examining AVOptions - * The basic functions for examining options are av_opt_next(), which iterates - * over all options defined for one object, and av_opt_find(), which searches - * for an option with the given name. - * - * The situation is more complicated with nesting. An AVOptions-enabled struct - * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag - * to av_opt_find() will make the function search children recursively. - * - * For enumerating there are basically two cases. The first is when you want to - * get all options that may potentially exist on the struct and its children - * (e.g. when constructing documentation). In that case you should call - * av_opt_child_class_next() recursively on the parent struct's AVClass. The - * second case is when you have an already initialized struct with all its - * children and you want to get all options that can be actually written or read - * from it. In that case you should call av_opt_child_next() recursively (and - * av_opt_next() on each result). - * - * @subsection avoptions_use_get_set Reading and writing AVOptions - * When setting options, you often have a string read directly from the - * user. In such a case, simply passing it to av_opt_set() is enough. For - * non-string type options, av_opt_set() will parse the string according to the - * option type. - * - * Similarly av_opt_get() will read any option type and convert it to a string - * which will be returned. Do not forget that the string is allocated, so you - * have to free it with av_free(). - * - * In some cases it may be more convenient to put all options into an - * AVDictionary and call av_opt_set_dict() on it. A specific case of this - * are the format/codec open functions in lavf/lavc which take a dictionary - * filled with option as a parameter. This allows to set some options - * that cannot be set otherwise, since e.g. the input file format is not known - * before the file is actually opened. - */ - -enum AVOptionType{ - AV_OPT_TYPE_FLAGS, - AV_OPT_TYPE_INT, - AV_OPT_TYPE_INT64, - AV_OPT_TYPE_DOUBLE, - AV_OPT_TYPE_FLOAT, - AV_OPT_TYPE_STRING, - AV_OPT_TYPE_RATIONAL, - AV_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length - AV_OPT_TYPE_DICT, - AV_OPT_TYPE_CONST = 128, -}; - -/** - * AVOption - */ -typedef struct AVOption { - const char *name; - - /** - * short English help text - * @todo What about other languages? - */ - const char *help; - - /** - * The offset relative to the context structure where the option - * value is stored. It should be 0 for named constants. - */ - int offset; - enum AVOptionType type; - - /** - * the default value for scalar options - */ - union { - int64_t i64; - double dbl; - const char *str; - /* TODO those are unused now */ - AVRational q; - } default_val; - double min; ///< minimum valid value for the option - double max; ///< maximum valid value for the option - - int flags; -#define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding -#define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding -#if FF_API_OPT_TYPE_METADATA -#define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... -#endif -#define AV_OPT_FLAG_AUDIO_PARAM 8 -#define AV_OPT_FLAG_VIDEO_PARAM 16 -#define AV_OPT_FLAG_SUBTITLE_PARAM 32 -/** - * The option is inteded for exporting values to the caller. - */ -#define AV_OPT_FLAG_EXPORT 64 -/** - * The option may not be set through the AVOptions API, only read. - * This flag only makes sense when AV_OPT_FLAG_EXPORT is also set. - */ -#define AV_OPT_FLAG_READONLY 128 -//FIXME think about enc-audio, ... style flags - - /** - * The logical unit to which the option belongs. Non-constant - * options and corresponding named constants share the same - * unit. May be NULL. - */ - const char *unit; -} AVOption; - -/** - * Show the obj options. - * - * @param req_flags requested flags for the options to show. Show only the - * options for which it is opt->flags & req_flags. - * @param rej_flags rejected flags for the options to show. Show only the - * options for which it is !(opt->flags & req_flags). - * @param av_log_obj log context to use for showing the options - */ -int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags); - -/** - * Set the values of all AVOption fields to their default values. - * - * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass) - */ -void av_opt_set_defaults(void *s); - -/** - * Parse the key/value pairs list in opts. For each key/value pair - * found, stores the value in the field in ctx that is named like the - * key. ctx must be an AVClass context, storing is done using - * AVOptions. - * - * @param key_val_sep a 0-terminated list of characters used to - * separate key from value - * @param pairs_sep a 0-terminated list of characters used to separate - * two pairs from each other - * @return the number of successfully set key/value pairs, or a negative - * value corresponding to an AVERROR code in case of error: - * AVERROR(EINVAL) if opts cannot be parsed, - * the error code issued by av_set_string3() if a key/value pair - * cannot be set - */ -int av_set_options_string(void *ctx, const char *opts, - const char *key_val_sep, const char *pairs_sep); - -/** - * Free all allocated objects in obj. - */ -void av_opt_free(void *obj); - -/** - * Check whether a particular flag is set in a flags field. - * - * @param field_name the name of the flag field option - * @param flag_name the name of the flag to check - * @return non-zero if the flag is set, zero if the flag isn't set, - * isn't of the right type, or the flags field doesn't exist. - */ -int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name); - -/* - * Set all the options from a given dictionary on an object. - * - * @param obj a struct whose first element is a pointer to AVClass - * @param options options to process. This dictionary will be freed and replaced - * by a new one containing all options not found in obj. - * Of course this new dictionary needs to be freed by caller - * with av_dict_free(). - * - * @return 0 on success, a negative AVERROR if some option was found in obj, - * but could not be set. - * - * @see av_dict_copy() - */ -int av_opt_set_dict(void *obj, struct AVDictionary **options); - -/** - * @defgroup opt_eval_funcs Evaluating option strings - * @{ - * This group of functions can be used to evaluate option strings - * and get numbers out of them. They do the same thing as av_opt_set(), - * except the result is written into the caller-supplied pointer. - * - * @param obj a struct whose first element is a pointer to AVClass. - * @param o an option for which the string is to be evaluated. - * @param val string to be evaluated. - * @param *_out value of the string will be written here. - * - * @return 0 on success, a negative number on failure. - */ -int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int *flags_out); -int av_opt_eval_int (void *obj, const AVOption *o, const char *val, int *int_out); -int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t *int64_out); -int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float *float_out); -int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double *double_out); -int av_opt_eval_q (void *obj, const AVOption *o, const char *val, AVRational *q_out); -/** - * @} - */ - -#define AV_OPT_SEARCH_CHILDREN 0x0001 /**< Search in possible children of the - given object first. */ -/** - * The obj passed to av_opt_find() is fake -- only a double pointer to AVClass - * instead of a required pointer to a struct containing AVClass. This is - * useful for searching for options without needing to allocate the corresponding - * object. - */ -#define AV_OPT_SEARCH_FAKE_OBJ 0x0002 - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * - * @return A pointer to the option found, or NULL if no option - * was found. - * - * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable - * directly with av_set_string3(). Use special calls which take an options - * AVDictionary (e.g. avformat_open_input()) to set options found with this - * flag. - */ -const AVOption *av_opt_find(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags); - -/** - * Look for an option in an object. Consider only options which - * have all the specified flags set. - * - * @param[in] obj A pointer to a struct whose first element is a - * pointer to an AVClass. - * Alternatively a double pointer to an AVClass, if - * AV_OPT_SEARCH_FAKE_OBJ search flag is set. - * @param[in] name The name of the option to look for. - * @param[in] unit When searching for named constants, name of the unit - * it belongs to. - * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG). - * @param search_flags A combination of AV_OPT_SEARCH_*. - * @param[out] target_obj if non-NULL, an object to which the option belongs will be - * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present - * in search_flags. This parameter is ignored if search_flags contain - * AV_OPT_SEARCH_FAKE_OBJ. - * - * @return A pointer to the option found, or NULL if no option - * was found. - */ -const AVOption *av_opt_find2(void *obj, const char *name, const char *unit, - int opt_flags, int search_flags, void **target_obj); - -/** - * Iterate over all AVOptions belonging to obj. - * - * @param obj an AVOptions-enabled struct or a double pointer to an - * AVClass describing it. - * @param prev result of the previous call to av_opt_next() on this object - * or NULL - * @return next AVOption or NULL - */ -const AVOption *av_opt_next(void *obj, const AVOption *prev); - -/** - * Iterate over AVOptions-enabled children of obj. - * - * @param prev result of a previous call to this function or NULL - * @return next AVOptions-enabled child or NULL - */ -void *av_opt_child_next(void *obj, void *prev); - -/** - * Iterate over potential AVOptions-enabled children of parent. - * - * @param prev result of a previous call to this function or NULL - * @return AVClass corresponding to next potential child or NULL - */ -const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev); - -/** - * @defgroup opt_set_funcs Option setting functions - * @{ - * Those functions set the field of obj with the given name to value. - * - * @param[in] obj A struct whose first element is a pointer to an AVClass. - * @param[in] name the name of the field to set - * @param[in] val The value to set. In case of av_opt_set() if the field is not - * of a string type, then the given string is parsed. - * SI postfixes and some named scalars are supported. - * If the field is of a numeric type, it has to be a numeric or named - * scalar. Behavior with more than one scalar and +- infix operators - * is undefined. - * If the field is of a flags type, it has to be a sequence of numeric - * scalars or named flags separated by '+' or '-'. Prefixing a flag - * with '+' causes it to be set without affecting the other flags; - * similarly, '-' unsets a flag. - * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be set on a child of obj. - * - * @return 0 if the value has been set, or an AVERROR code in case of - * error: - * AVERROR_OPTION_NOT_FOUND if no matching option exists - * AVERROR(ERANGE) if the value is out of range - * AVERROR(EINVAL) if the value is not valid - */ -int av_opt_set (void *obj, const char *name, const char *val, int search_flags); -int av_opt_set_int (void *obj, const char *name, int64_t val, int search_flags); -int av_opt_set_double (void *obj, const char *name, double val, int search_flags); -int av_opt_set_q (void *obj, const char *name, AVRational val, int search_flags); -int av_opt_set_bin (void *obj, const char *name, const uint8_t *val, int size, int search_flags); -/** - * @note Any old dictionary present is discarded and replaced with a copy of the new one. The - * caller still owns val is and responsible for freeing it. - */ -int av_opt_set_dict_val(void *obj, const char *name, const AVDictionary *val, int search_flags); -/** - * @} - */ - -/** - * @defgroup opt_get_funcs Option getting functions - * @{ - * Those functions get a value of the option with the given name from an object. - * - * @param[in] obj a struct whose first element is a pointer to an AVClass. - * @param[in] name name of the option to get. - * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN - * is passed here, then the option may be found in a child of obj. - * @param[out] out_val value of the option will be written here - * @return 0 on success, a negative error code otherwise - */ -/** - * @note the returned string will av_malloc()ed and must be av_free()ed by the caller - */ -int av_opt_get (void *obj, const char *name, int search_flags, uint8_t **out_val); -int av_opt_get_int (void *obj, const char *name, int search_flags, int64_t *out_val); -int av_opt_get_double (void *obj, const char *name, int search_flags, double *out_val); -int av_opt_get_q (void *obj, const char *name, int search_flags, AVRational *out_val); -/** - * @param[out] out_val The returned dictionary is a copy of the actual value and must - * be freed with av_dict_free() by the caller - */ -int av_opt_get_dict_val(void *obj, const char *name, int search_flags, AVDictionary **out_val); -/** - * @} - * @} - */ - -#endif /* AVUTIL_OPT_H */ diff --git a/media/libav/libavutil/parseutils.c b/media/libav/libavutil/parseutils.c deleted file mode 100644 index 414cd47e6..000000000 --- a/media/libav/libavutil/parseutils.c +++ /dev/null @@ -1,742 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * misc parsing utilities - */ - -#include <time.h> - -#include "avstring.h" -#include "avutil.h" -#include "common.h" -#include "eval.h" -#include "log.h" -#include "random_seed.h" -#include "parseutils.h" - -typedef struct { - const char *abbr; - int width, height; -} VideoSizeAbbr; - -typedef struct { - const char *abbr; - AVRational rate; -} VideoRateAbbr; - -static const VideoSizeAbbr video_size_abbrs[] = { - { "ntsc", 720, 480 }, - { "pal", 720, 576 }, - { "qntsc", 352, 240 }, /* VCD compliant NTSC */ - { "qpal", 352, 288 }, /* VCD compliant PAL */ - { "sntsc", 640, 480 }, /* square pixel NTSC */ - { "spal", 768, 576 }, /* square pixel PAL */ - { "film", 352, 240 }, - { "ntsc-film", 352, 240 }, - { "sqcif", 128, 96 }, - { "qcif", 176, 144 }, - { "cif", 352, 288 }, - { "4cif", 704, 576 }, - { "16cif", 1408,1152 }, - { "qqvga", 160, 120 }, - { "qvga", 320, 240 }, - { "vga", 640, 480 }, - { "svga", 800, 600 }, - { "xga", 1024, 768 }, - { "uxga", 1600,1200 }, - { "qxga", 2048,1536 }, - { "sxga", 1280,1024 }, - { "qsxga", 2560,2048 }, - { "hsxga", 5120,4096 }, - { "wvga", 852, 480 }, - { "wxga", 1366, 768 }, - { "wsxga", 1600,1024 }, - { "wuxga", 1920,1200 }, - { "woxga", 2560,1600 }, - { "wqsxga", 3200,2048 }, - { "wquxga", 3840,2400 }, - { "whsxga", 6400,4096 }, - { "whuxga", 7680,4800 }, - { "cga", 320, 200 }, - { "ega", 640, 350 }, - { "hd480", 852, 480 }, - { "hd720", 1280, 720 }, - { "hd1080", 1920,1080 }, -}; - -static const VideoRateAbbr video_rate_abbrs[]= { - { "ntsc", { 30000, 1001 } }, - { "pal", { 25, 1 } }, - { "qntsc", { 30000, 1001 } }, /* VCD compliant NTSC */ - { "qpal", { 25, 1 } }, /* VCD compliant PAL */ - { "sntsc", { 30000, 1001 } }, /* square pixel NTSC */ - { "spal", { 25, 1 } }, /* square pixel PAL */ - { "film", { 24, 1 } }, - { "ntsc-film", { 24000, 1001 } }, -}; - -int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str) -{ - int i; - int n = FF_ARRAY_ELEMS(video_size_abbrs); - char *p; - int width = 0, height = 0; - - for (i = 0; i < n; i++) { - if (!strcmp(video_size_abbrs[i].abbr, str)) { - width = video_size_abbrs[i].width; - height = video_size_abbrs[i].height; - break; - } - } - if (i == n) { - width = strtol(str, &p, 10); - if (*p) - p++; - height = strtol(p, &p, 10); - } - if (width <= 0 || height <= 0) - return AVERROR(EINVAL); - *width_ptr = width; - *height_ptr = height; - return 0; -} - -int av_parse_video_rate(AVRational *rate, const char *arg) -{ - int i, ret; - int n = FF_ARRAY_ELEMS(video_rate_abbrs); - double res; - - /* First, we check our abbreviation table */ - for (i = 0; i < n; ++i) - if (!strcmp(video_rate_abbrs[i].abbr, arg)) { - *rate = video_rate_abbrs[i].rate; - return 0; - } - - /* Then, we try to parse it as fraction */ - if ((ret = av_expr_parse_and_eval(&res, arg, NULL, NULL, NULL, NULL, NULL, NULL, - NULL, 0, NULL)) < 0) - return ret; - *rate = av_d2q(res, 1001000); - if (rate->num <= 0 || rate->den <= 0) - return AVERROR(EINVAL); - return 0; -} - -typedef struct { - const char *name; ///< a string representing the name of the color - uint8_t rgb_color[3]; ///< RGB values for the color -} ColorEntry; - -static ColorEntry color_table[] = { - { "AliceBlue", { 0xF0, 0xF8, 0xFF } }, - { "AntiqueWhite", { 0xFA, 0xEB, 0xD7 } }, - { "Aqua", { 0x00, 0xFF, 0xFF } }, - { "Aquamarine", { 0x7F, 0xFF, 0xD4 } }, - { "Azure", { 0xF0, 0xFF, 0xFF } }, - { "Beige", { 0xF5, 0xF5, 0xDC } }, - { "Bisque", { 0xFF, 0xE4, 0xC4 } }, - { "Black", { 0x00, 0x00, 0x00 } }, - { "BlanchedAlmond", { 0xFF, 0xEB, 0xCD } }, - { "Blue", { 0x00, 0x00, 0xFF } }, - { "BlueViolet", { 0x8A, 0x2B, 0xE2 } }, - { "Brown", { 0xA5, 0x2A, 0x2A } }, - { "BurlyWood", { 0xDE, 0xB8, 0x87 } }, - { "CadetBlue", { 0x5F, 0x9E, 0xA0 } }, - { "Chartreuse", { 0x7F, 0xFF, 0x00 } }, - { "Chocolate", { 0xD2, 0x69, 0x1E } }, - { "Coral", { 0xFF, 0x7F, 0x50 } }, - { "CornflowerBlue", { 0x64, 0x95, 0xED } }, - { "Cornsilk", { 0xFF, 0xF8, 0xDC } }, - { "Crimson", { 0xDC, 0x14, 0x3C } }, - { "Cyan", { 0x00, 0xFF, 0xFF } }, - { "DarkBlue", { 0x00, 0x00, 0x8B } }, - { "DarkCyan", { 0x00, 0x8B, 0x8B } }, - { "DarkGoldenRod", { 0xB8, 0x86, 0x0B } }, - { "DarkGray", { 0xA9, 0xA9, 0xA9 } }, - { "DarkGreen", { 0x00, 0x64, 0x00 } }, - { "DarkKhaki", { 0xBD, 0xB7, 0x6B } }, - { "DarkMagenta", { 0x8B, 0x00, 0x8B } }, - { "DarkOliveGreen", { 0x55, 0x6B, 0x2F } }, - { "Darkorange", { 0xFF, 0x8C, 0x00 } }, - { "DarkOrchid", { 0x99, 0x32, 0xCC } }, - { "DarkRed", { 0x8B, 0x00, 0x00 } }, - { "DarkSalmon", { 0xE9, 0x96, 0x7A } }, - { "DarkSeaGreen", { 0x8F, 0xBC, 0x8F } }, - { "DarkSlateBlue", { 0x48, 0x3D, 0x8B } }, - { "DarkSlateGray", { 0x2F, 0x4F, 0x4F } }, - { "DarkTurquoise", { 0x00, 0xCE, 0xD1 } }, - { "DarkViolet", { 0x94, 0x00, 0xD3 } }, - { "DeepPink", { 0xFF, 0x14, 0x93 } }, - { "DeepSkyBlue", { 0x00, 0xBF, 0xFF } }, - { "DimGray", { 0x69, 0x69, 0x69 } }, - { "DodgerBlue", { 0x1E, 0x90, 0xFF } }, - { "FireBrick", { 0xB2, 0x22, 0x22 } }, - { "FloralWhite", { 0xFF, 0xFA, 0xF0 } }, - { "ForestGreen", { 0x22, 0x8B, 0x22 } }, - { "Fuchsia", { 0xFF, 0x00, 0xFF } }, - { "Gainsboro", { 0xDC, 0xDC, 0xDC } }, - { "GhostWhite", { 0xF8, 0xF8, 0xFF } }, - { "Gold", { 0xFF, 0xD7, 0x00 } }, - { "GoldenRod", { 0xDA, 0xA5, 0x20 } }, - { "Gray", { 0x80, 0x80, 0x80 } }, - { "Green", { 0x00, 0x80, 0x00 } }, - { "GreenYellow", { 0xAD, 0xFF, 0x2F } }, - { "HoneyDew", { 0xF0, 0xFF, 0xF0 } }, - { "HotPink", { 0xFF, 0x69, 0xB4 } }, - { "IndianRed", { 0xCD, 0x5C, 0x5C } }, - { "Indigo", { 0x4B, 0x00, 0x82 } }, - { "Ivory", { 0xFF, 0xFF, 0xF0 } }, - { "Khaki", { 0xF0, 0xE6, 0x8C } }, - { "Lavender", { 0xE6, 0xE6, 0xFA } }, - { "LavenderBlush", { 0xFF, 0xF0, 0xF5 } }, - { "LawnGreen", { 0x7C, 0xFC, 0x00 } }, - { "LemonChiffon", { 0xFF, 0xFA, 0xCD } }, - { "LightBlue", { 0xAD, 0xD8, 0xE6 } }, - { "LightCoral", { 0xF0, 0x80, 0x80 } }, - { "LightCyan", { 0xE0, 0xFF, 0xFF } }, - { "LightGoldenRodYellow", { 0xFA, 0xFA, 0xD2 } }, - { "LightGrey", { 0xD3, 0xD3, 0xD3 } }, - { "LightGreen", { 0x90, 0xEE, 0x90 } }, - { "LightPink", { 0xFF, 0xB6, 0xC1 } }, - { "LightSalmon", { 0xFF, 0xA0, 0x7A } }, - { "LightSeaGreen", { 0x20, 0xB2, 0xAA } }, - { "LightSkyBlue", { 0x87, 0xCE, 0xFA } }, - { "LightSlateGray", { 0x77, 0x88, 0x99 } }, - { "LightSteelBlue", { 0xB0, 0xC4, 0xDE } }, - { "LightYellow", { 0xFF, 0xFF, 0xE0 } }, - { "Lime", { 0x00, 0xFF, 0x00 } }, - { "LimeGreen", { 0x32, 0xCD, 0x32 } }, - { "Linen", { 0xFA, 0xF0, 0xE6 } }, - { "Magenta", { 0xFF, 0x00, 0xFF } }, - { "Maroon", { 0x80, 0x00, 0x00 } }, - { "MediumAquaMarine", { 0x66, 0xCD, 0xAA } }, - { "MediumBlue", { 0x00, 0x00, 0xCD } }, - { "MediumOrchid", { 0xBA, 0x55, 0xD3 } }, - { "MediumPurple", { 0x93, 0x70, 0xD8 } }, - { "MediumSeaGreen", { 0x3C, 0xB3, 0x71 } }, - { "MediumSlateBlue", { 0x7B, 0x68, 0xEE } }, - { "MediumSpringGreen", { 0x00, 0xFA, 0x9A } }, - { "MediumTurquoise", { 0x48, 0xD1, 0xCC } }, - { "MediumVioletRed", { 0xC7, 0x15, 0x85 } }, - { "MidnightBlue", { 0x19, 0x19, 0x70 } }, - { "MintCream", { 0xF5, 0xFF, 0xFA } }, - { "MistyRose", { 0xFF, 0xE4, 0xE1 } }, - { "Moccasin", { 0xFF, 0xE4, 0xB5 } }, - { "NavajoWhite", { 0xFF, 0xDE, 0xAD } }, - { "Navy", { 0x00, 0x00, 0x80 } }, - { "OldLace", { 0xFD, 0xF5, 0xE6 } }, - { "Olive", { 0x80, 0x80, 0x00 } }, - { "OliveDrab", { 0x6B, 0x8E, 0x23 } }, - { "Orange", { 0xFF, 0xA5, 0x00 } }, - { "OrangeRed", { 0xFF, 0x45, 0x00 } }, - { "Orchid", { 0xDA, 0x70, 0xD6 } }, - { "PaleGoldenRod", { 0xEE, 0xE8, 0xAA } }, - { "PaleGreen", { 0x98, 0xFB, 0x98 } }, - { "PaleTurquoise", { 0xAF, 0xEE, 0xEE } }, - { "PaleVioletRed", { 0xD8, 0x70, 0x93 } }, - { "PapayaWhip", { 0xFF, 0xEF, 0xD5 } }, - { "PeachPuff", { 0xFF, 0xDA, 0xB9 } }, - { "Peru", { 0xCD, 0x85, 0x3F } }, - { "Pink", { 0xFF, 0xC0, 0xCB } }, - { "Plum", { 0xDD, 0xA0, 0xDD } }, - { "PowderBlue", { 0xB0, 0xE0, 0xE6 } }, - { "Purple", { 0x80, 0x00, 0x80 } }, - { "Red", { 0xFF, 0x00, 0x00 } }, - { "RosyBrown", { 0xBC, 0x8F, 0x8F } }, - { "RoyalBlue", { 0x41, 0x69, 0xE1 } }, - { "SaddleBrown", { 0x8B, 0x45, 0x13 } }, - { "Salmon", { 0xFA, 0x80, 0x72 } }, - { "SandyBrown", { 0xF4, 0xA4, 0x60 } }, - { "SeaGreen", { 0x2E, 0x8B, 0x57 } }, - { "SeaShell", { 0xFF, 0xF5, 0xEE } }, - { "Sienna", { 0xA0, 0x52, 0x2D } }, - { "Silver", { 0xC0, 0xC0, 0xC0 } }, - { "SkyBlue", { 0x87, 0xCE, 0xEB } }, - { "SlateBlue", { 0x6A, 0x5A, 0xCD } }, - { "SlateGray", { 0x70, 0x80, 0x90 } }, - { "Snow", { 0xFF, 0xFA, 0xFA } }, - { "SpringGreen", { 0x00, 0xFF, 0x7F } }, - { "SteelBlue", { 0x46, 0x82, 0xB4 } }, - { "Tan", { 0xD2, 0xB4, 0x8C } }, - { "Teal", { 0x00, 0x80, 0x80 } }, - { "Thistle", { 0xD8, 0xBF, 0xD8 } }, - { "Tomato", { 0xFF, 0x63, 0x47 } }, - { "Turquoise", { 0x40, 0xE0, 0xD0 } }, - { "Violet", { 0xEE, 0x82, 0xEE } }, - { "Wheat", { 0xF5, 0xDE, 0xB3 } }, - { "White", { 0xFF, 0xFF, 0xFF } }, - { "WhiteSmoke", { 0xF5, 0xF5, 0xF5 } }, - { "Yellow", { 0xFF, 0xFF, 0x00 } }, - { "YellowGreen", { 0x9A, 0xCD, 0x32 } }, -}; - -static int color_table_compare(const void *lhs, const void *rhs) -{ - return av_strcasecmp(lhs, ((const ColorEntry *)rhs)->name); -} - -#define ALPHA_SEP '@' - -int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, - void *log_ctx) -{ - char *tail, color_string2[128]; - const ColorEntry *entry; - int len, hex_offset = 0; - - if (color_string[0] == '#') { - hex_offset = 1; - } else if (!strncmp(color_string, "0x", 2)) - hex_offset = 2; - - if (slen < 0) - slen = strlen(color_string); - av_strlcpy(color_string2, color_string + hex_offset, - FFMIN(slen-hex_offset+1, sizeof(color_string2))); - if ((tail = strchr(color_string2, ALPHA_SEP))) - *tail++ = 0; - len = strlen(color_string2); - rgba_color[3] = 255; - - if (!av_strcasecmp(color_string2, "random") || !av_strcasecmp(color_string2, "bikeshed")) { - int rgba = av_get_random_seed(); - rgba_color[0] = rgba >> 24; - rgba_color[1] = rgba >> 16; - rgba_color[2] = rgba >> 8; - rgba_color[3] = rgba; - } else if (hex_offset || - strspn(color_string2, "0123456789ABCDEFabcdef") == len) { - char *tail; - unsigned int rgba = strtoul(color_string2, &tail, 16); - - if (*tail || (len != 6 && len != 8)) { - av_log(log_ctx, AV_LOG_ERROR, "Invalid 0xRRGGBB[AA] color string: '%s'\n", color_string2); - return AVERROR(EINVAL); - } - if (len == 8) { - rgba_color[3] = rgba; - rgba >>= 8; - } - rgba_color[0] = rgba >> 16; - rgba_color[1] = rgba >> 8; - rgba_color[2] = rgba; - } else { - entry = bsearch(color_string2, - color_table, - FF_ARRAY_ELEMS(color_table), - sizeof(ColorEntry), - color_table_compare); - if (!entry) { - av_log(log_ctx, AV_LOG_ERROR, "Cannot find color '%s'\n", color_string2); - return AVERROR(EINVAL); - } - memcpy(rgba_color, entry->rgb_color, 3); - } - - if (tail) { - double alpha; - const char *alpha_string = tail; - if (!strncmp(alpha_string, "0x", 2)) { - alpha = strtoul(alpha_string, &tail, 16); - } else { - alpha = 255 * strtod(alpha_string, &tail); - } - - if (tail == alpha_string || *tail || alpha > 255 || alpha < 0) { - av_log(log_ctx, AV_LOG_ERROR, "Invalid alpha value specifier '%s' in '%s'\n", - alpha_string, color_string); - return AVERROR(EINVAL); - } - rgba_color[3] = alpha; - } - - return 0; -} - -/* get a positive number between n_min and n_max, for a maximum length - of len_max. Return -1 if error. */ -static int date_get_num(const char **pp, - int n_min, int n_max, int len_max) -{ - int i, val, c; - const char *p; - - p = *pp; - val = 0; - for(i = 0; i < len_max; i++) { - c = *p; - if (!av_isdigit(c)) - break; - val = (val * 10) + c - '0'; - p++; - } - /* no number read ? */ - if (p == *pp) - return -1; - if (val < n_min || val > n_max) - return -1; - *pp = p; - return val; -} - -static const char *small_strptime(const char *p, const char *fmt, struct tm *dt) -{ - int c, val; - - for(;;) { - c = *fmt++; - if (c == '\0') { - return p; - } else if (c == '%') { - c = *fmt++; - switch(c) { - case 'H': - val = date_get_num(&p, 0, 23, 2); - if (val == -1) - return NULL; - dt->tm_hour = val; - break; - case 'M': - val = date_get_num(&p, 0, 59, 2); - if (val == -1) - return NULL; - dt->tm_min = val; - break; - case 'S': - val = date_get_num(&p, 0, 59, 2); - if (val == -1) - return NULL; - dt->tm_sec = val; - break; - case 'Y': - val = date_get_num(&p, 0, 9999, 4); - if (val == -1) - return NULL; - dt->tm_year = val - 1900; - break; - case 'm': - val = date_get_num(&p, 1, 12, 2); - if (val == -1) - return NULL; - dt->tm_mon = val - 1; - break; - case 'd': - val = date_get_num(&p, 1, 31, 2); - if (val == -1) - return NULL; - dt->tm_mday = val; - break; - case '%': - goto match; - default: - return NULL; - } - } else { - match: - if (c != *p) - return NULL; - p++; - } - } -} - -time_t av_timegm(struct tm *tm) -{ - time_t t; - - int y = tm->tm_year + 1900, m = tm->tm_mon + 1, d = tm->tm_mday; - - if (m < 3) { - m += 12; - y--; - } - - t = 86400 * - (d + (153 * m - 457) / 5 + 365 * y + y / 4 - y / 100 + y / 400 - 719469); - - t += 3600 * tm->tm_hour + 60 * tm->tm_min + tm->tm_sec; - - return t; -} - -int av_parse_time(int64_t *timeval, const char *timestr, int duration) -{ - const char *p; - int64_t t; - struct tm dt = { 0 }; - int i; - static const char * const date_fmt[] = { - "%Y-%m-%d", - "%Y%m%d", - }; - static const char * const time_fmt[] = { - "%H:%M:%S", - "%H%M%S", - }; - const char *q; - int is_utc, len; - char lastch; - int negative = 0; - - time_t now = time(0); - - len = strlen(timestr); - if (len > 0) - lastch = timestr[len - 1]; - else - lastch = '\0'; - is_utc = (lastch == 'z' || lastch == 'Z'); - - p = timestr; - q = NULL; - if (!duration) { - if (!av_strncasecmp(timestr, "now", len)) { - *timeval = (int64_t) now * 1000000; - return 0; - } - - /* parse the year-month-day part */ - for (i = 0; i < FF_ARRAY_ELEMS(date_fmt); i++) { - q = small_strptime(p, date_fmt[i], &dt); - if (q) { - break; - } - } - - /* if the year-month-day part is missing, then take the - * current year-month-day time */ - if (!q) { - if (is_utc) { - dt = *gmtime(&now); - } else { - dt = *localtime(&now); - } - dt.tm_hour = dt.tm_min = dt.tm_sec = 0; - } else { - p = q; - } - - if (*p == 'T' || *p == 't' || *p == ' ') - p++; - - /* parse the hour-minute-second part */ - for (i = 0; i < FF_ARRAY_ELEMS(time_fmt); i++) { - q = small_strptime(p, time_fmt[i], &dt); - if (q) { - break; - } - } - } else { - /* parse timestr as a duration */ - if (p[0] == '-') { - negative = 1; - ++p; - } - /* parse timestr as HH:MM:SS */ - q = small_strptime(p, time_fmt[0], &dt); - if (!q) { - char *o; - /* parse timestr as S+ */ - dt.tm_sec = strtol(p, &o, 10); - if (o == p) { - /* the parsing didn't succeed */ - *timeval = INT64_MIN; - return AVERROR(EINVAL); - } - dt.tm_min = 0; - dt.tm_hour = 0; - q = o; - } - } - - /* Now we have all the fields that we can get */ - if (!q) { - *timeval = INT64_MIN; - return AVERROR(EINVAL); - } - - if (duration) { - t = dt.tm_hour * 3600 + dt.tm_min * 60 + dt.tm_sec; - } else { - dt.tm_isdst = -1; /* unknown */ - if (is_utc) { - t = av_timegm(&dt); - } else { - t = mktime(&dt); - } - } - - t *= 1000000; - - /* parse the .m... part */ - if (*q == '.') { - int val, n; - q++; - for (val = 0, n = 100000; n >= 1; n /= 10, q++) { - if (!av_isdigit(*q)) - break; - val += n * (*q - '0'); - } - t += val; - } - *timeval = negative ? -t : t; - return 0; -} - -int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info) -{ - const char *p; - char tag[128], *q; - - p = info; - if (*p == '?') - p++; - for(;;) { - q = tag; - while (*p != '\0' && *p != '=' && *p != '&') { - if ((q - tag) < sizeof(tag) - 1) - *q++ = *p; - p++; - } - *q = '\0'; - q = arg; - if (*p == '=') { - p++; - while (*p != '&' && *p != '\0') { - if ((q - arg) < arg_size - 1) { - if (*p == '+') - *q++ = ' '; - else - *q++ = *p; - } - p++; - } - } - *q = '\0'; - if (!strcmp(tag, tag1)) - return 1; - if (*p != '&') - break; - p++; - } - return 0; -} - -#ifdef TEST - -int main(void) -{ - printf("Testing av_parse_video_rate()\n"); - { - int i; - static const char *const rates[] = { - "-inf", - "inf", - "nan", - "123/0", - "-123 / 0", - "", - "/", - " 123 / 321", - "foo/foo", - "foo/1", - "1/foo", - "0/0", - "/0", - "1/", - "1", - "0", - "-123/123", - "-foo", - "123.23", - ".23", - "-.23", - "-0.234", - "-0.0000001", - " 21332.2324 ", - " -21332.2324 ", - }; - - for (i = 0; i < FF_ARRAY_ELEMS(rates); i++) { - int ret; - AVRational q = { 0, 0 }; - ret = av_parse_video_rate(&q, rates[i]); - printf("'%s' -> %d/%d %s\n", - rates[i], q.num, q.den, ret ? "ERROR" : "OK"); - } - } - - printf("\nTesting av_parse_color()\n"); - { - int i; - uint8_t rgba[4]; - static const char *const color_names[] = { - "foo", - "red", - "Red ", - "RED", - "Violet", - "Yellow", - "Red", - "0x000000", - "0x0000000", - "0xff000000", - "0x3e34ff", - "0x3e34ffaa", - "0xffXXee", - "0xfoobar", - "0xffffeeeeeeee", - "#ff0000", - "#ffXX00", - "ff0000", - "ffXX00", - "red@foo", - "random@10", - "0xff0000@1.0", - "red@", - "red@0xfff", - "red@0xf", - "red@2", - "red@0.1", - "red@-1", - "red@0.5", - "red@1.0", - "red@256", - "red@10foo", - "red@-1.0", - "red@-0.0", - }; - - av_log_set_level(AV_LOG_DEBUG); - - for (i = 0; i < FF_ARRAY_ELEMS(color_names); i++) { - if (av_parse_color(rgba, color_names[i], -1, NULL) >= 0) - printf("%s -> R(%d) G(%d) B(%d) A(%d)\n", - color_names[i], rgba[0], rgba[1], rgba[2], rgba[3]); - } - } - - return 0; -} - -#endif /* TEST */ diff --git a/media/libav/libavutil/parseutils.h b/media/libav/libavutil/parseutils.h deleted file mode 100644 index 0844abb2f..000000000 --- a/media/libav/libavutil/parseutils.h +++ /dev/null @@ -1,124 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PARSEUTILS_H -#define AVUTIL_PARSEUTILS_H - -#include <time.h> - -#include "rational.h" - -/** - * @file - * misc parsing utilities - */ - -/** - * Parse str and put in width_ptr and height_ptr the detected values. - * - * @param[in,out] width_ptr pointer to the variable which will contain the detected - * width value - * @param[in,out] height_ptr pointer to the variable which will contain the detected - * height value - * @param[in] str the string to parse: it has to be a string in the format - * width x height or a valid video size abbreviation. - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_size(int *width_ptr, int *height_ptr, const char *str); - -/** - * Parse str and store the detected values in *rate. - * - * @param[in,out] rate pointer to the AVRational which will contain the detected - * frame rate - * @param[in] str the string to parse: it has to be a string in the format - * rate_num / rate_den, a float number or a valid video rate abbreviation - * @return >= 0 on success, a negative error code otherwise - */ -int av_parse_video_rate(AVRational *rate, const char *str); - -/** - * Put the RGBA values that correspond to color_string in rgba_color. - * - * @param color_string a string specifying a color. It can be the name of - * a color (case insensitive match) or a [0x|#]RRGGBB[AA] sequence, - * possibly followed by "@" and a string representing the alpha - * component. - * The alpha component may be a string composed by "0x" followed by an - * hexadecimal number or a decimal number between 0.0 and 1.0, which - * represents the opacity value (0x00/0.0 means completely transparent, - * 0xff/1.0 completely opaque). - * If the alpha component is not specified then 0xff is assumed. - * The string "random" will result in a random color. - * @param slen length of the initial part of color_string containing the - * color. It can be set to -1 if color_string is a null terminated string - * containing nothing else than the color. - * @return >= 0 in case of success, a negative value in case of - * failure (for example if color_string cannot be parsed). - */ -int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen, - void *log_ctx); - -/** - * Parse timestr and return in *time a corresponding number of - * microseconds. - * - * @param timeval puts here the number of microseconds corresponding - * to the string in timestr. If the string represents a duration, it - * is the number of microseconds contained in the time interval. If - * the string is a date, is the number of microseconds since 1st of - * January, 1970 up to the time of the parsed date. If timestr cannot - * be successfully parsed, set *time to INT64_MIN. - - * @param timestr a string representing a date or a duration. - * - If a date the syntax is: - * @code - * [{YYYY-MM-DD|YYYYMMDD}[T|t| ]]{{HH[:MM[:SS[.m...]]]}|{HH[MM[SS[.m...]]]}}[Z] - * now - * @endcode - * If the value is "now" it takes the current time. - * Time is local time unless Z is appended, in which case it is - * interpreted as UTC. - * If the year-month-day part is not specified it takes the current - * year-month-day. - * - If a duration the syntax is: - * @code - * [-]HH[:MM[:SS[.m...]]] - * [-]S+[.m...] - * @endcode - * @param duration flag which tells how to interpret timestr, if not - * zero timestr is interpreted as a duration, otherwise as a date - * @return 0 in case of success, a negative value corresponding to an - * AVERROR code otherwise - */ -int av_parse_time(int64_t *timeval, const char *timestr, int duration); - -/** - * Attempt to find a specific tag in a URL. - * - * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. - * Return 1 if found. - */ -int av_find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); - -/** - * Convert the decomposed UTC time in tm to a time_t value. - */ -time_t av_timegm(struct tm *tm); - -#endif /* AVUTIL_PARSEUTILS_H */ diff --git a/media/libav/libavutil/pixfmt.h b/media/libav/libavutil/pixfmt.h deleted file mode 100644 index 47951e060..000000000 --- a/media/libav/libavutil/pixfmt.h +++ /dev/null @@ -1,387 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_PIXFMT_H -#define AVUTIL_PIXFMT_H - -/** - * @file - * pixel format definitions - * - */ - -#include "libavutil/avconfig.h" -#include "version.h" - -/** - * Pixel format. - * - * @note - * PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA - * color is put together as: - * (A << 24) | (R << 16) | (G << 8) | B - * This is stored as BGRA on little-endian CPU architectures and ARGB on - * big-endian CPUs. - * - * @par - * When the pixel format is palettized RGB (PIX_FMT_PAL8), the palettized - * image data is stored in AVFrame.data[0]. The palette is transported in - * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is - * formatted the same as in PIX_FMT_RGB32 described above (i.e., it is - * also endian-specific). Note also that the individual RGB palette - * components stored in AVFrame.data[1] should be in the range 0..255. - * This is important as many custom PAL8 video codecs that were designed - * to run on the IBM VGA graphics adapter use 6-bit palette components. - * - * @par - * For all the 8bit per pixel formats, an RGB32 palette is in data[1] like - * for pal8. This palette is filled in automatically by the function - * allocating the picture. - * - * @note - * Make sure that all newly added big-endian formats have pix_fmt & 1 == 1 - * and that all newly added little-endian formats have pix_fmt & 1 == 0. - * This allows simpler detection of big vs little-endian. - */ -enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) - AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr - AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB... - AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR... - AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) - AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples) - AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) - AV_PIX_FMT_GRAY8, ///< Y , 8bpp - AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb - AV_PIX_FMT_PAL8, ///< 8 bit with PIX_FMT_RGB32 palette - AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range - AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range - AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range -#if FF_API_XVMC - AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing - AV_PIX_FMT_XVMC_MPEG2_IDCT, -#endif /* FF_API_XVMC */ - AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1 - AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3 - AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb) - AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb) - AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb) - AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits - AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb) - AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V) - AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped - - AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB... - AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA... - AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR... - AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA... - - AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian - AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian - AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples) - AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range - AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples) -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian - - AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian - AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian - AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), big-endian, most significant bit to 0 - AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1A 5R 5G 5B(lsb), little-endian, most significant bit to 0 - - AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian - AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian - AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), big-endian, most significant bit to 1 - AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1A 5B 5G 5R(lsb), little-endian, most significant bit to 1 - - AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers - AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers - AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers - - AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian -#if FF_API_VDPAU - AV_PIX_FMT_VDPAU_MPEG4, ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers -#endif - AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer - - AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0 - AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), big-endian, most significant bits to 0 - AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), little-endian, most significant bits to 1 - AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4A 4B 4G 4R(lsb), big-endian, most significant bits to 1 - AV_PIX_FMT_YA8, ///< 8bit gray, 8bit alpha - - AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8 - - AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian - AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian - AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian - AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian - AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian - AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian - AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_VDA_VLD, ///< hardware decoding through VDA - AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp - AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian - AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian - AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian - AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian - AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian - AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian - AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples) - AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples) - AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian - AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian - AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian - AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian - AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian) - AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian) - AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian) - AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian) - AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian) - AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface - AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 - AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) - AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian - AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian - - AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian - AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian - - AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb - - AV_PIX_FMT_VDA, ///< HW acceleration through VDA, data[3] contains a CVPixelBufferRef - - AV_PIX_FMT_YA16BE, ///< 16bit gray, 16bit alpha (big-endian) - AV_PIX_FMT_YA16LE, ///< 16bit gray, 16bit alpha (little-endian) - - AV_PIX_FMT_NB, ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions - -#if FF_API_PIX_FMT -#include "old_pix_fmts.h" -#endif -}; - -#if AV_HAVE_BIGENDIAN -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be -#else -# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le -#endif - -#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA) -#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR) -#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA) -#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB) - -#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE) -#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE) -#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE) -#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE) -#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) -#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) -#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) -#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) -#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) -#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) -#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) -#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) - -#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) -#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) -#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE) -#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE) -#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE) -#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE) -#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE) -#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) -#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) - -#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE) -#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE) -#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE) - -#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE) -#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE) -#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE) -#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE) -#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE) -#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE) -#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE) -#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE) -#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) - -#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) -#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) - - -#if FF_API_PIX_FMT -#define PixelFormat AVPixelFormat - -#define PIX_FMT_NE(be, le) AV_PIX_FMT_NE(be, le) - -#define PIX_FMT_RGB32 AV_PIX_FMT_RGB32 -#define PIX_FMT_RGB32_1 AV_PIX_FMT_RGB32_1 -#define PIX_FMT_BGR32 AV_PIX_FMT_BGR32 -#define PIX_FMT_BGR32_1 AV_PIX_FMT_BGR32_1 - -#define PIX_FMT_GRAY16 AV_PIX_FMT_GRAY16 -#define PIX_FMT_RGB48 AV_PIX_FMT_RGB48 -#define PIX_FMT_RGB565 AV_PIX_FMT_RGB565 -#define PIX_FMT_RGB555 AV_PIX_FMT_RGB555 -#define PIX_FMT_RGB444 AV_PIX_FMT_RGB444 -#define PIX_FMT_BGR48 AV_PIX_FMT_BGR48 -#define PIX_FMT_BGR565 AV_PIX_FMT_BGR565 -#define PIX_FMT_BGR555 AV_PIX_FMT_BGR555 -#define PIX_FMT_BGR444 AV_PIX_FMT_BGR444 - -#define PIX_FMT_YUV420P9 AV_PIX_FMT_YUV420P9 -#define PIX_FMT_YUV422P9 AV_PIX_FMT_YUV422P9 -#define PIX_FMT_YUV444P9 AV_PIX_FMT_YUV444P9 -#define PIX_FMT_YUV420P10 AV_PIX_FMT_YUV420P10 -#define PIX_FMT_YUV422P10 AV_PIX_FMT_YUV422P10 -#define PIX_FMT_YUV444P10 AV_PIX_FMT_YUV444P10 -#define PIX_FMT_YUV420P16 AV_PIX_FMT_YUV420P16 -#define PIX_FMT_YUV422P16 AV_PIX_FMT_YUV422P16 -#define PIX_FMT_YUV444P16 AV_PIX_FMT_YUV444P16 - -#define PIX_FMT_GBRP9 AV_PIX_FMT_GBRP9 -#define PIX_FMT_GBRP10 AV_PIX_FMT_GBRP10 -#define PIX_FMT_GBRP16 AV_PIX_FMT_GBRP16 -#endif - -/** - * Chromaticity coordinates of the source primaries. - */ -enum AVColorPrimaries { - AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B - AVCOL_PRI_UNSPECIFIED = 2, - AVCOL_PRI_RESERVED = 3, - AVCOL_PRI_BT470M = 4, - AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM - AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC - AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above - AVCOL_PRI_FILM = 8, - AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020 - AVCOL_PRI_NB, ///< Not part of ABI -}; - -/** - * Color Transfer Characteristic. - */ -enum AVColorTransferCharacteristic { - AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361 - AVCOL_TRC_UNSPECIFIED = 2, - AVCOL_TRC_RESERVED = 3, - AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM - AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG - AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC - AVCOL_TRC_SMPTE240M = 7, - AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics" - AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)" - AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)" - AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4 - AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut - AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC) - AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10 bit system - AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12 bit system - AVCOL_TRC_NB, ///< Not part of ABI -}; - -/** - * YUV colorspace type. - */ -enum AVColorSpace { - AVCOL_SPC_RGB = 0, - AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B - AVCOL_SPC_UNSPECIFIED = 2, - AVCOL_SPC_RESERVED = 3, - AVCOL_SPC_FCC = 4, - AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601 - AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above - AVCOL_SPC_SMPTE240M = 7, - AVCOL_SPC_YCOCG = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16 - AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system - AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system - AVCOL_SPC_NB, ///< Not part of ABI -}; - -/** - * MPEG vs JPEG YUV range. - */ -enum AVColorRange { - AVCOL_RANGE_UNSPECIFIED = 0, - AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges - AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges - AVCOL_RANGE_NB, ///< Not part of ABI -}; - -/** - * Location of chroma samples. - * - * X X 3 4 X X are luma samples, - * 1 2 1-6 are possible chroma positions - * X X 5 6 X 0 is undefined/unknown position - */ -enum AVChromaLocation { - AVCHROMA_LOC_UNSPECIFIED = 0, - AVCHROMA_LOC_LEFT = 1, ///< mpeg2/4, h264 default - AVCHROMA_LOC_CENTER = 2, ///< mpeg1, jpeg, h263 - AVCHROMA_LOC_TOPLEFT = 3, ///< DV - AVCHROMA_LOC_TOP = 4, - AVCHROMA_LOC_BOTTOMLEFT = 5, - AVCHROMA_LOC_BOTTOM = 6, - AVCHROMA_LOC_NB, ///< Not part of ABI -}; - -#endif /* AVUTIL_PIXFMT_H */ diff --git a/media/libav/libavutil/random_seed.c b/media/libav/libavutil/random_seed.c deleted file mode 100644 index 26884cbcd..000000000 --- a/media/libav/libavutil/random_seed.c +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (c) 2009 Baptiste Coudurier <baptiste.coudurier@gmail.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "config.h" - -#if HAVE_UNISTD_H -#include <unistd.h> -#endif -#if HAVE_CRYPTGENRANDOM -#include <windows.h> -#include <wincrypt.h> -#endif -#include <fcntl.h> -#include <math.h> -#include <time.h> -#include "internal.h" -#include "intreadwrite.h" -#include "mem.h" -#include "timer.h" -#include "random_seed.h" -#include "sha.h" - -static int read_random(uint32_t *dst, const char *file) -{ -#if HAVE_UNISTD_H - int fd = avpriv_open(file, O_RDONLY); - int err = -1; - - if (fd == -1) - return -1; - err = read(fd, dst, sizeof(*dst)); - close(fd); - - return err; -#else - return -1; -#endif -} - -static uint32_t get_generic_seed(void) -{ - struct AVSHA *sha = av_sha_alloc(); - clock_t last_t = 0; - static uint64_t i = 0; - static uint32_t buffer[512] = { 0 }; - unsigned char digest[20]; - uint64_t last_i = i; - - for (;;) { - clock_t t = clock(); - - if (last_t == t) { - buffer[i & 511]++; - } else { - buffer[++i & 511] += (t - last_t) % 3294638521U; - if (last_i && i - last_i > 4 || i - last_i > 64) - break; - } - last_t = t; - } - - if (!sha) { - uint32_t seed = 0; - int j; - // Unable to allocate an sha context, just xor the buffer together - // to create something hopefully unique. - for (j = 0; j < 512; j++) - seed ^= buffer[j]; - return seed; - } - av_sha_init(sha, 160); - av_sha_update(sha, (const uint8_t *) buffer, sizeof(buffer)); - av_sha_final(sha, digest); - av_free(sha); - return AV_RB32(digest) + AV_RB32(digest + 16); -} - -uint32_t av_get_random_seed(void) -{ - uint32_t seed; - -#if HAVE_CRYPTGENRANDOM - HCRYPTPROV provider; - if (CryptAcquireContext(&provider, NULL, NULL, PROV_RSA_FULL, - CRYPT_VERIFYCONTEXT | CRYPT_SILENT)) { - BOOL ret = CryptGenRandom(provider, sizeof(seed), (PBYTE) &seed); - CryptReleaseContext(provider, 0); - if (ret) - return seed; - } -#endif - - if (read_random(&seed, "/dev/urandom") == sizeof(seed)) - return seed; - if (read_random(&seed, "/dev/random") == sizeof(seed)) - return seed; - return get_generic_seed(); -} diff --git a/media/libav/libavutil/random_seed.h b/media/libav/libavutil/random_seed.h deleted file mode 100644 index b1fad13d0..000000000 --- a/media/libav/libavutil/random_seed.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (c) 2009 Baptiste Coudurier <baptiste.coudurier@gmail.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_RANDOM_SEED_H -#define AVUTIL_RANDOM_SEED_H - -#include <stdint.h> -/** - * @addtogroup lavu_crypto - * @{ - */ - -/** - * Get random data. - * - * This function can be called repeatedly to generate more random bits - * as needed. It is generally quite slow, and usually used to seed a - * PRNG. As it uses /dev/urandom and /dev/random, the quality of the - * returned random data depends on the platform. - */ -uint32_t av_get_random_seed(void); - -/** - * @} - */ - -#endif /* AVUTIL_RANDOM_SEED_H */ diff --git a/media/libav/libavutil/rational.c b/media/libav/libavutil/rational.c deleted file mode 100644 index 405393619..000000000 --- a/media/libav/libavutil/rational.c +++ /dev/null @@ -1,145 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * rational numbers - * @author Michael Niedermayer <michaelni@gmx.at> - */ - -#include "avassert.h" -#include <limits.h> - -#include "common.h" -#include "mathematics.h" -#include "rational.h" - -int av_reduce(int *dst_num, int *dst_den, - int64_t num, int64_t den, int64_t max) -{ - AVRational a0 = { 0, 1 }, a1 = { 1, 0 }; - int sign = (num < 0) ^ (den < 0); - int64_t gcd = av_gcd(FFABS(num), FFABS(den)); - - if (gcd) { - num = FFABS(num) / gcd; - den = FFABS(den) / gcd; - } - if (num <= max && den <= max) { - a1 = (AVRational) { num, den }; - den = 0; - } - - while (den) { - uint64_t x = num / den; - int64_t next_den = num - den * x; - int64_t a2n = x * a1.num + a0.num; - int64_t a2d = x * a1.den + a0.den; - - if (a2n > max || a2d > max) { - if (a1.num) x = (max - a0.num) / a1.num; - if (a1.den) x = FFMIN(x, (max - a0.den) / a1.den); - - if (den * (2 * x * a1.den + a0.den) > num * a1.den) - a1 = (AVRational) { x * a1.num + a0.num, x * a1.den + a0.den }; - break; - } - - a0 = a1; - a1 = (AVRational) { a2n, a2d }; - num = den; - den = next_den; - } - av_assert2(av_gcd(a1.num, a1.den) <= 1U); - - *dst_num = sign ? -a1.num : a1.num; - *dst_den = a1.den; - - return den == 0; -} - -AVRational av_mul_q(AVRational b, AVRational c) -{ - av_reduce(&b.num, &b.den, - b.num * (int64_t) c.num, - b.den * (int64_t) c.den, INT_MAX); - return b; -} - -AVRational av_div_q(AVRational b, AVRational c) -{ - return av_mul_q(b, (AVRational) { c.den, c.num }); -} - -AVRational av_add_q(AVRational b, AVRational c) { - av_reduce(&b.num, &b.den, - b.num * (int64_t) c.den + - c.num * (int64_t) b.den, - b.den * (int64_t) c.den, INT_MAX); - return b; -} - -AVRational av_sub_q(AVRational b, AVRational c) -{ - return av_add_q(b, (AVRational) { -c.num, c.den }); -} - -AVRational av_d2q(double d, int max) -{ - AVRational a; -#define LOG2 0.69314718055994530941723212145817656807550013436025 - int exponent; - int64_t den; - if (isnan(d)) - return (AVRational) { 0,0 }; - if (isinf(d)) - return (AVRational) { d < 0 ? -1 : 1, 0 }; - exponent = FFMAX( (int)(log(fabs(d) + 1e-20)/LOG2), 0); - den = 1LL << (61 - exponent); - av_reduce(&a.num, &a.den, (int64_t)(d * den + 0.5), den, max); - - return a; -} - -int av_nearer_q(AVRational q, AVRational q1, AVRational q2) -{ - /* n/d is q, a/b is the median between q1 and q2 */ - int64_t a = q1.num * (int64_t)q2.den + q2.num * (int64_t)q1.den; - int64_t b = 2 * (int64_t)q1.den * q2.den; - - /* rnd_up(a*d/b) > n => a*d/b > n */ - int64_t x_up = av_rescale_rnd(a, q.den, b, AV_ROUND_UP); - - /* rnd_down(a*d/b) < n => a*d/b < n */ - int64_t x_down = av_rescale_rnd(a, q.den, b, AV_ROUND_DOWN); - - return ((x_up > q.num) - (x_down < q.num)) * av_cmp_q(q2, q1); -} - -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list) -{ - int i, nearest_q_idx = 0; - for (i = 0; q_list[i].den; i++) - if (av_nearer_q(q, q_list[i], q_list[nearest_q_idx]) > 0) - nearest_q_idx = i; - - return nearest_q_idx; -} diff --git a/media/libav/libavutil/rational.h b/media/libav/libavutil/rational.h deleted file mode 100644 index 5d7dab7fd..000000000 --- a/media/libav/libavutil/rational.h +++ /dev/null @@ -1,155 +0,0 @@ -/* - * rational numbers - * Copyright (c) 2003 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * rational numbers - * @author Michael Niedermayer <michaelni@gmx.at> - */ - -#ifndef AVUTIL_RATIONAL_H -#define AVUTIL_RATIONAL_H - -#include <stdint.h> -#include <limits.h> -#include "attributes.h" - -/** - * @addtogroup lavu_math - * @{ - */ - -/** - * rational number numerator/denominator - */ -typedef struct AVRational{ - int num; ///< numerator - int den; ///< denominator -} AVRational; - -/** - * Compare two rationals. - * @param a first rational - * @param b second rational - * @return 0 if a==b, 1 if a>b, -1 if a<b, and INT_MIN if one of the - * values is of the form 0/0 - */ -static inline int av_cmp_q(AVRational a, AVRational b){ - const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den; - - if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1; - else if(b.den && a.den) return 0; - else if(a.num && b.num) return (a.num>>31) - (b.num>>31); - else return INT_MIN; -} - -/** - * Convert rational to double. - * @param a rational to convert - * @return (double) a - */ -static inline double av_q2d(AVRational a){ - return a.num / (double) a.den; -} - -/** - * Reduce a fraction. - * This is useful for framerate calculations. - * @param dst_num destination numerator - * @param dst_den destination denominator - * @param num source numerator - * @param den source denominator - * @param max the maximum allowed for dst_num & dst_den - * @return 1 if exact, 0 otherwise - */ -int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max); - -/** - * Multiply two rationals. - * @param b first rational - * @param c second rational - * @return b*c - */ -AVRational av_mul_q(AVRational b, AVRational c) av_const; - -/** - * Divide one rational by another. - * @param b first rational - * @param c second rational - * @return b/c - */ -AVRational av_div_q(AVRational b, AVRational c) av_const; - -/** - * Add two rationals. - * @param b first rational - * @param c second rational - * @return b+c - */ -AVRational av_add_q(AVRational b, AVRational c) av_const; - -/** - * Subtract one rational from another. - * @param b first rational - * @param c second rational - * @return b-c - */ -AVRational av_sub_q(AVRational b, AVRational c) av_const; - -/** - * Invert a rational. - * @param q value - * @return 1 / q - */ -static av_always_inline AVRational av_inv_q(AVRational q) -{ - AVRational r = { q.den, q.num }; - return r; -} - -/** - * Convert a double precision floating point number to a rational. - * inf is expressed as {1,0} or {-1,0} depending on the sign. - * - * @param d double to convert - * @param max the maximum allowed numerator and denominator - * @return (AVRational) d - */ -AVRational av_d2q(double d, int max) av_const; - -/** - * @return 1 if q1 is nearer to q than q2, -1 if q2 is nearer - * than q1, 0 if they have the same distance. - */ -int av_nearer_q(AVRational q, AVRational q1, AVRational q2); - -/** - * Find the nearest value in q_list to q. - * @param q_list an array of rationals terminated by {0, 0} - * @return the index of the nearest value found in the array - */ -int av_find_nearest_q_idx(AVRational q, const AVRational* q_list); - -/** - * @} - */ - -#endif /* AVUTIL_RATIONAL_H */ diff --git a/media/libav/libavutil/sha.c b/media/libav/libavutil/sha.c deleted file mode 100644 index 2d9b58cda..000000000 --- a/media/libav/libavutil/sha.c +++ /dev/null @@ -1,387 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at> - * Copyright (C) 2009 Konstantin Shishkov - * based on public domain SHA-1 code by Steve Reid <steve@edmweb.com> - * and on BSD-licensed SHA-2 code by Aaron D. Gifford - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <string.h> - -#include "attributes.h" -#include "avutil.h" -#include "bswap.h" -#include "sha.h" -#include "intreadwrite.h" -#include "mem.h" - -/** hash context */ -typedef struct AVSHA { - uint8_t digest_len; ///< digest length in 32-bit words - uint64_t count; ///< number of bytes in buffer - uint8_t buffer[64]; ///< 512-bit buffer of input values used in hash updating - uint32_t state[8]; ///< current hash value - /** function used to update hash for 512-bit input block */ - void (*transform)(uint32_t *state, const uint8_t buffer[64]); -} AVSHA; - -#if FF_API_CONTEXT_SIZE -const int av_sha_size = sizeof(AVSHA); -#endif - -struct AVSHA *av_sha_alloc(void) -{ - return av_mallocz(sizeof(struct AVSHA)); -} - -#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits)))) - -/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */ -#define blk0(i) (block[i] = AV_RB32(buffer + 4 * (i))) -#define blk(i) (block[i] = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1)) - -#define R0(v,w,x,y,z,i) z += ((w&(x^y))^y) + blk0(i) + 0x5A827999 + rol(v, 5); w = rol(w, 30); -#define R1(v,w,x,y,z,i) z += ((w&(x^y))^y) + blk (i) + 0x5A827999 + rol(v, 5); w = rol(w, 30); -#define R2(v,w,x,y,z,i) z += ( w^x ^y) + blk (i) + 0x6ED9EBA1 + rol(v, 5); w = rol(w, 30); -#define R3(v,w,x,y,z,i) z += (((w|x)&y)|(w&x)) + blk (i) + 0x8F1BBCDC + rol(v, 5); w = rol(w, 30); -#define R4(v,w,x,y,z,i) z += ( w^x ^y) + blk (i) + 0xCA62C1D6 + rol(v, 5); w = rol(w, 30); - -/* Hash a single 512-bit block. This is the core of the algorithm. */ - -static void sha1_transform(uint32_t state[5], const uint8_t buffer[64]) -{ - uint32_t block[80]; - unsigned int i, a, b, c, d, e; - - a = state[0]; - b = state[1]; - c = state[2]; - d = state[3]; - e = state[4]; -#if CONFIG_SMALL - for (i = 0; i < 80; i++) { - int t; - if (i < 16) - t = AV_RB32(buffer + 4 * i); - else - t = rol(block[i-3] ^ block[i-8] ^ block[i-14] ^ block[i-16], 1); - block[i] = t; - t += e + rol(a, 5); - if (i < 40) { - if (i < 20) - t += ((b&(c^d))^d) + 0x5A827999; - else - t += ( b^c ^d) + 0x6ED9EBA1; - } else { - if (i < 60) - t += (((b|c)&d)|(b&c)) + 0x8F1BBCDC; - else - t += ( b^c ^d) + 0xCA62C1D6; - } - e = d; - d = c; - c = rol(b, 30); - b = a; - a = t; - } -#else - for (i = 0; i < 15; i += 5) { - R0(a, b, c, d, e, 0 + i); - R0(e, a, b, c, d, 1 + i); - R0(d, e, a, b, c, 2 + i); - R0(c, d, e, a, b, 3 + i); - R0(b, c, d, e, a, 4 + i); - } - R0(a, b, c, d, e, 15); - R1(e, a, b, c, d, 16); - R1(d, e, a, b, c, 17); - R1(c, d, e, a, b, 18); - R1(b, c, d, e, a, 19); - for (i = 20; i < 40; i += 5) { - R2(a, b, c, d, e, 0 + i); - R2(e, a, b, c, d, 1 + i); - R2(d, e, a, b, c, 2 + i); - R2(c, d, e, a, b, 3 + i); - R2(b, c, d, e, a, 4 + i); - } - for (; i < 60; i += 5) { - R3(a, b, c, d, e, 0 + i); - R3(e, a, b, c, d, 1 + i); - R3(d, e, a, b, c, 2 + i); - R3(c, d, e, a, b, 3 + i); - R3(b, c, d, e, a, 4 + i); - } - for (; i < 80; i += 5) { - R4(a, b, c, d, e, 0 + i); - R4(e, a, b, c, d, 1 + i); - R4(d, e, a, b, c, 2 + i); - R4(c, d, e, a, b, 3 + i); - R4(b, c, d, e, a, 4 + i); - } -#endif - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - state[4] += e; -} - -static const uint32_t K256[64] = { - 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, - 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, - 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, - 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, - 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, - 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, - 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, - 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, - 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, - 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, - 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, - 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, - 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, - 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, - 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, - 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2 -}; - - -#define Ch(x,y,z) (((x) & ((y) ^ (z))) ^ (z)) -#define Maj(x,y,z) ((((x) | (y)) & (z)) | ((x) & (y))) - -#define Sigma0_256(x) (rol((x), 30) ^ rol((x), 19) ^ rol((x), 10)) -#define Sigma1_256(x) (rol((x), 26) ^ rol((x), 21) ^ rol((x), 7)) -#define sigma0_256(x) (rol((x), 25) ^ rol((x), 14) ^ ((x) >> 3)) -#define sigma1_256(x) (rol((x), 15) ^ rol((x), 13) ^ ((x) >> 10)) - -#undef blk -#define blk(i) (block[i] = block[i - 16] + sigma0_256(block[i - 15]) + \ - sigma1_256(block[i - 2]) + block[i - 7]) - -#define ROUND256(a,b,c,d,e,f,g,h) \ - T1 += (h) + Sigma1_256(e) + Ch((e), (f), (g)) + K256[i]; \ - (d) += T1; \ - (h) = T1 + Sigma0_256(a) + Maj((a), (b), (c)); \ - i++ - -#define ROUND256_0_TO_15(a,b,c,d,e,f,g,h) \ - T1 = blk0(i); \ - ROUND256(a,b,c,d,e,f,g,h) - -#define ROUND256_16_TO_63(a,b,c,d,e,f,g,h) \ - T1 = blk(i); \ - ROUND256(a,b,c,d,e,f,g,h) - -static void sha256_transform(uint32_t *state, const uint8_t buffer[64]) -{ - unsigned int i, a, b, c, d, e, f, g, h; - uint32_t block[64]; - uint32_t T1; - - a = state[0]; - b = state[1]; - c = state[2]; - d = state[3]; - e = state[4]; - f = state[5]; - g = state[6]; - h = state[7]; -#if CONFIG_SMALL - for (i = 0; i < 64; i++) { - uint32_t T2; - if (i < 16) - T1 = blk0(i); - else - T1 = blk(i); - T1 += h + Sigma1_256(e) + Ch(e, f, g) + K256[i]; - T2 = Sigma0_256(a) + Maj(a, b, c); - h = g; - g = f; - f = e; - e = d + T1; - d = c; - c = b; - b = a; - a = T1 + T2; - } -#else - for (i = 0; i < 16;) { - ROUND256_0_TO_15(a, b, c, d, e, f, g, h); - ROUND256_0_TO_15(h, a, b, c, d, e, f, g); - ROUND256_0_TO_15(g, h, a, b, c, d, e, f); - ROUND256_0_TO_15(f, g, h, a, b, c, d, e); - ROUND256_0_TO_15(e, f, g, h, a, b, c, d); - ROUND256_0_TO_15(d, e, f, g, h, a, b, c); - ROUND256_0_TO_15(c, d, e, f, g, h, a, b); - ROUND256_0_TO_15(b, c, d, e, f, g, h, a); - } - - for (; i < 64;) { - ROUND256_16_TO_63(a, b, c, d, e, f, g, h); - ROUND256_16_TO_63(h, a, b, c, d, e, f, g); - ROUND256_16_TO_63(g, h, a, b, c, d, e, f); - ROUND256_16_TO_63(f, g, h, a, b, c, d, e); - ROUND256_16_TO_63(e, f, g, h, a, b, c, d); - ROUND256_16_TO_63(d, e, f, g, h, a, b, c); - ROUND256_16_TO_63(c, d, e, f, g, h, a, b); - ROUND256_16_TO_63(b, c, d, e, f, g, h, a); - } -#endif - state[0] += a; - state[1] += b; - state[2] += c; - state[3] += d; - state[4] += e; - state[5] += f; - state[6] += g; - state[7] += h; -} - - -av_cold int av_sha_init(AVSHA *ctx, int bits) -{ - ctx->digest_len = bits >> 5; - switch (bits) { - case 160: // SHA-1 - ctx->state[0] = 0x67452301; - ctx->state[1] = 0xEFCDAB89; - ctx->state[2] = 0x98BADCFE; - ctx->state[3] = 0x10325476; - ctx->state[4] = 0xC3D2E1F0; - ctx->transform = sha1_transform; - break; - case 224: // SHA-224 - ctx->state[0] = 0xC1059ED8; - ctx->state[1] = 0x367CD507; - ctx->state[2] = 0x3070DD17; - ctx->state[3] = 0xF70E5939; - ctx->state[4] = 0xFFC00B31; - ctx->state[5] = 0x68581511; - ctx->state[6] = 0x64F98FA7; - ctx->state[7] = 0xBEFA4FA4; - ctx->transform = sha256_transform; - break; - case 256: // SHA-256 - ctx->state[0] = 0x6A09E667; - ctx->state[1] = 0xBB67AE85; - ctx->state[2] = 0x3C6EF372; - ctx->state[3] = 0xA54FF53A; - ctx->state[4] = 0x510E527F; - ctx->state[5] = 0x9B05688C; - ctx->state[6] = 0x1F83D9AB; - ctx->state[7] = 0x5BE0CD19; - ctx->transform = sha256_transform; - break; - default: - return -1; - } - ctx->count = 0; - return 0; -} - -void av_sha_update(AVSHA* ctx, const uint8_t* data, unsigned int len) -{ - unsigned int i, j; - - j = ctx->count & 63; - ctx->count += len; -#if CONFIG_SMALL - for (i = 0; i < len; i++) { - ctx->buffer[j++] = data[i]; - if (64 == j) { - ctx->transform(ctx->state, ctx->buffer); - j = 0; - } - } -#else - if ((j + len) > 63) { - memcpy(&ctx->buffer[j], data, (i = 64 - j)); - ctx->transform(ctx->state, ctx->buffer); - for (; i + 63 < len; i += 64) - ctx->transform(ctx->state, &data[i]); - j = 0; - } else - i = 0; - memcpy(&ctx->buffer[j], &data[i], len - i); -#endif -} - -void av_sha_final(AVSHA* ctx, uint8_t *digest) -{ - int i; - uint64_t finalcount = av_be2ne64(ctx->count << 3); - - av_sha_update(ctx, "\200", 1); - while ((ctx->count & 63) != 56) - av_sha_update(ctx, "", 1); - av_sha_update(ctx, (uint8_t *)&finalcount, 8); /* Should cause a transform() */ - for (i = 0; i < ctx->digest_len; i++) - AV_WB32(digest + i*4, ctx->state[i]); -} - -#ifdef TEST -#include <stdio.h> - -int main(void) -{ - int i, j, k; - AVSHA ctx; - unsigned char digest[32]; - const int lengths[3] = { 160, 224, 256 }; - - for (j = 0; j < 3; j++) { - printf("Testing SHA-%d\n", lengths[j]); - for (k = 0; k < 3; k++) { - av_sha_init(&ctx, lengths[j]); - if (k == 0) - av_sha_update(&ctx, "abc", 3); - else if (k == 1) - av_sha_update(&ctx, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", 56); - else - for (i = 0; i < 1000*1000; i++) - av_sha_update(&ctx, "a", 1); - av_sha_final(&ctx, digest); - for (i = 0; i < lengths[j] >> 3; i++) - printf("%02X", digest[i]); - putchar('\n'); - } - switch (j) { - case 0: - //test vectors (from FIPS PUB 180-1) - printf("A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D\n" - "84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1\n" - "34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F\n"); - break; - case 1: - //test vectors (from FIPS PUB 180-2 Appendix A) - printf("23097d22 3405d822 8642a477 bda255b3 2aadbce4 bda0b3f7 e36c9da7\n" - "75388b16 512776cc 5dba5da1 fd890150 b0c6455c b4f58b19 52522525\n" - "20794655 980c91d8 bbb4c1ea 97618a4b f03f4258 1948b2ee 4ee7ad67\n"); - break; - case 2: - //test vectors (from FIPS PUB 180-2) - printf("ba7816bf 8f01cfea 414140de 5dae2223 b00361a3 96177a9c b410ff61 f20015ad\n" - "248d6a61 d20638b8 e5c02693 0c3e6039 a33ce459 64ff2167 f6ecedd4 19db06c1\n" - "cdc76e5c 9914fb92 81a1c7e2 84d73e67 f1809a48 a497200e 046d39cc c7112cd0\n"); - break; - } - } - - return 0; -} -#endif diff --git a/media/libav/libavutil/sha.h b/media/libav/libavutil/sha.h deleted file mode 100644 index 4c9a0c909..000000000 --- a/media/libav/libavutil/sha.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Copyright (C) 2007 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_SHA_H -#define AVUTIL_SHA_H - -#include <stdint.h> - -#include "attributes.h" -#include "version.h" - -/** - * @defgroup lavu_sha SHA - * @ingroup lavu_crypto - * @{ - */ - -#if FF_API_CONTEXT_SIZE -extern attribute_deprecated const int av_sha_size; -#endif - -struct AVSHA; - -/** - * Allocate an AVSHA context. - */ -struct AVSHA *av_sha_alloc(void); - -/** - * Initialize SHA-1 or SHA-2 hashing. - * - * @param context pointer to the function context (of size av_sha_size) - * @param bits number of bits in digest (SHA-1 - 160 bits, SHA-2 224 or 256 bits) - * @return zero if initialization succeeded, -1 otherwise - */ -int av_sha_init(struct AVSHA* context, int bits); - -/** - * Update hash value. - * - * @param context hash function context - * @param data input data to update hash with - * @param len input data length - */ -void av_sha_update(struct AVSHA* context, const uint8_t* data, unsigned int len); - -/** - * Finish hashing and output digest value. - * - * @param context hash function context - * @param digest buffer where output digest value is stored - */ -void av_sha_final(struct AVSHA* context, uint8_t *digest); - -/** - * @} - */ - -#endif /* AVUTIL_SHA_H */ diff --git a/media/libav/libavutil/timer.h b/media/libav/libavutil/timer.h deleted file mode 100644 index 0d93d7c0e..000000000 --- a/media/libav/libavutil/timer.h +++ /dev/null @@ -1,88 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * high precision timer, useful to profile code - */ - -#ifndef AVUTIL_TIMER_H -#define AVUTIL_TIMER_H - -#include <stdlib.h> -#include <stdint.h> -#include <inttypes.h> - -#include "config.h" - -#if HAVE_MACH_MACH_TIME_H -#include <mach/mach_time.h> -#endif - -#include "log.h" - -#if ARCH_ARM -# include "arm/timer.h" -#elif ARCH_BFIN -# include "bfin/timer.h" -#elif ARCH_PPC -# include "ppc/timer.h" -#elif ARCH_X86 -# include "x86/timer.h" -#endif - -#if !defined(AV_READ_TIME) -# if HAVE_GETHRTIME -# define AV_READ_TIME gethrtime -# elif HAVE_MACH_ABSOLUTE_TIME -# define AV_READ_TIME mach_absolute_time -# endif -#endif - -#ifdef AV_READ_TIME -#define START_TIMER \ - uint64_t tend; \ - uint64_t tstart = AV_READ_TIME(); \ - -#define STOP_TIMER(id) \ - tend = AV_READ_TIME(); \ - { \ - static uint64_t tsum = 0; \ - static int tcount = 0; \ - static int tskip_count = 0; \ - if (tcount < 2 || \ - tend - tstart < 8 * tsum / tcount || \ - tend - tstart < 2000) { \ - tsum+= tend - tstart; \ - tcount++; \ - } else \ - tskip_count++; \ - if (((tcount + tskip_count) & (tcount + tskip_count - 1)) == 0) { \ - av_log(NULL, AV_LOG_ERROR, \ - "%"PRIu64" UNITS in %s, %d runs, %d skips\n", \ - tsum * 10 / tcount, id, tcount, tskip_count); \ - } \ - } -#else -#define START_TIMER -#define STOP_TIMER(id) { } -#endif - -#endif /* AVUTIL_TIMER_H */ diff --git a/media/libav/libavutil/version.h b/media/libav/libavutil/version.h deleted file mode 100644 index c22d0c5f4..000000000 --- a/media/libav/libavutil/version.h +++ /dev/null @@ -1,120 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_VERSION_H -#define AVUTIL_VERSION_H - -#include "macros.h" - -/** - * @defgroup version_utils Library Version Macros - * - * Useful to check and match library version in order to maintain - * backward compatibility. - * - * @{ - */ - -#define AV_VERSION_INT(a, b, c) (a<<16 | b<<8 | c) -#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c -#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c) - -/** - * @} - */ - -/** - * @file - * @ingroup lavu - * Libavutil version macros - */ - -/** - * @defgroup lavu_ver Version and Build diagnostics - * - * Macros and function useful to check at compiletime and at runtime - * which version of libavutil is in use. - * - * @{ - */ - -#define LIBAVUTIL_VERSION_MAJOR 54 -#define LIBAVUTIL_VERSION_MINOR 3 -#define LIBAVUTIL_VERSION_MICRO 0 - -#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \ - LIBAVUTIL_VERSION_MINOR, \ - LIBAVUTIL_VERSION_MICRO) -#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT - -#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION) - -/** - * @} - * - * @defgroup depr_guards Deprecation guards - * FF_API_* defines may be placed below to indicate public API that will be - * dropped at a future version bump. The defines themselves are not part of - * the public API and may change, break or disappear at any time. - * - * @{ - */ - -#ifndef FF_API_PIX_FMT -#define FF_API_PIX_FMT (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_CONTEXT_SIZE -#define FF_API_CONTEXT_SIZE (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_PIX_FMT_DESC -#define FF_API_PIX_FMT_DESC (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AV_REVERSE -#define FF_API_AV_REVERSE (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AUDIOCONVERT -#define FF_API_AUDIOCONVERT (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_CPU_FLAG_MMX2 -#define FF_API_CPU_FLAG_MMX2 (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_LLS_PRIVATE -#define FF_API_LLS_PRIVATE (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_AVFRAME_LAVC -#define FF_API_AVFRAME_LAVC (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_VDPAU -#define FF_API_VDPAU (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_XVMC -#define FF_API_XVMC (LIBAVUTIL_VERSION_MAJOR < 55) -#endif -#ifndef FF_API_OPT_TYPE_METADATA -#define FF_API_OPT_TYPE_METADATA (LIBAVUTIL_VERSION_MAJOR < 55) -#endif - - -/** - * @} - */ - -#endif /* AVUTIL_VERSION_H */ diff --git a/media/libav/libavutil/x86/asm.h b/media/libav/libavutil/x86/asm.h deleted file mode 100644 index e30f5dbaf..000000000 --- a/media/libav/libavutil/x86/asm.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_X86_ASM_H -#define AVUTIL_X86_ASM_H - -#include <stdint.h> -#include "config.h" - -typedef struct xmm_reg { uint64_t a, b; } xmm_reg; - -#if ARCH_X86_64 -# define OPSIZE "q" -# define REG_a "rax" -# define REG_b "rbx" -# define REG_c "rcx" -# define REG_d "rdx" -# define REG_D "rdi" -# define REG_S "rsi" -# define PTR_SIZE "8" -typedef int64_t x86_reg; - -# define REG_SP "rsp" -# define REG_BP "rbp" -# define REGBP rbp -# define REGa rax -# define REGb rbx -# define REGc rcx -# define REGd rdx -# define REGSP rsp - -#elif ARCH_X86_32 - -# define OPSIZE "l" -# define REG_a "eax" -# define REG_b "ebx" -# define REG_c "ecx" -# define REG_d "edx" -# define REG_D "edi" -# define REG_S "esi" -# define PTR_SIZE "4" -typedef int32_t x86_reg; - -# define REG_SP "esp" -# define REG_BP "ebp" -# define REGBP ebp -# define REGa eax -# define REGb ebx -# define REGc ecx -# define REGd edx -# define REGSP esp -#else -typedef int x86_reg; -#endif - -#define HAVE_7REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE && HAVE_EBP_AVAILABLE)) -#define HAVE_6REGS (ARCH_X86_64 || (HAVE_EBX_AVAILABLE || HAVE_EBP_AVAILABLE)) - -#if ARCH_X86_64 && defined(PIC) -# define BROKEN_RELOCATIONS 1 -#endif - -/* - * If gcc is not set to support sse (-msse) it will not accept xmm registers - * in the clobber list for inline asm. XMM_CLOBBERS takes a list of xmm - * registers to be marked as clobbered and evaluates to nothing if they are - * not supported, or to the list itself if they are supported. Since a clobber - * list may not be empty, XMM_CLOBBERS_ONLY should be used if the xmm - * registers are the only in the clobber list. - * For example a list with "eax" and "xmm0" as clobbers should become: - * : XMM_CLOBBERS("xmm0",) "eax" - * and a list with only "xmm0" should become: - * XMM_CLOBBERS_ONLY("xmm0") - */ -#if HAVE_XMM_CLOBBERS -# define XMM_CLOBBERS(...) __VA_ARGS__ -# define XMM_CLOBBERS_ONLY(...) : __VA_ARGS__ -#else -# define XMM_CLOBBERS(...) -# define XMM_CLOBBERS_ONLY(...) -#endif - -/* Use to export labels from asm. */ -#define LABEL_MANGLE(a) EXTERN_PREFIX #a - -// Use rip-relative addressing if compiling PIC code on x86-64. -#if ARCH_X86_64 && defined(PIC) -# define LOCAL_MANGLE(a) #a "(%%rip)" -#else -# define LOCAL_MANGLE(a) #a -#endif - -#define MANGLE(a) EXTERN_PREFIX LOCAL_MANGLE(a) - -#endif /* AVUTIL_X86_ASM_H */ diff --git a/media/libav/libavutil/x86/bswap.h b/media/libav/libavutil/x86/bswap.h deleted file mode 100644 index c73be9af8..000000000 --- a/media/libav/libavutil/x86/bswap.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * byte swapping routines - */ - -#ifndef AVUTIL_X86_BSWAP_H -#define AVUTIL_X86_BSWAP_H - -#include <stdint.h> -#include "config.h" -#include "libavutil/attributes.h" - -#if HAVE_INLINE_ASM - -#if !AV_GCC_VERSION_AT_LEAST(4,1) -#define av_bswap16 av_bswap16 -static av_always_inline av_const unsigned av_bswap16(unsigned x) -{ - __asm__("rorw $8, %w0" : "+r"(x)); - return x; -} -#endif /* !AV_GCC_VERSION_AT_LEAST(4,1) */ - -#if !AV_GCC_VERSION_AT_LEAST(4,5) -#define av_bswap32 av_bswap32 -static av_always_inline av_const uint32_t av_bswap32(uint32_t x) -{ - __asm__("bswap %0" : "+r" (x)); - return x; -} - -#if ARCH_X86_64 -#define av_bswap64 av_bswap64 -static inline uint64_t av_const av_bswap64(uint64_t x) -{ - __asm__("bswap %0": "=r" (x) : "0" (x)); - return x; -} -#endif -#endif /* !AV_GCC_VERSION_AT_LEAST(4,5) */ - -#endif /* HAVE_INLINE_ASM */ -#endif /* AVUTIL_X86_BSWAP_H */ diff --git a/media/libav/libavutil/x86/cpu.c b/media/libav/libavutil/x86/cpu.c deleted file mode 100644 index 8be6d9474..000000000 --- a/media/libav/libavutil/x86/cpu.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * CPU detection code, extracted from mmx.h - * (c)1997-99 by H. Dietz and R. Fisher - * Converted to C and improved by Fabrice Bellard. - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdlib.h> -#include <string.h> - -#include "libavutil/x86/asm.h" -#include "libavutil/x86/cpu.h" -#include "libavutil/cpu.h" -#include "libavutil/cpu_internal.h" - -#if HAVE_YASM - -#define cpuid(index, eax, ebx, ecx, edx) \ - ff_cpu_cpuid(index, &eax, &ebx, &ecx, &edx) - -#define xgetbv(index, eax, edx) \ - ff_cpu_xgetbv(index, &eax, &edx) - -#elif HAVE_INLINE_ASM - -/* ebx saving is necessary for PIC. gcc seems unable to see it alone */ -#define cpuid(index, eax, ebx, ecx, edx) \ - __asm__ volatile ( \ - "mov %%"REG_b", %%"REG_S" \n\t" \ - "cpuid \n\t" \ - "xchg %%"REG_b", %%"REG_S \ - : "=a" (eax), "=S" (ebx), "=c" (ecx), "=d" (edx) \ - : "0" (index)) - -#define xgetbv(index, eax, edx) \ - __asm__ (".byte 0x0f, 0x01, 0xd0" : "=a"(eax), "=d"(edx) : "c" (index)) - -#define get_eflags(x) \ - __asm__ volatile ("pushfl \n" \ - "pop %0 \n" \ - : "=r"(x)) - -#define set_eflags(x) \ - __asm__ volatile ("push %0 \n" \ - "popfl \n" \ - :: "r"(x)) - -#endif /* HAVE_INLINE_ASM */ - -#if ARCH_X86_64 - -#define cpuid_test() 1 - -#elif HAVE_YASM - -#define cpuid_test ff_cpu_cpuid_test - -#elif HAVE_INLINE_ASM - -static int cpuid_test(void) -{ - x86_reg a, c; - - /* Check if CPUID is supported by attempting to toggle the ID bit in - * the EFLAGS register. */ - get_eflags(a); - set_eflags(a ^ 0x200000); - get_eflags(c); - - return a != c; -} -#endif - -/* Function to test if multimedia instructions are supported... */ -int ff_get_cpu_flags_x86(void) -{ - int rval = 0; - -#ifdef cpuid - - int eax, ebx, ecx, edx; - int max_std_level, max_ext_level, std_caps = 0, ext_caps = 0; - int family = 0, model = 0; - union { int i[3]; char c[12]; } vendor; - - if (!cpuid_test()) - return 0; /* CPUID not supported */ - - cpuid(0, max_std_level, vendor.i[0], vendor.i[2], vendor.i[1]); - - if (max_std_level >= 1) { - cpuid(1, eax, ebx, ecx, std_caps); - family = ((eax >> 8) & 0xf) + ((eax >> 20) & 0xff); - model = ((eax >> 4) & 0xf) + ((eax >> 12) & 0xf0); - if (std_caps & (1 << 15)) - rval |= AV_CPU_FLAG_CMOV; - if (std_caps & (1 << 23)) - rval |= AV_CPU_FLAG_MMX; - if (std_caps & (1 << 25)) - rval |= AV_CPU_FLAG_MMXEXT; -#if HAVE_SSE - if (std_caps & (1 << 25)) - rval |= AV_CPU_FLAG_SSE; - if (std_caps & (1 << 26)) - rval |= AV_CPU_FLAG_SSE2; - if (ecx & 1) - rval |= AV_CPU_FLAG_SSE3; - if (ecx & 0x00000200 ) - rval |= AV_CPU_FLAG_SSSE3; - if (ecx & 0x00080000 ) - rval |= AV_CPU_FLAG_SSE4; - if (ecx & 0x00100000 ) - rval |= AV_CPU_FLAG_SSE42; -#if HAVE_AVX - /* Check OXSAVE and AVX bits */ - if ((ecx & 0x18000000) == 0x18000000) { - /* Check for OS support */ - xgetbv(0, eax, edx); - if ((eax & 0x6) == 0x6) { - rval |= AV_CPU_FLAG_AVX; - if (ecx & 0x00001000) - rval |= AV_CPU_FLAG_FMA3; - } - } -#endif /* HAVE_AVX */ -#endif /* HAVE_SSE */ - } - if (max_std_level >= 7) { - cpuid(7, eax, ebx, ecx, edx); -#if HAVE_AVX2 - if (ebx & 0x00000020) - rval |= AV_CPU_FLAG_AVX2; -#endif /* HAVE_AVX2 */ - /* BMI1/2 don't need OS support */ - if (ebx & 0x00000008) { - rval |= AV_CPU_FLAG_BMI1; - if (ebx & 0x00000100) - rval |= AV_CPU_FLAG_BMI2; - } - } - - cpuid(0x80000000, max_ext_level, ebx, ecx, edx); - - if (max_ext_level >= 0x80000001) { - cpuid(0x80000001, eax, ebx, ecx, ext_caps); - if (ext_caps & (1U << 31)) - rval |= AV_CPU_FLAG_3DNOW; - if (ext_caps & (1 << 30)) - rval |= AV_CPU_FLAG_3DNOWEXT; - if (ext_caps & (1 << 23)) - rval |= AV_CPU_FLAG_MMX; - if (ext_caps & (1 << 22)) - rval |= AV_CPU_FLAG_MMXEXT; - - /* Allow for selectively disabling SSE2 functions on AMD processors - with SSE2 support but not SSE4a. This includes Athlon64, some - Opteron, and some Sempron processors. MMX, SSE, or 3DNow! are faster - than SSE2 often enough to utilize this special-case flag. - AV_CPU_FLAG_SSE2 and AV_CPU_FLAG_SSE2SLOW are both set in this case - so that SSE2 is used unless explicitly disabled by checking - AV_CPU_FLAG_SSE2SLOW. */ - if (!strncmp(vendor.c, "AuthenticAMD", 12) && - rval & AV_CPU_FLAG_SSE2 && !(ecx & 0x00000040)) { - rval |= AV_CPU_FLAG_SSE2SLOW; - } - - /* XOP and FMA4 use the AVX instruction coding scheme, so they can't be - * used unless the OS has AVX support. */ - if (rval & AV_CPU_FLAG_AVX) { - if (ecx & 0x00000800) - rval |= AV_CPU_FLAG_XOP; - if (ecx & 0x00010000) - rval |= AV_CPU_FLAG_FMA4; - } - } - - if (!strncmp(vendor.c, "GenuineIntel", 12)) { - if (family == 6 && (model == 9 || model == 13 || model == 14)) { - /* 6/9 (pentium-m "banias"), 6/13 (pentium-m "dothan"), and - * 6/14 (core1 "yonah") theoretically support sse2, but it's - * usually slower than mmx, so let's just pretend they don't. - * AV_CPU_FLAG_SSE2 is disabled and AV_CPU_FLAG_SSE2SLOW is - * enabled so that SSE2 is not used unless explicitly enabled - * by checking AV_CPU_FLAG_SSE2SLOW. The same situation - * applies for AV_CPU_FLAG_SSE3 and AV_CPU_FLAG_SSE3SLOW. */ - if (rval & AV_CPU_FLAG_SSE2) - rval ^= AV_CPU_FLAG_SSE2SLOW | AV_CPU_FLAG_SSE2; - if (rval & AV_CPU_FLAG_SSE3) - rval ^= AV_CPU_FLAG_SSE3SLOW | AV_CPU_FLAG_SSE3; - } - /* The Atom processor has SSSE3 support, which is useful in many cases, - * but sometimes the SSSE3 version is slower than the SSE2 equivalent - * on the Atom, but is generally faster on other processors supporting - * SSSE3. This flag allows for selectively disabling certain SSSE3 - * functions on the Atom. */ - if (family == 6 && model == 28) - rval |= AV_CPU_FLAG_ATOM; - } - -#endif /* cpuid */ - - return rval; -} diff --git a/media/libav/libavutil/x86/cpu.h b/media/libav/libavutil/x86/cpu.h deleted file mode 100644 index 50da30e38..000000000 --- a/media/libav/libavutil/x86/cpu.h +++ /dev/null @@ -1,81 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_X86_CPU_H -#define AVUTIL_X86_CPU_H - -#include "config.h" -#include "libavutil/cpu.h" -#include "libavutil/cpu_internal.h" - -#define AV_CPU_FLAG_AMD3DNOW AV_CPU_FLAG_3DNOW -#define AV_CPU_FLAG_AMD3DNOWEXT AV_CPU_FLAG_3DNOWEXT - -#define X86_AMD3DNOW(flags) CPUEXT(flags, AMD3DNOW) -#define X86_AMD3DNOWEXT(flags) CPUEXT(flags, AMD3DNOWEXT) -#define X86_MMX(flags) CPUEXT(flags, MMX) -#define X86_MMXEXT(flags) CPUEXT(flags, MMXEXT) -#define X86_SSE(flags) CPUEXT(flags, SSE) -#define X86_SSE2(flags) CPUEXT(flags, SSE2) -#define X86_SSE3(flags) CPUEXT(flags, SSE3) -#define X86_SSSE3(flags) CPUEXT(flags, SSSE3) -#define X86_SSE4(flags) CPUEXT(flags, SSE4) -#define X86_SSE42(flags) CPUEXT(flags, SSE42) -#define X86_AVX(flags) CPUEXT(flags, AVX) -#define X86_XOP(flags) CPUEXT(flags, XOP) -#define X86_FMA3(flags) CPUEXT(flags, FMA3) -#define X86_FMA4(flags) CPUEXT(flags, FMA4) -#define X86_AVX2(flags) CPUEXT(flags, AVX2) - -#define EXTERNAL_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOW) -#define EXTERNAL_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AMD3DNOWEXT) -#define EXTERNAL_MMX(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMX) -#define EXTERNAL_MMXEXT(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, MMXEXT) -#define EXTERNAL_SSE(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE) -#define EXTERNAL_SSE2(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE2) -#define EXTERNAL_SSE3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE3) -#define EXTERNAL_SSSE3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSSE3) -#define EXTERNAL_SSE4(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE4) -#define EXTERNAL_SSE42(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, SSE42) -#define EXTERNAL_AVX(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX) -#define EXTERNAL_XOP(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, XOP) -#define EXTERNAL_FMA3(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, FMA3) -#define EXTERNAL_FMA4(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, FMA4) -#define EXTERNAL_AVX2(flags) CPUEXT_SUFFIX(flags, _EXTERNAL, AVX2) - -#define INLINE_AMD3DNOW(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOW) -#define INLINE_AMD3DNOWEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, AMD3DNOWEXT) -#define INLINE_MMX(flags) CPUEXT_SUFFIX(flags, _INLINE, MMX) -#define INLINE_MMXEXT(flags) CPUEXT_SUFFIX(flags, _INLINE, MMXEXT) -#define INLINE_SSE(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE) -#define INLINE_SSE2(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE2) -#define INLINE_SSE3(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE3) -#define INLINE_SSSE3(flags) CPUEXT_SUFFIX(flags, _INLINE, SSSE3) -#define INLINE_SSE4(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE4) -#define INLINE_SSE42(flags) CPUEXT_SUFFIX(flags, _INLINE, SSE42) -#define INLINE_AVX(flags) CPUEXT_SUFFIX(flags, _INLINE, AVX) -#define INLINE_XOP(flags) CPUEXT_SUFFIX(flags, _INLINE, XOP) -#define INLINE_FMA3(flags) CPUEXT_SUFFIX(flags, _INLINE, FMA3) -#define INLINE_FMA4(flags) CPUEXT_SUFFIX(flags, _INLINE, FMA4) -#define INLINE_AVX2(flags) CPUEXT_SUFFIX(flags, _INLINE, AVX2) - -void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx); -void ff_cpu_xgetbv(int op, int *eax, int *edx); -int ff_cpu_cpuid_test(void); - -#endif /* AVUTIL_X86_CPU_H */ diff --git a/media/libav/libavutil/x86/cpuid.asm b/media/libav/libavutil/x86/cpuid.asm deleted file mode 100644 index 1cb8e94ea..000000000 --- a/media/libav/libavutil/x86/cpuid.asm +++ /dev/null @@ -1,91 +0,0 @@ -;***************************************************************************** -;* Copyright (C) 2005-2010 x264 project -;* -;* Authors: Loren Merritt <lorenm@u.washington.edu> -;* Fiona Glaser <fiona@x264.com> -;* -;* This file is part of Libav. -;* -;* Libav is free software; you can redistribute it 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. -;* -;* Libav is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with Libav; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -%include "x86util.asm" - -SECTION .text - -;----------------------------------------------------------------------------- -; void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx) -;----------------------------------------------------------------------------- -cglobal cpu_cpuid, 5,7 - push rbx - push r4 - push r3 - push r2 - push r1 - mov eax, r0d - xor ecx, ecx - cpuid - pop r4 - mov [r4], eax - pop r4 - mov [r4], ebx - pop r4 - mov [r4], ecx - pop r4 - mov [r4], edx - pop rbx - RET - -;----------------------------------------------------------------------------- -; void ff_cpu_xgetbv(int op, int *eax, int *edx) -;----------------------------------------------------------------------------- -cglobal cpu_xgetbv, 3,7 - push r2 - push r1 - mov ecx, r0d - xgetbv - pop r4 - mov [r4], eax - pop r4 - mov [r4], edx - RET - -%if ARCH_X86_64 == 0 -;----------------------------------------------------------------------------- -; int ff_cpu_cpuid_test(void) -; return 0 if unsupported -;----------------------------------------------------------------------------- -cglobal cpu_cpuid_test - pushfd - push ebx - push ebp - push esi - push edi - pushfd - pop eax - mov ebx, eax - xor eax, 0x200000 - push eax - popfd - pushfd - pop eax - xor eax, ebx - pop edi - pop esi - pop ebp - pop ebx - popfd - ret -%endif diff --git a/media/libav/libavutil/x86/cpuid.s b/media/libav/libavutil/x86/cpuid.s deleted file mode 100644 index 1cb8e94ea..000000000 --- a/media/libav/libavutil/x86/cpuid.s +++ /dev/null @@ -1,91 +0,0 @@ -;***************************************************************************** -;* Copyright (C) 2005-2010 x264 project -;* -;* Authors: Loren Merritt <lorenm@u.washington.edu> -;* Fiona Glaser <fiona@x264.com> -;* -;* This file is part of Libav. -;* -;* Libav is free software; you can redistribute it 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. -;* -;* Libav is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with Libav; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -%include "x86util.asm" - -SECTION .text - -;----------------------------------------------------------------------------- -; void ff_cpu_cpuid(int index, int *eax, int *ebx, int *ecx, int *edx) -;----------------------------------------------------------------------------- -cglobal cpu_cpuid, 5,7 - push rbx - push r4 - push r3 - push r2 - push r1 - mov eax, r0d - xor ecx, ecx - cpuid - pop r4 - mov [r4], eax - pop r4 - mov [r4], ebx - pop r4 - mov [r4], ecx - pop r4 - mov [r4], edx - pop rbx - RET - -;----------------------------------------------------------------------------- -; void ff_cpu_xgetbv(int op, int *eax, int *edx) -;----------------------------------------------------------------------------- -cglobal cpu_xgetbv, 3,7 - push r2 - push r1 - mov ecx, r0d - xgetbv - pop r4 - mov [r4], eax - pop r4 - mov [r4], edx - RET - -%if ARCH_X86_64 == 0 -;----------------------------------------------------------------------------- -; int ff_cpu_cpuid_test(void) -; return 0 if unsupported -;----------------------------------------------------------------------------- -cglobal cpu_cpuid_test - pushfd - push ebx - push ebp - push esi - push edi - pushfd - pop eax - mov ebx, eax - xor eax, 0x200000 - push eax - popfd - pushfd - pop eax - xor eax, ebx - pop edi - pop esi - pop ebp - pop ebx - popfd - ret -%endif diff --git a/media/libav/libavutil/x86/emms.asm b/media/libav/libavutil/x86/emms.asm deleted file mode 100644 index a6851acc9..000000000 --- a/media/libav/libavutil/x86/emms.asm +++ /dev/null @@ -1,30 +0,0 @@ -;***************************************************************************** -;* Copyright (C) 2013 Martin Storsjo -;* -;* This file is part of Libav. -;* -;* Libav is free software; you can redistribute it 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. -;* -;* Libav is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with Libav; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -%include "x86util.asm" - -SECTION .text - -;----------------------------------------------------------------------------- -; void avpriv_emms_yasm(void) -;----------------------------------------------------------------------------- -cvisible emms_yasm, 0, 0 - emms - RET diff --git a/media/libav/libavutil/x86/emms.h b/media/libav/libavutil/x86/emms.h deleted file mode 100644 index 2ed9e5d09..000000000 --- a/media/libav/libavutil/x86/emms.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_X86_EMMS_H -#define AVUTIL_X86_EMMS_H - -#include "config.h" -#include "libavutil/attributes.h" - -void avpriv_emms_yasm(void); - -#if HAVE_MMX_INLINE -# define emms_c emms_c -/** - * Empty mmx state. - * this must be called between any dsp function and float/double code. - * for example sin(); dsp->idct_put(); emms_c(); cos() - */ -static av_always_inline void emms_c(void) -{ - __asm__ volatile ("emms" ::: "memory"); -} -#elif HAVE_MMX && HAVE_MM_EMPTY -# include <mmintrin.h> -# define emms_c _mm_empty -#elif HAVE_MMX_EXTERNAL -# define emms_c avpriv_emms_yasm -#endif /* HAVE_MMX_INLINE */ - -#endif /* AVUTIL_X86_EMMS_H */ diff --git a/media/libav/libavutil/x86/intreadwrite.h b/media/libav/libavutil/x86/intreadwrite.h deleted file mode 100644 index 635096e56..000000000 --- a/media/libav/libavutil/x86/intreadwrite.h +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2010 Alexander Strange <astrange@ithinksw.com> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_X86_INTREADWRITE_H -#define AVUTIL_X86_INTREADWRITE_H - -#include <stdint.h> -#include "config.h" -#include "libavutil/attributes.h" - -#if HAVE_MMX - -#if !HAVE_FAST_64BIT && defined(__MMX__) - -#define AV_COPY64 AV_COPY64 -static av_always_inline void AV_COPY64(void *d, const void *s) -{ - __asm__("movq %1, %%mm0 \n\t" - "movq %%mm0, %0 \n\t" - : "=m"(*(uint64_t*)d) - : "m" (*(const uint64_t*)s) - : "mm0"); -} - -#define AV_SWAP64 AV_SWAP64 -static av_always_inline void AV_SWAP64(void *a, void *b) -{ - __asm__("movq %1, %%mm0 \n\t" - "movq %0, %%mm1 \n\t" - "movq %%mm0, %0 \n\t" - "movq %%mm1, %1 \n\t" - : "+m"(*(uint64_t*)a), "+m"(*(uint64_t*)b) - ::"mm0", "mm1"); -} - -#define AV_ZERO64 AV_ZERO64 -static av_always_inline void AV_ZERO64(void *d) -{ - __asm__("pxor %%mm0, %%mm0 \n\t" - "movq %%mm0, %0 \n\t" - : "=m"(*(uint64_t*)d) - :: "mm0"); -} - -#endif /* !HAVE_FAST_64BIT && defined(__MMX__) */ - -#ifdef __SSE__ - -#define AV_COPY128 AV_COPY128 -static av_always_inline void AV_COPY128(void *d, const void *s) -{ - struct v {uint64_t v[2];}; - - __asm__("movaps %1, %%xmm0 \n\t" - "movaps %%xmm0, %0 \n\t" - : "=m"(*(struct v*)d) - : "m" (*(const struct v*)s) - : "xmm0"); -} - -#endif /* __SSE__ */ - -#ifdef __SSE2__ - -#define AV_ZERO128 AV_ZERO128 -static av_always_inline void AV_ZERO128(void *d) -{ - struct v {uint64_t v[2];}; - - __asm__("pxor %%xmm0, %%xmm0 \n\t" - "movdqa %%xmm0, %0 \n\t" - : "=m"(*(struct v*)d) - :: "xmm0"); -} - -#endif /* __SSE2__ */ - -#endif /* HAVE_MMX */ - -#endif /* AVUTIL_X86_INTREADWRITE_H */ diff --git a/media/libav/libavutil/x86/moz.build b/media/libav/libavutil/x86/moz.build deleted file mode 100644 index f4cd3538f..000000000 --- a/media/libav/libavutil/x86/moz.build +++ /dev/null @@ -1,10 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -SOURCES += [ - 'cpu.c', -] - -include('/media/libav/libavcommon.mozbuild') diff --git a/media/libav/libavutil/x86/timer.h b/media/libav/libavutil/x86/timer.h deleted file mode 100644 index cdd67ddbb..000000000 --- a/media/libav/libavutil/x86/timer.h +++ /dev/null @@ -1,44 +0,0 @@ -/* - * copyright (c) 2006 Michael Niedermayer <michaelni@gmx.at> - * - * This file is part of Libav. - * - * Libav is free software; you can redistribute it 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. - * - * Libav is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with Libav; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVUTIL_X86_TIMER_H -#define AVUTIL_X86_TIMER_H - -#include <stdint.h> - -#if HAVE_INLINE_ASM - -#define AV_READ_TIME read_time - -static inline uint64_t read_time(void) -{ - uint32_t a, d; - __asm__ volatile("rdtsc" : "=a" (a), "=d" (d)); - return ((uint64_t)d << 32) + a; -} - -#elif HAVE_RDTSC - -#include <intrin.h> -#define AV_READ_TIME __rdtsc - -#endif /* HAVE_INLINE_ASM */ - -#endif /* AVUTIL_X86_TIMER_H */ diff --git a/media/libav/libavutil/x86/x86inc.asm b/media/libav/libavutil/x86/x86inc.asm deleted file mode 100644 index 2d4d1d3ca..000000000 --- a/media/libav/libavutil/x86/x86inc.asm +++ /dev/null @@ -1,1472 +0,0 @@ -;***************************************************************************** -;* x86inc.asm: x264asm abstraction layer -;***************************************************************************** -;* Copyright (C) 2005-2013 x264 project -;* -;* Authors: Loren Merritt <lorenm@u.washington.edu> -;* Anton Mitrofanov <BugMaster@narod.ru> -;* Fiona Glaser <fiona@x264.com> -;* Henrik Gramner <henrik@gramner.com> -;* -;* Permission to use, copy, modify, and/or distribute this software for any -;* purpose with or without fee is hereby granted, provided that the above -;* copyright notice and this permission notice appear in all copies. -;* -;* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES -;* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF -;* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR -;* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES -;* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN -;* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -;* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -;***************************************************************************** - -; This is a header file for the x264ASM assembly language, which uses -; NASM/YASM syntax combined with a large number of macros to provide easy -; abstraction between different calling conventions (x86_32, win64, linux64). -; It also has various other useful features to simplify writing the kind of -; DSP functions that are most often used in x264. - -; Unlike the rest of x264, this file is available under an ISC license, as it -; has significant usefulness outside of x264 and we want it to be available -; to the largest audience possible. Of course, if you modify it for your own -; purposes to add a new feature, we strongly encourage contributing a patch -; as this feature might be useful for others as well. Send patches or ideas -; to x264-devel@videolan.org . - -%ifndef private_prefix - %define private_prefix x264 -%endif - -%ifndef public_prefix - %define public_prefix private_prefix -%endif - -%define WIN64 0 -%define UNIX64 0 -%if ARCH_X86_64 - %ifidn __OUTPUT_FORMAT__,win32 - %define WIN64 1 - %elifidn __OUTPUT_FORMAT__,win64 - %define WIN64 1 - %elifidn __OUTPUT_FORMAT__,x64 - %define WIN64 1 - %else - %define UNIX64 1 - %endif -%endif - -%ifdef PREFIX - %define mangle(x) _ %+ x -%else - %define mangle(x) x -%endif - -; aout does not support align= -; NOTE: This section is out of sync with x264, in order to -; keep supporting OS/2. -%macro SECTION_RODATA 0-1 16 - %ifidn __OUTPUT_FORMAT__,aout - section .text - %else - SECTION .rodata align=%1 - %endif -%endmacro - -%macro SECTION_TEXT 0-1 16 - %ifidn __OUTPUT_FORMAT__,aout - SECTION .text - %else - SECTION .text align=%1 - %endif -%endmacro - -%if WIN64 - %define PIC -%elif ARCH_X86_64 == 0 -; x86_32 doesn't require PIC. -; Some distros prefer shared objects to be PIC, but nothing breaks if -; the code contains a few textrels, so we'll skip that complexity. - %undef PIC -%endif -%ifdef PIC - default rel -%endif - -%macro CPUNOP 1 - %if HAVE_CPUNOP - CPU %1 - %endif -%endmacro - -; Always use long nops (reduces 0x90 spam in disassembly on x86_32) -CPUNOP amdnop - -; Macros to eliminate most code duplication between x86_32 and x86_64: -; Currently this works only for leaf functions which load all their arguments -; into registers at the start, and make no other use of the stack. Luckily that -; covers most of x264's asm. - -; PROLOGUE: -; %1 = number of arguments. loads them from stack if needed. -; %2 = number of registers used. pushes callee-saved regs if needed. -; %3 = number of xmm registers used. pushes callee-saved xmm regs if needed. -; %4 = (optional) stack size to be allocated. If not aligned (x86-32 ICC 10.x, -; MSVC or YMM), the stack will be manually aligned (to 16 or 32 bytes), -; and an extra register will be allocated to hold the original stack -; pointer (to not invalidate r0m etc.). To prevent the use of an extra -; register as stack pointer, request a negative stack size. -; %4+/%5+ = list of names to define to registers -; PROLOGUE can also be invoked by adding the same options to cglobal - -; e.g. -; cglobal foo, 2,3,0, dst, src, tmp -; declares a function (foo), taking two args (dst and src) and one local variable (tmp) - -; TODO Some functions can use some args directly from the stack. If they're the -; last args then you can just not declare them, but if they're in the middle -; we need more flexible macro. - -; RET: -; Pops anything that was pushed by PROLOGUE, and returns. - -; REP_RET: -; Use this instead of RET if it's a branch target. - -; registers: -; rN and rNq are the native-size register holding function argument N -; rNd, rNw, rNb are dword, word, and byte size -; rNh is the high 8 bits of the word size -; rNm is the original location of arg N (a register or on the stack), dword -; rNmp is native size - -%macro DECLARE_REG 2-3 - %define r%1q %2 - %define r%1d %2d - %define r%1w %2w - %define r%1b %2b - %define r%1h %2h - %define %2q %2 - %if %0 == 2 - %define r%1m %2d - %define r%1mp %2 - %elif ARCH_X86_64 ; memory - %define r%1m [rstk + stack_offset + %3] - %define r%1mp qword r %+ %1 %+ m - %else - %define r%1m [rstk + stack_offset + %3] - %define r%1mp dword r %+ %1 %+ m - %endif - %define r%1 %2 -%endmacro - -%macro DECLARE_REG_SIZE 3 - %define r%1q r%1 - %define e%1q r%1 - %define r%1d e%1 - %define e%1d e%1 - %define r%1w %1 - %define e%1w %1 - %define r%1h %3 - %define e%1h %3 - %define r%1b %2 - %define e%1b %2 -%if ARCH_X86_64 == 0 - %define r%1 e%1 -%endif -%endmacro - -DECLARE_REG_SIZE ax, al, ah -DECLARE_REG_SIZE bx, bl, bh -DECLARE_REG_SIZE cx, cl, ch -DECLARE_REG_SIZE dx, dl, dh -DECLARE_REG_SIZE si, sil, null -DECLARE_REG_SIZE di, dil, null -DECLARE_REG_SIZE bp, bpl, null - -; t# defines for when per-arch register allocation is more complex than just function arguments - -%macro DECLARE_REG_TMP 1-* - %assign %%i 0 - %rep %0 - CAT_XDEFINE t, %%i, r%1 - %assign %%i %%i+1 - %rotate 1 - %endrep -%endmacro - -%macro DECLARE_REG_TMP_SIZE 0-* - %rep %0 - %define t%1q t%1 %+ q - %define t%1d t%1 %+ d - %define t%1w t%1 %+ w - %define t%1h t%1 %+ h - %define t%1b t%1 %+ b - %rotate 1 - %endrep -%endmacro - -DECLARE_REG_TMP_SIZE 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14 - -%if ARCH_X86_64 - %define gprsize 8 -%else - %define gprsize 4 -%endif - -%macro PUSH 1 - push %1 - %ifidn rstk, rsp - %assign stack_offset stack_offset+gprsize - %endif -%endmacro - -%macro POP 1 - pop %1 - %ifidn rstk, rsp - %assign stack_offset stack_offset-gprsize - %endif -%endmacro - -%macro PUSH_IF_USED 1-* - %rep %0 - %if %1 < regs_used - PUSH r%1 - %endif - %rotate 1 - %endrep -%endmacro - -%macro POP_IF_USED 1-* - %rep %0 - %if %1 < regs_used - pop r%1 - %endif - %rotate 1 - %endrep -%endmacro - -%macro LOAD_IF_USED 1-* - %rep %0 - %if %1 < num_args - mov r%1, r %+ %1 %+ mp - %endif - %rotate 1 - %endrep -%endmacro - -%macro SUB 2 - sub %1, %2 - %ifidn %1, rstk - %assign stack_offset stack_offset+(%2) - %endif -%endmacro - -%macro ADD 2 - add %1, %2 - %ifidn %1, rstk - %assign stack_offset stack_offset-(%2) - %endif -%endmacro - -%macro movifnidn 2 - %ifnidn %1, %2 - mov %1, %2 - %endif -%endmacro - -%macro movsxdifnidn 2 - %ifnidn %1, %2 - movsxd %1, %2 - %endif -%endmacro - -%macro ASSERT 1 - %if (%1) == 0 - %error assert failed - %endif -%endmacro - -%macro DEFINE_ARGS 0-* - %ifdef n_arg_names - %assign %%i 0 - %rep n_arg_names - CAT_UNDEF arg_name %+ %%i, q - CAT_UNDEF arg_name %+ %%i, d - CAT_UNDEF arg_name %+ %%i, w - CAT_UNDEF arg_name %+ %%i, h - CAT_UNDEF arg_name %+ %%i, b - CAT_UNDEF arg_name %+ %%i, m - CAT_UNDEF arg_name %+ %%i, mp - CAT_UNDEF arg_name, %%i - %assign %%i %%i+1 - %endrep - %endif - - %xdefine %%stack_offset stack_offset - %undef stack_offset ; so that the current value of stack_offset doesn't get baked in by xdefine - %assign %%i 0 - %rep %0 - %xdefine %1q r %+ %%i %+ q - %xdefine %1d r %+ %%i %+ d - %xdefine %1w r %+ %%i %+ w - %xdefine %1h r %+ %%i %+ h - %xdefine %1b r %+ %%i %+ b - %xdefine %1m r %+ %%i %+ m - %xdefine %1mp r %+ %%i %+ mp - CAT_XDEFINE arg_name, %%i, %1 - %assign %%i %%i+1 - %rotate 1 - %endrep - %xdefine stack_offset %%stack_offset - %assign n_arg_names %0 -%endmacro - -%macro ALLOC_STACK 1-2 0 ; stack_size, n_xmm_regs (for win64 only) - %ifnum %1 - %if %1 != 0 - %assign %%stack_alignment ((mmsize + 15) & ~15) - %assign stack_size %1 - %if stack_size < 0 - %assign stack_size -stack_size - %endif - %assign stack_size_padded stack_size - %if WIN64 - %assign stack_size_padded stack_size_padded + 32 ; reserve 32 bytes for shadow space - %if mmsize != 8 - %assign xmm_regs_used %2 - %if xmm_regs_used > 8 - %assign stack_size_padded stack_size_padded + (xmm_regs_used-8)*16 - %endif - %endif - %endif - %if mmsize <= 16 && HAVE_ALIGNED_STACK - %assign stack_size_padded stack_size_padded + %%stack_alignment - gprsize - (stack_offset & (%%stack_alignment - 1)) - SUB rsp, stack_size_padded - %else - %assign %%reg_num (regs_used - 1) - %xdefine rstk r %+ %%reg_num - ; align stack, and save original stack location directly above - ; it, i.e. in [rsp+stack_size_padded], so we can restore the - ; stack in a single instruction (i.e. mov rsp, rstk or mov - ; rsp, [rsp+stack_size_padded]) - mov rstk, rsp - %if %1 < 0 ; need to store rsp on stack - sub rsp, gprsize+stack_size_padded - and rsp, ~(%%stack_alignment-1) - %xdefine rstkm [rsp+stack_size_padded] - mov rstkm, rstk - %else ; can keep rsp in rstk during whole function - sub rsp, stack_size_padded - and rsp, ~(%%stack_alignment-1) - %xdefine rstkm rstk - %endif - %endif - WIN64_PUSH_XMM - %endif - %endif -%endmacro - -%macro SETUP_STACK_POINTER 1 - %ifnum %1 - %if %1 != 0 && (HAVE_ALIGNED_STACK == 0 || mmsize == 32) - %if %1 > 0 - %assign regs_used (regs_used + 1) - %elif ARCH_X86_64 && regs_used == num_args && num_args <= 4 + UNIX64 * 2 - %warning "Stack pointer will overwrite register argument" - %endif - %endif - %endif -%endmacro - -%macro DEFINE_ARGS_INTERNAL 3+ - %ifnum %2 - DEFINE_ARGS %3 - %elif %1 == 4 - DEFINE_ARGS %2 - %elif %1 > 4 - DEFINE_ARGS %2, %3 - %endif -%endmacro - -%if WIN64 ; Windows x64 ;================================================= - -DECLARE_REG 0, rcx -DECLARE_REG 1, rdx -DECLARE_REG 2, R8 -DECLARE_REG 3, R9 -DECLARE_REG 4, R10, 40 -DECLARE_REG 5, R11, 48 -DECLARE_REG 6, rax, 56 -DECLARE_REG 7, rdi, 64 -DECLARE_REG 8, rsi, 72 -DECLARE_REG 9, rbx, 80 -DECLARE_REG 10, rbp, 88 -DECLARE_REG 11, R12, 96 -DECLARE_REG 12, R13, 104 -DECLARE_REG 13, R14, 112 -DECLARE_REG 14, R15, 120 - -%macro PROLOGUE 2-5+ 0 ; #args, #regs, #xmm_regs, [stack_size,] arg_names... - %assign num_args %1 - %assign regs_used %2 - ASSERT regs_used >= num_args - SETUP_STACK_POINTER %4 - ASSERT regs_used <= 15 - PUSH_IF_USED 7, 8, 9, 10, 11, 12, 13, 14 - ALLOC_STACK %4, %3 - %if mmsize != 8 && stack_size == 0 - WIN64_SPILL_XMM %3 - %endif - LOAD_IF_USED 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 - DEFINE_ARGS_INTERNAL %0, %4, %5 -%endmacro - -%macro WIN64_PUSH_XMM 0 - ; Use the shadow space to store XMM6 and XMM7, the rest needs stack space allocated. - %if xmm_regs_used > 6 - movaps [rstk + stack_offset + 8], xmm6 - %endif - %if xmm_regs_used > 7 - movaps [rstk + stack_offset + 24], xmm7 - %endif - %if xmm_regs_used > 8 - %assign %%i 8 - %rep xmm_regs_used-8 - movaps [rsp + (%%i-8)*16 + stack_size + 32], xmm %+ %%i - %assign %%i %%i+1 - %endrep - %endif -%endmacro - -%macro WIN64_SPILL_XMM 1 - %assign xmm_regs_used %1 - ASSERT xmm_regs_used <= 16 - %if xmm_regs_used > 8 - %assign stack_size_padded (xmm_regs_used-8)*16 + (~stack_offset&8) + 32 - SUB rsp, stack_size_padded - %endif - WIN64_PUSH_XMM -%endmacro - -%macro WIN64_RESTORE_XMM_INTERNAL 1 - %assign %%pad_size 0 - %if xmm_regs_used > 8 - %assign %%i xmm_regs_used - %rep xmm_regs_used-8 - %assign %%i %%i-1 - movaps xmm %+ %%i, [%1 + (%%i-8)*16 + stack_size + 32] - %endrep - %endif - %if stack_size_padded > 0 - %if stack_size > 0 && (mmsize == 32 || HAVE_ALIGNED_STACK == 0) - mov rsp, rstkm - %else - add %1, stack_size_padded - %assign %%pad_size stack_size_padded - %endif - %endif - %if xmm_regs_used > 7 - movaps xmm7, [%1 + stack_offset - %%pad_size + 24] - %endif - %if xmm_regs_used > 6 - movaps xmm6, [%1 + stack_offset - %%pad_size + 8] - %endif -%endmacro - -%macro WIN64_RESTORE_XMM 1 - WIN64_RESTORE_XMM_INTERNAL %1 - %assign stack_offset (stack_offset-stack_size_padded) - %assign xmm_regs_used 0 -%endmacro - -%define has_epilogue regs_used > 7 || xmm_regs_used > 6 || mmsize == 32 || stack_size > 0 - -%macro RET 0 - WIN64_RESTORE_XMM_INTERNAL rsp - POP_IF_USED 14, 13, 12, 11, 10, 9, 8, 7 -%if mmsize == 32 - vzeroupper -%endif - AUTO_REP_RET -%endmacro - -%elif ARCH_X86_64 ; *nix x64 ;============================================= - -DECLARE_REG 0, rdi -DECLARE_REG 1, rsi -DECLARE_REG 2, rdx -DECLARE_REG 3, rcx -DECLARE_REG 4, R8 -DECLARE_REG 5, R9 -DECLARE_REG 6, rax, 8 -DECLARE_REG 7, R10, 16 -DECLARE_REG 8, R11, 24 -DECLARE_REG 9, rbx, 32 -DECLARE_REG 10, rbp, 40 -DECLARE_REG 11, R12, 48 -DECLARE_REG 12, R13, 56 -DECLARE_REG 13, R14, 64 -DECLARE_REG 14, R15, 72 - -%macro PROLOGUE 2-5+ ; #args, #regs, #xmm_regs, [stack_size,] arg_names... - %assign num_args %1 - %assign regs_used %2 - ASSERT regs_used >= num_args - SETUP_STACK_POINTER %4 - ASSERT regs_used <= 15 - PUSH_IF_USED 9, 10, 11, 12, 13, 14 - ALLOC_STACK %4 - LOAD_IF_USED 6, 7, 8, 9, 10, 11, 12, 13, 14 - DEFINE_ARGS_INTERNAL %0, %4, %5 -%endmacro - -%define has_epilogue regs_used > 9 || mmsize == 32 || stack_size > 0 - -%macro RET 0 -%if stack_size_padded > 0 -%if mmsize == 32 || HAVE_ALIGNED_STACK == 0 - mov rsp, rstkm -%else - add rsp, stack_size_padded -%endif -%endif - POP_IF_USED 14, 13, 12, 11, 10, 9 -%if mmsize == 32 - vzeroupper -%endif - AUTO_REP_RET -%endmacro - -%else ; X86_32 ;============================================================== - -DECLARE_REG 0, eax, 4 -DECLARE_REG 1, ecx, 8 -DECLARE_REG 2, edx, 12 -DECLARE_REG 3, ebx, 16 -DECLARE_REG 4, esi, 20 -DECLARE_REG 5, edi, 24 -DECLARE_REG 6, ebp, 28 -%define rsp esp - -%macro DECLARE_ARG 1-* - %rep %0 - %define r%1m [rstk + stack_offset + 4*%1 + 4] - %define r%1mp dword r%1m - %rotate 1 - %endrep -%endmacro - -DECLARE_ARG 7, 8, 9, 10, 11, 12, 13, 14 - -%macro PROLOGUE 2-5+ ; #args, #regs, #xmm_regs, [stack_size,] arg_names... - %assign num_args %1 - %assign regs_used %2 - ASSERT regs_used >= num_args - %if num_args > 7 - %assign num_args 7 - %endif - %if regs_used > 7 - %assign regs_used 7 - %endif - SETUP_STACK_POINTER %4 - ASSERT regs_used <= 7 - PUSH_IF_USED 3, 4, 5, 6 - ALLOC_STACK %4 - LOAD_IF_USED 0, 1, 2, 3, 4, 5, 6 - DEFINE_ARGS_INTERNAL %0, %4, %5 -%endmacro - -%define has_epilogue regs_used > 3 || mmsize == 32 || stack_size > 0 - -%macro RET 0 -%if stack_size_padded > 0 -%if mmsize == 32 || HAVE_ALIGNED_STACK == 0 - mov rsp, rstkm -%else - add rsp, stack_size_padded -%endif -%endif - POP_IF_USED 6, 5, 4, 3 -%if mmsize == 32 - vzeroupper -%endif - AUTO_REP_RET -%endmacro - -%endif ;====================================================================== - -%if WIN64 == 0 -%macro WIN64_SPILL_XMM 1 -%endmacro -%macro WIN64_RESTORE_XMM 1 -%endmacro -%macro WIN64_PUSH_XMM 0 -%endmacro -%endif - -; On AMD cpus <=K10, an ordinary ret is slow if it immediately follows either -; a branch or a branch target. So switch to a 2-byte form of ret in that case. -; We can automatically detect "follows a branch", but not a branch target. -; (SSSE3 is a sufficient condition to know that your cpu doesn't have this problem.) -%macro REP_RET 0 - %if has_epilogue - RET - %else - rep ret - %endif -%endmacro - -%define last_branch_adr $$ -%macro AUTO_REP_RET 0 - %ifndef cpuflags - times ((last_branch_adr-$)>>31)+1 rep ; times 1 iff $ != last_branch_adr. - %elif notcpuflag(ssse3) - times ((last_branch_adr-$)>>31)+1 rep - %endif - ret -%endmacro - -%macro BRANCH_INSTR 0-* - %rep %0 - %macro %1 1-2 %1 - %2 %1 - %%branch_instr: - %xdefine last_branch_adr %%branch_instr - %endmacro - %rotate 1 - %endrep -%endmacro - -BRANCH_INSTR jz, je, jnz, jne, jl, jle, jnl, jnle, jg, jge, jng, jnge, ja, jae, jna, jnae, jb, jbe, jnb, jnbe, jc, jnc, js, jns, jo, jno, jp, jnp - -%macro TAIL_CALL 2 ; callee, is_nonadjacent - %if has_epilogue - call %1 - RET - %elif %2 - jmp %1 - %endif -%endmacro - -;============================================================================= -; arch-independent part -;============================================================================= - -%assign function_align 16 - -; Begin a function. -; Applies any symbol mangling needed for C linkage, and sets up a define such that -; subsequent uses of the function name automatically refer to the mangled version. -; Appends cpuflags to the function name if cpuflags has been specified. -; The "" empty default parameter is a workaround for nasm, which fails if SUFFIX -; is empty and we call cglobal_internal with just %1 %+ SUFFIX (without %2). -%macro cglobal 1-2+ "" ; name, [PROLOGUE args] - cglobal_internal 1, %1 %+ SUFFIX, %2 -%endmacro -%macro cvisible 1-2+ "" ; name, [PROLOGUE args] - cglobal_internal 0, %1 %+ SUFFIX, %2 -%endmacro -%macro cglobal_internal 2-3+ - %if %1 - %xdefine %%FUNCTION_PREFIX private_prefix - %xdefine %%VISIBILITY hidden - %else - %xdefine %%FUNCTION_PREFIX public_prefix - %xdefine %%VISIBILITY - %endif - %ifndef cglobaled_%2 - %xdefine %2 mangle(%%FUNCTION_PREFIX %+ _ %+ %2) - %xdefine %2.skip_prologue %2 %+ .skip_prologue - CAT_XDEFINE cglobaled_, %2, 1 - %endif - %xdefine current_function %2 - %ifidn __OUTPUT_FORMAT__,elf - global %2:function %%VISIBILITY - %else - global %2 - %endif - align function_align - %2: - RESET_MM_PERMUTATION ; needed for x86-64, also makes disassembly somewhat nicer - %xdefine rstk rsp ; copy of the original stack pointer, used when greater alignment than the known stack alignment is required - %assign stack_offset 0 ; stack pointer offset relative to the return address - %assign stack_size 0 ; amount of stack space that can be freely used inside a function - %assign stack_size_padded 0 ; total amount of allocated stack space, including space for callee-saved xmm registers on WIN64 and alignment padding - %assign xmm_regs_used 0 ; number of XMM registers requested, used for dealing with callee-saved registers on WIN64 - %ifnidn %3, "" - PROLOGUE %3 - %endif -%endmacro - -%macro cextern 1 - %xdefine %1 mangle(private_prefix %+ _ %+ %1) - CAT_XDEFINE cglobaled_, %1, 1 - extern %1 -%endmacro - -; like cextern, but without the prefix -%macro cextern_naked 1 - %xdefine %1 mangle(%1) - CAT_XDEFINE cglobaled_, %1, 1 - extern %1 -%endmacro - -%macro const 1-2+ - %xdefine %1 mangle(private_prefix %+ _ %+ %1) - %ifidn __OUTPUT_FORMAT__,elf - global %1:data hidden - %else - global %1 - %endif - %1: %2 -%endmacro - -; This is needed for ELF, otherwise the GNU linker assumes the stack is -; executable by default. -%ifidn __OUTPUT_FORMAT__,elf -SECTION .note.GNU-stack noalloc noexec nowrite progbits -%endif - -; cpuflags - -%assign cpuflags_mmx (1<<0) -%assign cpuflags_mmx2 (1<<1) | cpuflags_mmx -%assign cpuflags_3dnow (1<<2) | cpuflags_mmx -%assign cpuflags_3dnowext (1<<3) | cpuflags_3dnow -%assign cpuflags_sse (1<<4) | cpuflags_mmx2 -%assign cpuflags_sse2 (1<<5) | cpuflags_sse -%assign cpuflags_sse2slow (1<<6) | cpuflags_sse2 -%assign cpuflags_sse3 (1<<7) | cpuflags_sse2 -%assign cpuflags_ssse3 (1<<8) | cpuflags_sse3 -%assign cpuflags_sse4 (1<<9) | cpuflags_ssse3 -%assign cpuflags_sse42 (1<<10)| cpuflags_sse4 -%assign cpuflags_avx (1<<11)| cpuflags_sse42 -%assign cpuflags_xop (1<<12)| cpuflags_avx -%assign cpuflags_fma4 (1<<13)| cpuflags_avx -%assign cpuflags_avx2 (1<<14)| cpuflags_avx -%assign cpuflags_fma3 (1<<15)| cpuflags_avx - -%assign cpuflags_cache32 (1<<16) -%assign cpuflags_cache64 (1<<17) -%assign cpuflags_slowctz (1<<18) -%assign cpuflags_lzcnt (1<<19) -%assign cpuflags_aligned (1<<20) ; not a cpu feature, but a function variant -%assign cpuflags_atom (1<<21) -%assign cpuflags_bmi1 (1<<22)|cpuflags_lzcnt -%assign cpuflags_bmi2 (1<<23)|cpuflags_bmi1 - -%define cpuflag(x) ((cpuflags & (cpuflags_ %+ x)) == (cpuflags_ %+ x)) -%define notcpuflag(x) ((cpuflags & (cpuflags_ %+ x)) != (cpuflags_ %+ x)) - -; Takes up to 2 cpuflags from the above list. -; All subsequent functions (up to the next INIT_CPUFLAGS) is built for the specified cpu. -; You shouldn't need to invoke this macro directly, it's a subroutine for INIT_MMX &co. -%macro INIT_CPUFLAGS 0-2 - CPUNOP amdnop - %if %0 >= 1 - %xdefine cpuname %1 - %assign cpuflags cpuflags_%1 - %if %0 >= 2 - %xdefine cpuname %1_%2 - %assign cpuflags cpuflags | cpuflags_%2 - %endif - %xdefine SUFFIX _ %+ cpuname - %if cpuflag(avx) - %assign avx_enabled 1 - %endif - %if (mmsize == 16 && notcpuflag(sse2)) || (mmsize == 32 && notcpuflag(avx2)) - %define mova movaps - %define movu movups - %define movnta movntps - %endif - %if cpuflag(aligned) - %define movu mova - %elifidn %1, sse3 - %define movu lddqu - %endif - %if notcpuflag(sse2) - CPUNOP basicnop - %endif - %else - %xdefine SUFFIX - %undef cpuname - %undef cpuflags - %endif -%endmacro - -; Merge mmx and sse* -; m# is a simd regsiter of the currently selected size -; xm# is the corresponding xmmreg (if selcted xmm or ymm size), or mmreg (if selected mmx) -; ym# is the corresponding ymmreg (if selcted xmm or ymm size), or mmreg (if selected mmx) -; (All 3 remain in sync through SWAP.) - -%macro CAT_XDEFINE 3 - %xdefine %1%2 %3 -%endmacro - -%macro CAT_UNDEF 2 - %undef %1%2 -%endmacro - -%macro INIT_MMX 0-1+ - %assign avx_enabled 0 - %define RESET_MM_PERMUTATION INIT_MMX %1 - %define mmsize 8 - %define num_mmregs 8 - %define mova movq - %define movu movq - %define movh movd - %define movnta movntq - %assign %%i 0 - %rep 8 - CAT_XDEFINE m, %%i, mm %+ %%i - CAT_XDEFINE nmm, %%i, %%i - %assign %%i %%i+1 - %endrep - %rep 8 - CAT_UNDEF m, %%i - CAT_UNDEF nmm, %%i - %assign %%i %%i+1 - %endrep - INIT_CPUFLAGS %1 -%endmacro - -%macro INIT_XMM 0-1+ - %assign avx_enabled 0 - %define RESET_MM_PERMUTATION INIT_XMM %1 - %define mmsize 16 - %define num_mmregs 8 - %if ARCH_X86_64 - %define num_mmregs 16 - %endif - %define mova movdqa - %define movu movdqu - %define movh movq - %define movnta movntdq - %assign %%i 0 - %rep num_mmregs - CAT_XDEFINE m, %%i, xmm %+ %%i - CAT_XDEFINE nxmm, %%i, %%i - %assign %%i %%i+1 - %endrep - INIT_CPUFLAGS %1 -%endmacro - -%macro INIT_YMM 0-1+ - %assign avx_enabled 1 - %define RESET_MM_PERMUTATION INIT_YMM %1 - %define mmsize 32 - %define num_mmregs 8 - %if ARCH_X86_64 - %define num_mmregs 16 - %endif - %define mova movdqa - %define movu movdqu - %undef movh - %define movnta movntdq - %assign %%i 0 - %rep num_mmregs - CAT_XDEFINE m, %%i, ymm %+ %%i - CAT_XDEFINE nymm, %%i, %%i - %assign %%i %%i+1 - %endrep - INIT_CPUFLAGS %1 -%endmacro - -INIT_XMM - -%macro DECLARE_MMCAST 1 - %define mmmm%1 mm%1 - %define mmxmm%1 mm%1 - %define mmymm%1 mm%1 - %define xmmmm%1 mm%1 - %define xmmxmm%1 xmm%1 - %define xmmymm%1 xmm%1 - %define ymmmm%1 mm%1 - %define ymmxmm%1 ymm%1 - %define ymmymm%1 ymm%1 - %define xm%1 xmm %+ m%1 - %define ym%1 ymm %+ m%1 -%endmacro - -%assign i 0 -%rep 16 - DECLARE_MMCAST i -%assign i i+1 -%endrep - -; I often want to use macros that permute their arguments. e.g. there's no -; efficient way to implement butterfly or transpose or dct without swapping some -; arguments. -; -; I would like to not have to manually keep track of the permutations: -; If I insert a permutation in the middle of a function, it should automatically -; change everything that follows. For more complex macros I may also have multiple -; implementations, e.g. the SSE2 and SSSE3 versions may have different permutations. -; -; Hence these macros. Insert a PERMUTE or some SWAPs at the end of a macro that -; permutes its arguments. It's equivalent to exchanging the contents of the -; registers, except that this way you exchange the register names instead, so it -; doesn't cost any cycles. - -%macro PERMUTE 2-* ; takes a list of pairs to swap -%rep %0/2 - %xdefine %%tmp%2 m%2 - %rotate 2 -%endrep -%rep %0/2 - %xdefine m%1 %%tmp%2 - CAT_XDEFINE n, m%1, %1 - %rotate 2 -%endrep -%endmacro - -%macro SWAP 2+ ; swaps a single chain (sometimes more concise than pairs) -%ifnum %1 ; SWAP 0, 1, ... - SWAP_INTERNAL_NUM %1, %2 -%else ; SWAP m0, m1, ... - SWAP_INTERNAL_NAME %1, %2 -%endif -%endmacro - -%macro SWAP_INTERNAL_NUM 2-* - %rep %0-1 - %xdefine %%tmp m%1 - %xdefine m%1 m%2 - %xdefine m%2 %%tmp - CAT_XDEFINE n, m%1, %1 - CAT_XDEFINE n, m%2, %2 - %rotate 1 - %endrep -%endmacro - -%macro SWAP_INTERNAL_NAME 2-* - %xdefine %%args n %+ %1 - %rep %0-1 - %xdefine %%args %%args, n %+ %2 - %rotate 1 - %endrep - SWAP_INTERNAL_NUM %%args -%endmacro - -; If SAVE_MM_PERMUTATION is placed at the end of a function, then any later -; calls to that function will automatically load the permutation, so values can -; be returned in mmregs. -%macro SAVE_MM_PERMUTATION 0-1 - %if %0 - %xdefine %%f %1_m - %else - %xdefine %%f current_function %+ _m - %endif - %assign %%i 0 - %rep num_mmregs - CAT_XDEFINE %%f, %%i, m %+ %%i - %assign %%i %%i+1 - %endrep -%endmacro - -%macro LOAD_MM_PERMUTATION 1 ; name to load from - %ifdef %1_m0 - %assign %%i 0 - %rep num_mmregs - CAT_XDEFINE m, %%i, %1_m %+ %%i - CAT_XDEFINE n, m %+ %%i, %%i - %assign %%i %%i+1 - %endrep - %endif -%endmacro - -; Append cpuflags to the callee's name iff the appended name is known and the plain name isn't -%macro call 1 - call_internal %1 %+ SUFFIX, %1 -%endmacro -%macro call_internal 2 - %xdefine %%i %2 - %ifndef cglobaled_%2 - %ifdef cglobaled_%1 - %xdefine %%i %1 - %endif - %endif - call %%i - LOAD_MM_PERMUTATION %%i -%endmacro - -; Substitutions that reduce instruction size but are functionally equivalent -%macro add 2 - %ifnum %2 - %if %2==128 - sub %1, -128 - %else - add %1, %2 - %endif - %else - add %1, %2 - %endif -%endmacro - -%macro sub 2 - %ifnum %2 - %if %2==128 - add %1, -128 - %else - sub %1, %2 - %endif - %else - sub %1, %2 - %endif -%endmacro - -;============================================================================= -; AVX abstraction layer -;============================================================================= - -%assign i 0 -%rep 16 - %if i < 8 - CAT_XDEFINE sizeofmm, i, 8 - %endif - CAT_XDEFINE sizeofxmm, i, 16 - CAT_XDEFINE sizeofymm, i, 32 -%assign i i+1 -%endrep -%undef i - -%macro CHECK_AVX_INSTR_EMU 3-* - %xdefine %%opcode %1 - %xdefine %%dst %2 - %rep %0-2 - %ifidn %%dst, %3 - %error non-avx emulation of ``%%opcode'' is not supported - %endif - %rotate 1 - %endrep -%endmacro - -;%1 == instruction -;%2 == 1 if float, 0 if int -;%3 == 1 if non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise -;%4 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not -;%5+: operands -%macro RUN_AVX_INSTR 5-8+ - %ifnum sizeof%6 - %assign __sizeofreg sizeof%6 - %elifnum sizeof%5 - %assign __sizeofreg sizeof%5 - %else - %assign __sizeofreg mmsize - %endif - %assign __emulate_avx 0 - %if avx_enabled && __sizeofreg >= 16 - %xdefine __instr v%1 - %else - %xdefine __instr %1 - %if %0 >= 7+%3 - %assign __emulate_avx 1 - %endif - %endif - - %if __emulate_avx - %xdefine __src1 %6 - %xdefine __src2 %7 - %ifnidn %5, %6 - %if %0 >= 8 - CHECK_AVX_INSTR_EMU {%1 %5, %6, %7, %8}, %5, %7, %8 - %else - CHECK_AVX_INSTR_EMU {%1 %5, %6, %7}, %5, %7 - %endif - %if %4 && %3 == 0 - %ifnid %7 - ; 3-operand AVX instructions with a memory arg can only have it in src2, - ; whereas SSE emulation prefers to have it in src1 (i.e. the mov). - ; So, if the instruction is commutative with a memory arg, swap them. - %xdefine __src1 %7 - %xdefine __src2 %6 - %endif - %endif - %if __sizeofreg == 8 - MOVQ %5, __src1 - %elif %2 - MOVAPS %5, __src1 - %else - MOVDQA %5, __src1 - %endif - %endif - %if %0 >= 8 - %1 %5, __src2, %8 - %else - %1 %5, __src2 - %endif - %elif %0 >= 8 - __instr %5, %6, %7, %8 - %elif %0 == 7 - __instr %5, %6, %7 - %elif %0 == 6 - __instr %5, %6 - %else - __instr %5 - %endif -%endmacro - -;%1 == instruction -;%2 == 1 if float, 0 if int -;%3 == 1 if non-destructive or 4-operand (xmm, xmm, xmm, imm), 0 otherwise -;%4 == 1 if commutative (i.e. doesn't matter which src arg is which), 0 if not -%macro AVX_INSTR 1-4 0, 1, 0 - %macro %1 1-9 fnord, fnord, fnord, fnord, %1, %2, %3, %4 - %ifidn %2, fnord - RUN_AVX_INSTR %6, %7, %8, %9, %1 - %elifidn %3, fnord - RUN_AVX_INSTR %6, %7, %8, %9, %1, %2 - %elifidn %4, fnord - RUN_AVX_INSTR %6, %7, %8, %9, %1, %2, %3 - %elifidn %5, fnord - RUN_AVX_INSTR %6, %7, %8, %9, %1, %2, %3, %4 - %else - RUN_AVX_INSTR %6, %7, %8, %9, %1, %2, %3, %4, %5 - %endif - %endmacro -%endmacro - -; Instructions with both VEX and non-VEX encodings -; Non-destructive instructions are written without parameters -AVX_INSTR addpd, 1, 0, 1 -AVX_INSTR addps, 1, 0, 1 -AVX_INSTR addsd, 1, 0, 1 -AVX_INSTR addss, 1, 0, 1 -AVX_INSTR addsubpd, 1, 0, 0 -AVX_INSTR addsubps, 1, 0, 0 -AVX_INSTR aesdec, 0, 0, 0 -AVX_INSTR aesdeclast, 0, 0, 0 -AVX_INSTR aesenc, 0, 0, 0 -AVX_INSTR aesenclast, 0, 0, 0 -AVX_INSTR aesimc -AVX_INSTR aeskeygenassist -AVX_INSTR andnpd, 1, 0, 0 -AVX_INSTR andnps, 1, 0, 0 -AVX_INSTR andpd, 1, 0, 1 -AVX_INSTR andps, 1, 0, 1 -AVX_INSTR blendpd, 1, 0, 0 -AVX_INSTR blendps, 1, 0, 0 -AVX_INSTR blendvpd, 1, 0, 0 -AVX_INSTR blendvps, 1, 0, 0 -AVX_INSTR cmppd, 1, 1, 0 -AVX_INSTR cmpps, 1, 1, 0 -AVX_INSTR cmpsd, 1, 1, 0 -AVX_INSTR cmpss, 1, 1, 0 -AVX_INSTR comisd -AVX_INSTR comiss -AVX_INSTR cvtdq2pd -AVX_INSTR cvtdq2ps -AVX_INSTR cvtpd2dq -AVX_INSTR cvtpd2ps -AVX_INSTR cvtps2dq -AVX_INSTR cvtps2pd -AVX_INSTR cvtsd2si -AVX_INSTR cvtsd2ss -AVX_INSTR cvtsi2sd -AVX_INSTR cvtsi2ss -AVX_INSTR cvtss2sd -AVX_INSTR cvtss2si -AVX_INSTR cvttpd2dq -AVX_INSTR cvttps2dq -AVX_INSTR cvttsd2si -AVX_INSTR cvttss2si -AVX_INSTR divpd, 1, 0, 0 -AVX_INSTR divps, 1, 0, 0 -AVX_INSTR divsd, 1, 0, 0 -AVX_INSTR divss, 1, 0, 0 -AVX_INSTR dppd, 1, 1, 0 -AVX_INSTR dpps, 1, 1, 0 -AVX_INSTR extractps -AVX_INSTR haddpd, 1, 0, 0 -AVX_INSTR haddps, 1, 0, 0 -AVX_INSTR hsubpd, 1, 0, 0 -AVX_INSTR hsubps, 1, 0, 0 -AVX_INSTR insertps, 1, 1, 0 -AVX_INSTR lddqu -AVX_INSTR ldmxcsr -AVX_INSTR maskmovdqu -AVX_INSTR maxpd, 1, 0, 1 -AVX_INSTR maxps, 1, 0, 1 -AVX_INSTR maxsd, 1, 0, 1 -AVX_INSTR maxss, 1, 0, 1 -AVX_INSTR minpd, 1, 0, 1 -AVX_INSTR minps, 1, 0, 1 -AVX_INSTR minsd, 1, 0, 1 -AVX_INSTR minss, 1, 0, 1 -AVX_INSTR movapd -AVX_INSTR movaps -AVX_INSTR movd -AVX_INSTR movddup -AVX_INSTR movdqa -AVX_INSTR movdqu -AVX_INSTR movhlps, 1, 0, 0 -AVX_INSTR movhpd, 1, 0, 0 -AVX_INSTR movhps, 1, 0, 0 -AVX_INSTR movlhps, 1, 0, 0 -AVX_INSTR movlpd, 1, 0, 0 -AVX_INSTR movlps, 1, 0, 0 -AVX_INSTR movmskpd -AVX_INSTR movmskps -AVX_INSTR movntdq -AVX_INSTR movntdqa -AVX_INSTR movntpd -AVX_INSTR movntps -AVX_INSTR movq -AVX_INSTR movsd, 1, 0, 0 -AVX_INSTR movshdup -AVX_INSTR movsldup -AVX_INSTR movss, 1, 0, 0 -AVX_INSTR movupd -AVX_INSTR movups -AVX_INSTR mpsadbw, 0, 1, 0 -AVX_INSTR mulpd, 1, 0, 1 -AVX_INSTR mulps, 1, 0, 1 -AVX_INSTR mulsd, 1, 0, 1 -AVX_INSTR mulss, 1, 0, 1 -AVX_INSTR orpd, 1, 0, 1 -AVX_INSTR orps, 1, 0, 1 -AVX_INSTR pabsb -AVX_INSTR pabsd -AVX_INSTR pabsw -AVX_INSTR packsswb, 0, 0, 0 -AVX_INSTR packssdw, 0, 0, 0 -AVX_INSTR packuswb, 0, 0, 0 -AVX_INSTR packusdw, 0, 0, 0 -AVX_INSTR paddb, 0, 0, 1 -AVX_INSTR paddw, 0, 0, 1 -AVX_INSTR paddd, 0, 0, 1 -AVX_INSTR paddq, 0, 0, 1 -AVX_INSTR paddsb, 0, 0, 1 -AVX_INSTR paddsw, 0, 0, 1 -AVX_INSTR paddusb, 0, 0, 1 -AVX_INSTR paddusw, 0, 0, 1 -AVX_INSTR palignr, 0, 1, 0 -AVX_INSTR pand, 0, 0, 1 -AVX_INSTR pandn, 0, 0, 0 -AVX_INSTR pavgb, 0, 0, 1 -AVX_INSTR pavgw, 0, 0, 1 -AVX_INSTR pblendvb, 0, 0, 0 -AVX_INSTR pblendw, 0, 1, 0 -AVX_INSTR pclmulqdq, 0, 1, 0 -AVX_INSTR pcmpestri -AVX_INSTR pcmpestrm -AVX_INSTR pcmpistri -AVX_INSTR pcmpistrm -AVX_INSTR pcmpeqb, 0, 0, 1 -AVX_INSTR pcmpeqw, 0, 0, 1 -AVX_INSTR pcmpeqd, 0, 0, 1 -AVX_INSTR pcmpeqq, 0, 0, 1 -AVX_INSTR pcmpgtb, 0, 0, 0 -AVX_INSTR pcmpgtw, 0, 0, 0 -AVX_INSTR pcmpgtd, 0, 0, 0 -AVX_INSTR pcmpgtq, 0, 0, 0 -AVX_INSTR pextrb -AVX_INSTR pextrd -AVX_INSTR pextrq -AVX_INSTR pextrw -AVX_INSTR phaddw, 0, 0, 0 -AVX_INSTR phaddd, 0, 0, 0 -AVX_INSTR phaddsw, 0, 0, 0 -AVX_INSTR phminposuw -AVX_INSTR phsubw, 0, 0, 0 -AVX_INSTR phsubd, 0, 0, 0 -AVX_INSTR phsubsw, 0, 0, 0 -AVX_INSTR pinsrb, 0, 1, 0 -AVX_INSTR pinsrd, 0, 1, 0 -AVX_INSTR pinsrq, 0, 1, 0 -AVX_INSTR pinsrw, 0, 1, 0 -AVX_INSTR pmaddwd, 0, 0, 1 -AVX_INSTR pmaddubsw, 0, 0, 0 -AVX_INSTR pmaxsb, 0, 0, 1 -AVX_INSTR pmaxsw, 0, 0, 1 -AVX_INSTR pmaxsd, 0, 0, 1 -AVX_INSTR pmaxub, 0, 0, 1 -AVX_INSTR pmaxuw, 0, 0, 1 -AVX_INSTR pmaxud, 0, 0, 1 -AVX_INSTR pminsb, 0, 0, 1 -AVX_INSTR pminsw, 0, 0, 1 -AVX_INSTR pminsd, 0, 0, 1 -AVX_INSTR pminub, 0, 0, 1 -AVX_INSTR pminuw, 0, 0, 1 -AVX_INSTR pminud, 0, 0, 1 -AVX_INSTR pmovmskb -AVX_INSTR pmovsxbw -AVX_INSTR pmovsxbd -AVX_INSTR pmovsxbq -AVX_INSTR pmovsxwd -AVX_INSTR pmovsxwq -AVX_INSTR pmovsxdq -AVX_INSTR pmovzxbw -AVX_INSTR pmovzxbd -AVX_INSTR pmovzxbq -AVX_INSTR pmovzxwd -AVX_INSTR pmovzxwq -AVX_INSTR pmovzxdq -AVX_INSTR pmuldq, 0, 0, 1 -AVX_INSTR pmulhrsw, 0, 0, 1 -AVX_INSTR pmulhuw, 0, 0, 1 -AVX_INSTR pmulhw, 0, 0, 1 -AVX_INSTR pmullw, 0, 0, 1 -AVX_INSTR pmulld, 0, 0, 1 -AVX_INSTR pmuludq, 0, 0, 1 -AVX_INSTR por, 0, 0, 1 -AVX_INSTR psadbw, 0, 0, 1 -AVX_INSTR pshufb, 0, 0, 0 -AVX_INSTR pshufd -AVX_INSTR pshufhw -AVX_INSTR pshuflw -AVX_INSTR psignb, 0, 0, 0 -AVX_INSTR psignw, 0, 0, 0 -AVX_INSTR psignd, 0, 0, 0 -AVX_INSTR psllw, 0, 0, 0 -AVX_INSTR pslld, 0, 0, 0 -AVX_INSTR psllq, 0, 0, 0 -AVX_INSTR pslldq, 0, 0, 0 -AVX_INSTR psraw, 0, 0, 0 -AVX_INSTR psrad, 0, 0, 0 -AVX_INSTR psrlw, 0, 0, 0 -AVX_INSTR psrld, 0, 0, 0 -AVX_INSTR psrlq, 0, 0, 0 -AVX_INSTR psrldq, 0, 0, 0 -AVX_INSTR psubb, 0, 0, 0 -AVX_INSTR psubw, 0, 0, 0 -AVX_INSTR psubd, 0, 0, 0 -AVX_INSTR psubq, 0, 0, 0 -AVX_INSTR psubsb, 0, 0, 0 -AVX_INSTR psubsw, 0, 0, 0 -AVX_INSTR psubusb, 0, 0, 0 -AVX_INSTR psubusw, 0, 0, 0 -AVX_INSTR ptest -AVX_INSTR punpckhbw, 0, 0, 0 -AVX_INSTR punpckhwd, 0, 0, 0 -AVX_INSTR punpckhdq, 0, 0, 0 -AVX_INSTR punpckhqdq, 0, 0, 0 -AVX_INSTR punpcklbw, 0, 0, 0 -AVX_INSTR punpcklwd, 0, 0, 0 -AVX_INSTR punpckldq, 0, 0, 0 -AVX_INSTR punpcklqdq, 0, 0, 0 -AVX_INSTR pxor, 0, 0, 1 -AVX_INSTR rcpps, 1, 0, 0 -AVX_INSTR rcpss, 1, 0, 0 -AVX_INSTR roundpd -AVX_INSTR roundps -AVX_INSTR roundsd -AVX_INSTR roundss -AVX_INSTR rsqrtps, 1, 0, 0 -AVX_INSTR rsqrtss, 1, 0, 0 -AVX_INSTR shufpd, 1, 1, 0 -AVX_INSTR shufps, 1, 1, 0 -AVX_INSTR sqrtpd, 1, 0, 0 -AVX_INSTR sqrtps, 1, 0, 0 -AVX_INSTR sqrtsd, 1, 0, 0 -AVX_INSTR sqrtss, 1, 0, 0 -AVX_INSTR stmxcsr -AVX_INSTR subpd, 1, 0, 0 -AVX_INSTR subps, 1, 0, 0 -AVX_INSTR subsd, 1, 0, 0 -AVX_INSTR subss, 1, 0, 0 -AVX_INSTR ucomisd -AVX_INSTR ucomiss -AVX_INSTR unpckhpd, 1, 0, 0 -AVX_INSTR unpckhps, 1, 0, 0 -AVX_INSTR unpcklpd, 1, 0, 0 -AVX_INSTR unpcklps, 1, 0, 0 -AVX_INSTR xorpd, 1, 0, 1 -AVX_INSTR xorps, 1, 0, 1 - -; 3DNow instructions, for sharing code between AVX, SSE and 3DN -AVX_INSTR pfadd, 1, 0, 1 -AVX_INSTR pfsub, 1, 0, 0 -AVX_INSTR pfmul, 1, 0, 1 - -; base-4 constants for shuffles -%assign i 0 -%rep 256 - %assign j ((i>>6)&3)*1000 + ((i>>4)&3)*100 + ((i>>2)&3)*10 + (i&3) - %if j < 10 - CAT_XDEFINE q000, j, i - %elif j < 100 - CAT_XDEFINE q00, j, i - %elif j < 1000 - CAT_XDEFINE q0, j, i - %else - CAT_XDEFINE q, j, i - %endif -%assign i i+1 -%endrep -%undef i -%undef j - -%macro FMA_INSTR 3 - %macro %1 4-7 %1, %2, %3 - %if cpuflag(xop) - v%5 %1, %2, %3, %4 - %else - %6 %1, %2, %3 - %7 %1, %4 - %endif - %endmacro -%endmacro - -FMA_INSTR pmacsdd, pmulld, paddd -FMA_INSTR pmacsww, pmullw, paddw -FMA_INSTR pmadcswd, pmaddwd, paddd - -; tzcnt is equivalent to "rep bsf" and is backwards-compatible with bsf. -; This lets us use tzcnt without bumping the yasm version requirement yet. -%define tzcnt rep bsf - -; convert FMA4 to FMA3 if possible -%macro FMA4_INSTR 4 - %macro %1 4-8 %1, %2, %3, %4 - %if cpuflag(fma4) - v%5 %1, %2, %3, %4 - %elifidn %1, %2 - v%6 %1, %4, %3 ; %1 = %1 * %3 + %4 - %elifidn %1, %3 - v%7 %1, %2, %4 ; %1 = %2 * %1 + %4 - %elifidn %1, %4 - v%8 %1, %2, %3 ; %1 = %2 * %3 + %1 - %else - %error fma3 emulation of ``%5 %1, %2, %3, %4'' is not supported - %endif - %endmacro -%endmacro - -FMA4_INSTR fmaddpd, fmadd132pd, fmadd213pd, fmadd231pd -FMA4_INSTR fmaddps, fmadd132ps, fmadd213ps, fmadd231ps -FMA4_INSTR fmaddsd, fmadd132sd, fmadd213sd, fmadd231sd -FMA4_INSTR fmaddss, fmadd132ss, fmadd213ss, fmadd231ss - -FMA4_INSTR fmaddsubpd, fmaddsub132pd, fmaddsub213pd, fmaddsub231pd -FMA4_INSTR fmaddsubps, fmaddsub132ps, fmaddsub213ps, fmaddsub231ps -FMA4_INSTR fmsubaddpd, fmsubadd132pd, fmsubadd213pd, fmsubadd231pd -FMA4_INSTR fmsubaddps, fmsubadd132ps, fmsubadd213ps, fmsubadd231ps - -FMA4_INSTR fmsubpd, fmsub132pd, fmsub213pd, fmsub231pd -FMA4_INSTR fmsubps, fmsub132ps, fmsub213ps, fmsub231ps -FMA4_INSTR fmsubsd, fmsub132sd, fmsub213sd, fmsub231sd -FMA4_INSTR fmsubss, fmsub132ss, fmsub213ss, fmsub231ss - -FMA4_INSTR fnmaddpd, fnmadd132pd, fnmadd213pd, fnmadd231pd -FMA4_INSTR fnmaddps, fnmadd132ps, fnmadd213ps, fnmadd231ps -FMA4_INSTR fnmaddsd, fnmadd132sd, fnmadd213sd, fnmadd231sd -FMA4_INSTR fnmaddss, fnmadd132ss, fnmadd213ss, fnmadd231ss - -FMA4_INSTR fnmsubpd, fnmsub132pd, fnmsub213pd, fnmsub231pd -FMA4_INSTR fnmsubps, fnmsub132ps, fnmsub213ps, fnmsub231ps -FMA4_INSTR fnmsubsd, fnmsub132sd, fnmsub213sd, fnmsub231sd -FMA4_INSTR fnmsubss, fnmsub132ss, fnmsub213ss, fnmsub231ss - -; workaround: vpbroadcastq is broken in x86_32 due to a yasm bug -%if ARCH_X86_64 == 0 -%macro vpbroadcastq 2 -%if sizeof%1 == 16 - movddup %1, %2 -%else - vbroadcastsd %1, %2 -%endif -%endmacro -%endif diff --git a/media/libav/libavutil/x86/x86util.asm b/media/libav/libavutil/x86/x86util.asm deleted file mode 100644 index 11779cf07..000000000 --- a/media/libav/libavutil/x86/x86util.asm +++ /dev/null @@ -1,680 +0,0 @@ -;***************************************************************************** -;* x86util.asm -;***************************************************************************** -;* Copyright (C) 2008-2010 x264 project -;* -;* Authors: Loren Merritt <lorenm@u.washington.edu> -;* Holger Lubitz <holger@lubitz.org> -;* -;* This file is part of Libav. -;* -;* Libav is free software; you can redistribute it 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. -;* -;* Libav is distributed in the hope that it will be useful, -;* but WITHOUT ANY WARRANTY; without even the implied warranty of -;* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -;* Lesser General Public License for more details. -;* -;* You should have received a copy of the GNU Lesser General Public -;* License along with Libav; if not, write to the Free Software -;* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA -;****************************************************************************** - -%define private_prefix ff -%define public_prefix avpriv -%define cpuflags_mmxext cpuflags_mmx2 - -%include "libavutil/x86/x86inc.asm" - -%macro SBUTTERFLY 4 -%if avx_enabled == 0 - mova m%4, m%2 - punpckl%1 m%2, m%3 - punpckh%1 m%4, m%3 -%else - punpckh%1 m%4, m%2, m%3 - punpckl%1 m%2, m%3 -%endif - SWAP %3, %4 -%endmacro - -%macro SBUTTERFLY2 4 - punpckl%1 m%4, m%2, m%3 - punpckh%1 m%2, m%2, m%3 - SWAP %2, %4, %3 -%endmacro - -%macro SBUTTERFLYPS 3 - unpcklps m%3, m%1, m%2 - unpckhps m%1, m%1, m%2 - SWAP %1, %3, %2 -%endmacro - -%macro TRANSPOSE4x4B 5 - SBUTTERFLY bw, %1, %2, %5 - SBUTTERFLY bw, %3, %4, %5 - SBUTTERFLY wd, %1, %3, %5 - SBUTTERFLY wd, %2, %4, %5 - SWAP %2, %3 -%endmacro - -%macro TRANSPOSE4x4W 5 - SBUTTERFLY wd, %1, %2, %5 - SBUTTERFLY wd, %3, %4, %5 - SBUTTERFLY dq, %1, %3, %5 - SBUTTERFLY dq, %2, %4, %5 - SWAP %2, %3 -%endmacro - -%macro TRANSPOSE2x4x4W 5 - SBUTTERFLY wd, %1, %2, %5 - SBUTTERFLY wd, %3, %4, %5 - SBUTTERFLY dq, %1, %3, %5 - SBUTTERFLY dq, %2, %4, %5 - SBUTTERFLY qdq, %1, %2, %5 - SBUTTERFLY qdq, %3, %4, %5 -%endmacro - -%macro TRANSPOSE4x4D 5 - SBUTTERFLY dq, %1, %2, %5 - SBUTTERFLY dq, %3, %4, %5 - SBUTTERFLY qdq, %1, %3, %5 - SBUTTERFLY qdq, %2, %4, %5 - SWAP %2, %3 -%endmacro - -; identical behavior to TRANSPOSE4x4D, but using SSE1 float ops -%macro TRANSPOSE4x4PS 5 - SBUTTERFLYPS %1, %2, %5 - SBUTTERFLYPS %3, %4, %5 - movlhps m%5, m%1, m%3 - movhlps m%3, m%1 - SWAP %5, %1 - movlhps m%5, m%2, m%4 - movhlps m%4, m%2 - SWAP %5, %2, %3 -%endmacro - -%macro TRANSPOSE8x8W 9-11 -%if ARCH_X86_64 - SBUTTERFLY wd, %1, %2, %9 - SBUTTERFLY wd, %3, %4, %9 - SBUTTERFLY wd, %5, %6, %9 - SBUTTERFLY wd, %7, %8, %9 - SBUTTERFLY dq, %1, %3, %9 - SBUTTERFLY dq, %2, %4, %9 - SBUTTERFLY dq, %5, %7, %9 - SBUTTERFLY dq, %6, %8, %9 - SBUTTERFLY qdq, %1, %5, %9 - SBUTTERFLY qdq, %2, %6, %9 - SBUTTERFLY qdq, %3, %7, %9 - SBUTTERFLY qdq, %4, %8, %9 - SWAP %2, %5 - SWAP %4, %7 -%else -; in: m0..m7, unless %11 in which case m6 is in %9 -; out: m0..m7, unless %11 in which case m4 is in %10 -; spills into %9 and %10 -%if %0<11 - movdqa %9, m%7 -%endif - SBUTTERFLY wd, %1, %2, %7 - movdqa %10, m%2 - movdqa m%7, %9 - SBUTTERFLY wd, %3, %4, %2 - SBUTTERFLY wd, %5, %6, %2 - SBUTTERFLY wd, %7, %8, %2 - SBUTTERFLY dq, %1, %3, %2 - movdqa %9, m%3 - movdqa m%2, %10 - SBUTTERFLY dq, %2, %4, %3 - SBUTTERFLY dq, %5, %7, %3 - SBUTTERFLY dq, %6, %8, %3 - SBUTTERFLY qdq, %1, %5, %3 - SBUTTERFLY qdq, %2, %6, %3 - movdqa %10, m%2 - movdqa m%3, %9 - SBUTTERFLY qdq, %3, %7, %2 - SBUTTERFLY qdq, %4, %8, %2 - SWAP %2, %5 - SWAP %4, %7 -%if %0<11 - movdqa m%5, %10 -%endif -%endif -%endmacro - -; PABSW macro assumes %1 != %2, while ABS1/2 macros work in-place -%macro PABSW 2 -%if cpuflag(ssse3) - pabsw %1, %2 -%elif cpuflag(mmxext) - pxor %1, %1 - psubw %1, %2 - pmaxsw %1, %2 -%else - pxor %1, %1 - pcmpgtw %1, %2 - pxor %2, %1 - psubw %2, %1 - SWAP %1, %2 -%endif -%endmacro - -%macro PSIGNW_MMX 2 - pxor %1, %2 - psubw %1, %2 -%endmacro - -%macro PSIGNW_SSSE3 2 - psignw %1, %2 -%endmacro - -%macro ABS1 2 -%if cpuflag(ssse3) - pabsw %1, %1 -%elif cpuflag(mmxext) ; a, tmp - pxor %2, %2 - psubw %2, %1 - pmaxsw %1, %2 -%else ; a, tmp - pxor %2, %2 - pcmpgtw %2, %1 - pxor %1, %2 - psubw %1, %2 -%endif -%endmacro - -%macro ABS2 4 -%if cpuflag(ssse3) - pabsw %1, %1 - pabsw %2, %2 -%elif cpuflag(mmxext) ; a, b, tmp0, tmp1 - pxor %3, %3 - pxor %4, %4 - psubw %3, %1 - psubw %4, %2 - pmaxsw %1, %3 - pmaxsw %2, %4 -%else ; a, b, tmp0, tmp1 - pxor %3, %3 - pxor %4, %4 - pcmpgtw %3, %1 - pcmpgtw %4, %2 - pxor %1, %3 - pxor %2, %4 - psubw %1, %3 - psubw %2, %4 -%endif -%endmacro - -%macro ABSB 2 ; source mmreg, temp mmreg (unused for ssse3) -%if cpuflag(ssse3) - pabsb %1, %1 -%else - pxor %2, %2 - psubb %2, %1 - pminub %1, %2 -%endif -%endmacro - -%macro ABSB2 4 ; src1, src2, tmp1, tmp2 (tmp1/2 unused for SSSE3) -%if cpuflag(ssse3) - pabsb %1, %1 - pabsb %2, %2 -%else - pxor %3, %3 - pxor %4, %4 - psubb %3, %1 - psubb %4, %2 - pminub %1, %3 - pminub %2, %4 -%endif -%endmacro - -%macro ABSD2_MMX 4 - pxor %3, %3 - pxor %4, %4 - pcmpgtd %3, %1 - pcmpgtd %4, %2 - pxor %1, %3 - pxor %2, %4 - psubd %1, %3 - psubd %2, %4 -%endmacro - -%macro ABS4 6 - ABS2 %1, %2, %5, %6 - ABS2 %3, %4, %5, %6 -%endmacro - -%macro SPLATB_LOAD 3 -%if cpuflag(ssse3) - movd %1, [%2-3] - pshufb %1, %3 -%else - movd %1, [%2-3] ;to avoid crossing a cacheline - punpcklbw %1, %1 - SPLATW %1, %1, 3 -%endif -%endmacro - -%macro SPLATB_REG 3 -%if cpuflag(ssse3) - movd %1, %2d - pshufb %1, %3 -%else - movd %1, %2d - punpcklbw %1, %1 - SPLATW %1, %1, 0 -%endif -%endmacro - -%macro PALIGNR 4-5 -%if cpuflag(ssse3) -%if %0==5 - palignr %1, %2, %3, %4 -%else - palignr %1, %2, %3 -%endif -%elif cpuflag(mmx) ; [dst,] src1, src2, imm, tmp - %define %%dst %1 -%if %0==5 -%ifnidn %1, %2 - mova %%dst, %2 -%endif - %rotate 1 -%endif -%ifnidn %4, %2 - mova %4, %2 -%endif -%if mmsize==8 - psllq %%dst, (8-%3)*8 - psrlq %4, %3*8 -%else - pslldq %%dst, 16-%3 - psrldq %4, %3 -%endif - por %%dst, %4 -%endif -%endmacro - -%macro PAVGB 2 -%if cpuflag(mmxext) - pavgb %1, %2 -%elif cpuflag(3dnow) - pavgusb %1, %2 -%endif -%endmacro - -%macro PSHUFLW 1+ - %if mmsize == 8 - pshufw %1 - %else - pshuflw %1 - %endif -%endmacro - -%macro PSWAPD 2 -%if cpuflag(mmxext) - pshufw %1, %2, q1032 -%elif cpuflag(3dnowext) - pswapd %1, %2 -%elif cpuflag(3dnow) - movq %1, %2 - psrlq %1, 32 - punpckldq %1, %2 -%endif -%endmacro - -%macro DEINTB 5 ; mask, reg1, mask, reg2, optional src to fill masks from -%ifnum %5 - pand m%3, m%5, m%4 ; src .. y6 .. y4 - pand m%1, m%5, m%2 ; dst .. y6 .. y4 -%else - mova m%1, %5 - pand m%3, m%1, m%4 ; src .. y6 .. y4 - pand m%1, m%1, m%2 ; dst .. y6 .. y4 -%endif - psrlw m%2, 8 ; dst .. y7 .. y5 - psrlw m%4, 8 ; src .. y7 .. y5 -%endmacro - -%macro SUMSUB_BA 3-4 -%if %0==3 - padd%1 m%2, m%3 - padd%1 m%3, m%3 - psub%1 m%3, m%2 -%else -%if avx_enabled == 0 - mova m%4, m%2 - padd%1 m%2, m%3 - psub%1 m%3, m%4 -%else - padd%1 m%4, m%2, m%3 - psub%1 m%3, m%2 - SWAP %2, %4 -%endif -%endif -%endmacro - -%macro SUMSUB_BADC 5-6 -%if %0==6 - SUMSUB_BA %1, %2, %3, %6 - SUMSUB_BA %1, %4, %5, %6 -%else - padd%1 m%2, m%3 - padd%1 m%4, m%5 - padd%1 m%3, m%3 - padd%1 m%5, m%5 - psub%1 m%3, m%2 - psub%1 m%5, m%4 -%endif -%endmacro - -%macro SUMSUB2_AB 4 -%ifnum %3 - psub%1 m%4, m%2, m%3 - psub%1 m%4, m%3 - padd%1 m%2, m%2 - padd%1 m%2, m%3 -%else - mova m%4, m%2 - padd%1 m%2, m%2 - padd%1 m%2, %3 - psub%1 m%4, %3 - psub%1 m%4, %3 -%endif -%endmacro - -%macro SUMSUB2_BA 4 -%if avx_enabled == 0 - mova m%4, m%2 - padd%1 m%2, m%3 - padd%1 m%2, m%3 - psub%1 m%3, m%4 - psub%1 m%3, m%4 -%else - padd%1 m%4, m%2, m%3 - padd%1 m%4, m%3 - psub%1 m%3, m%2 - psub%1 m%3, m%2 - SWAP %2, %4 -%endif -%endmacro - -%macro SUMSUBD2_AB 5 -%ifnum %4 - psra%1 m%5, m%2, 1 ; %3: %3>>1 - psra%1 m%4, m%3, 1 ; %2: %2>>1 - padd%1 m%4, m%2 ; %3: %3>>1+%2 - psub%1 m%5, m%3 ; %2: %2>>1-%3 - SWAP %2, %5 - SWAP %3, %4 -%else - mova %5, m%2 - mova %4, m%3 - psra%1 m%3, 1 ; %3: %3>>1 - psra%1 m%2, 1 ; %2: %2>>1 - padd%1 m%3, %5 ; %3: %3>>1+%2 - psub%1 m%2, %4 ; %2: %2>>1-%3 -%endif -%endmacro - -%macro DCT4_1D 5 -%ifnum %5 - SUMSUB_BADC w, %4, %1, %3, %2, %5 - SUMSUB_BA w, %3, %4, %5 - SUMSUB2_AB w, %1, %2, %5 - SWAP %1, %3, %4, %5, %2 -%else - SUMSUB_BADC w, %4, %1, %3, %2 - SUMSUB_BA w, %3, %4 - mova [%5], m%2 - SUMSUB2_AB w, %1, [%5], %2 - SWAP %1, %3, %4, %2 -%endif -%endmacro - -%macro IDCT4_1D 6-7 -%ifnum %6 - SUMSUBD2_AB %1, %3, %5, %7, %6 - ; %3: %3>>1-%5 %5: %3+%5>>1 - SUMSUB_BA %1, %4, %2, %7 - ; %4: %2+%4 %2: %2-%4 - SUMSUB_BADC %1, %5, %4, %3, %2, %7 - ; %5: %2+%4 + (%3+%5>>1) - ; %4: %2+%4 - (%3+%5>>1) - ; %3: %2-%4 + (%3>>1-%5) - ; %2: %2-%4 - (%3>>1-%5) -%else -%ifidn %1, w - SUMSUBD2_AB %1, %3, %5, [%6], [%6+16] -%else - SUMSUBD2_AB %1, %3, %5, [%6], [%6+32] -%endif - SUMSUB_BA %1, %4, %2 - SUMSUB_BADC %1, %5, %4, %3, %2 -%endif - SWAP %2, %5, %4 - ; %2: %2+%4 + (%3+%5>>1) row0 - ; %3: %2-%4 + (%3>>1-%5) row1 - ; %4: %2-%4 - (%3>>1-%5) row2 - ; %5: %2+%4 - (%3+%5>>1) row3 -%endmacro - - -%macro LOAD_DIFF 5 -%ifidn %3, none - movh %1, %4 - movh %2, %5 - punpcklbw %1, %2 - punpcklbw %2, %2 - psubw %1, %2 -%else - movh %1, %4 - punpcklbw %1, %3 - movh %2, %5 - punpcklbw %2, %3 - psubw %1, %2 -%endif -%endmacro - -%macro STORE_DCT 6 - movq [%5+%6+ 0], m%1 - movq [%5+%6+ 8], m%2 - movq [%5+%6+16], m%3 - movq [%5+%6+24], m%4 - movhps [%5+%6+32], m%1 - movhps [%5+%6+40], m%2 - movhps [%5+%6+48], m%3 - movhps [%5+%6+56], m%4 -%endmacro - -%macro LOAD_DIFF_8x4P 7-10 r0,r2,0 ; 4x dest, 2x temp, 2x pointer, increment? - LOAD_DIFF m%1, m%5, m%7, [%8], [%9] - LOAD_DIFF m%2, m%6, m%7, [%8+r1], [%9+r3] - LOAD_DIFF m%3, m%5, m%7, [%8+2*r1], [%9+2*r3] - LOAD_DIFF m%4, m%6, m%7, [%8+r4], [%9+r5] -%if %10 - lea %8, [%8+4*r1] - lea %9, [%9+4*r3] -%endif -%endmacro - -%macro DIFFx2 6-7 - movh %3, %5 - punpcklbw %3, %4 - psraw %1, 6 - paddsw %1, %3 - movh %3, %6 - punpcklbw %3, %4 - psraw %2, 6 - paddsw %2, %3 - packuswb %2, %1 -%endmacro - -%macro STORE_DIFF 4 - movh %2, %4 - punpcklbw %2, %3 - psraw %1, 6 - paddsw %1, %2 - packuswb %1, %1 - movh %4, %1 -%endmacro - -%macro STORE_DIFFx2 8 ; add1, add2, reg1, reg2, zero, shift, source, stride - movh %3, [%7] - movh %4, [%7+%8] - psraw %1, %6 - psraw %2, %6 - punpcklbw %3, %5 - punpcklbw %4, %5 - paddw %3, %1 - paddw %4, %2 - packuswb %3, %5 - packuswb %4, %5 - movh [%7], %3 - movh [%7+%8], %4 -%endmacro - -%macro PMINUB 3 ; dst, src, ignored -%if cpuflag(mmxext) - pminub %1, %2 -%else ; dst, src, tmp - mova %3, %1 - psubusb %3, %2 - psubb %1, %3 -%endif -%endmacro - -%macro SPLATW 2-3 0 -%if mmsize == 16 - pshuflw %1, %2, (%3)*0x55 - punpcklqdq %1, %1 -%elif cpuflag(mmxext) - pshufw %1, %2, (%3)*0x55 -%else - %ifnidn %1, %2 - mova %1, %2 - %endif - %if %3 & 2 - punpckhwd %1, %1 - %else - punpcklwd %1, %1 - %endif - %if %3 & 1 - punpckhwd %1, %1 - %else - punpcklwd %1, %1 - %endif -%endif -%endmacro - -%macro SPLATD 1 -%if mmsize == 8 - punpckldq %1, %1 -%elif cpuflag(sse2) - pshufd %1, %1, 0 -%elif cpuflag(sse) - shufps %1, %1, 0 -%endif -%endmacro - -%macro CLIPW 3 ;(dst, min, max) - pmaxsw %1, %2 - pminsw %1, %3 -%endmacro - -%macro PMINSD_MMX 3 ; dst, src, tmp - mova %3, %2 - pcmpgtd %3, %1 - pxor %1, %2 - pand %1, %3 - pxor %1, %2 -%endmacro - -%macro PMAXSD_MMX 3 ; dst, src, tmp - mova %3, %1 - pcmpgtd %3, %2 - pand %1, %3 - pandn %3, %2 - por %1, %3 -%endmacro - -%macro CLIPD_MMX 3-4 ; src/dst, min, max, tmp - PMINSD_MMX %1, %3, %4 - PMAXSD_MMX %1, %2, %4 -%endmacro - -%macro CLIPD_SSE2 3-4 ; src/dst, min (float), max (float), unused - cvtdq2ps %1, %1 - minps %1, %3 - maxps %1, %2 - cvtps2dq %1, %1 -%endmacro - -%macro CLIPD_SSE41 3-4 ; src/dst, min, max, unused - pminsd %1, %3 - pmaxsd %1, %2 -%endmacro - -%macro VBROADCASTSS 2 ; dst xmm/ymm, src m32 -%if cpuflag(avx) - vbroadcastss %1, %2 -%else ; sse - movss %1, %2 - shufps %1, %1, 0 -%endif -%endmacro - -%macro VBROADCASTSD 2 ; dst xmm/ymm, src m64 -%if cpuflag(avx) && mmsize == 32 - vbroadcastsd %1, %2 -%elif cpuflag(sse3) - movddup %1, %2 -%else ; sse2 - movsd %1, %2 - movlhps %1, %1 -%endif -%endmacro - -%macro SHUFFLE_MASK_W 8 - %rep 8 - %if %1>=0x80 - db %1, %1 - %else - db %1*2 - db %1*2+1 - %endif - %rotate 1 - %endrep -%endmacro - -%macro PMOVSXWD 2; dst, src -%if cpuflag(sse4) - pmovsxwd %1, %2 -%else - %ifnidn %1, %2 - mova %1, %2 - %endif - punpcklwd %1, %1 - psrad %1, 16 -%endif -%endmacro - -; Wrapper for non-FMA version of fmaddps -%macro FMULADD_PS 5 - %if cpuflag(fma3) || cpuflag(fma4) - fmaddps %1, %2, %3, %4 - %elifidn %1, %4 - mulps %5, %2, %3 - addps %1, %4, %5 - %else - mulps %1, %2, %3 - addps %1, %4 - %endif -%endmacro diff --git a/media/libav/moz-libav.patch b/media/libav/moz-libav.patch deleted file mode 100644 index 5179e777c..000000000 --- a/media/libav/moz-libav.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/media/libav/libavutil/internal.h b/media/libav/libavutil/internal.h -index aed9925..03ee543 100644 ---- a/media/libav/libavutil/internal.h -+++ b/media/libav/libavutil/internal.h -@@ -134,7 +134,7 @@ - - #include "libm.h" - --#if defined(_MSC_VER) -+#if defined(_MSC_VER) && _MSC_VER < 1800 - #pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_strtod") - #pragma comment(linker, "/include:"EXTERN_PREFIX"avpriv_snprintf") - #endif diff --git a/media/libav/moz.build b/media/libav/moz.build deleted file mode 100644 index e6daba42a..000000000 --- a/media/libav/moz.build +++ /dev/null @@ -1,75 +0,0 @@ -# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -# Due to duplicate file names, we compile libavutil/x86/cpu.c in its own -# moz.build file. -DIRS += ['libavutil/x86'] - -EXPORTS.libavcodec += [ - 'libavcodec/avfft.h', - 'libavcodec/fft.h' -] - -EXPORTS.libavutil += [ - 'libavutil/mem.h' -] - -# These sources can't be unified because of macro name conflicts or needing to -# compile asm files separately. -SOURCES += [ - 'libavcodec/avfft.c', - 'libavcodec/fft_fixed.c', - 'libavcodec/x86/fft.asm', - 'libavutil/dict.c', - 'libavutil/opt.c', - 'libavutil/x86/cpuid.asm', -] - -UNIFIED_SOURCES += [ - 'libavcodec/fft_float.c', - 'libavcodec/rdft.c', - 'libavcodec/x86/fft_init.c', - 'libavutil/avstring.c', - 'libavutil/cpu.c', - 'libavutil/error.c', - 'libavutil/eval.c', - 'libavutil/file.c', - 'libavutil/file_open.c', - 'libavutil/intmath.c', - 'libavutil/log.c', - 'libavutil/log2_tab.c', - 'libavutil/mathematics.c', - 'libavutil/mem.c', - 'libavutil/parseutils.c', - 'libavutil/random_seed.c', - 'libavutil/rational.c', - 'libavutil/sha.c', -] - -# Dummy functions are required for windows NoOpt/PGO builds. -if CONFIG['_MSC_VER']: - UNIFIED_SOURCES += [ - 'avfft_dummy_funcs.c' - ] - -# OS X requires a special header to make sure symbols are exported publicly in -# the lgpl shared library, since it does not yet use system headers. This is -# also used on linux for the time being, to avoid having to patch libav code. -# -# TODO: Remove header and patch libav once OS X supports system headers -if CONFIG['OS_ARCH'] != 'WINNT': - SOURCES['libavcodec/avfft.c'].flags += ['-include', 'avfft_perms.h'] - -# We allow warnings for third-party code that can be updated from upstream. -ALLOW_COMPILER_WARNINGS = True - -if CONFIG['MOZ_DEBUG']: - # Enable all assertions in debug builds. - DEFINES['ASSERT_LEVEL'] = 2 -elif not CONFIG['RELEASE_OR_BETA']: - # Enable fast assertions in opt builds of Nightly and Aurora. - DEFINES['ASSERT_LEVEL'] = 1 - -include("libavcommon.mozbuild") |