From: Michael Dale Date: Tue, 24 Nov 2009 19:56:10 +0000 (+0000) Subject: * moved "binPlayers" into libEmbedVideo (more modular folder layout) X-Git-Tag: 1.31.0-rc.0~38721 X-Git-Url: http://git.cyclocoop.org/%22.%24h.%22?a=commitdiff_plain;h=c64299e506663d331c6a5692e45e76c46e105371;p=lhc%2Fweb%2Fwiklou.git * moved "binPlayers" into libEmbedVideo (more modular folder layout) --- diff --git a/js2/mwEmbed/binPlayers/cortado/README b/js2/mwEmbed/binPlayers/cortado/README deleted file mode 100644 index 9b2c1eafcb..0000000000 --- a/js2/mwEmbed/binPlayers/cortado/README +++ /dev/null @@ -1 +0,0 @@ -This version of cortado comes form http://theora.org/cortado.jar diff --git a/js2/mwEmbed/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar b/js2/mwEmbed/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar deleted file mode 100644 index 02c541f44b..0000000000 Binary files a/js2/mwEmbed/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/LICENSE.txt b/js2/mwEmbed/binPlayers/flowplayer/LICENSE.txt deleted file mode 100644 index 20d40b6bce..0000000000 --- a/js2/mwEmbed/binPlayers/flowplayer/LICENSE.txt +++ /dev/null @@ -1,674 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 3, 29 June 2007 - - Copyright (C) 2007 Free Software Foundation, Inc. - 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. - - - Copyright (C) - - 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 . - -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: - - Copyright (C) - 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 -. - - 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 -. \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/flowplayer/README.txt b/js2/mwEmbed/binPlayers/flowplayer/README.txt deleted file mode 100644 index 22624edd9e..0000000000 --- a/js2/mwEmbed/binPlayers/flowplayer/README.txt +++ /dev/null @@ -1,52 +0,0 @@ -Version history: - -RC2 ---- -- fixed: setting the screen height in configuration did not have any effect - -RC1 ------ -- better error message if plugin loading fails, shows the URL used -- validates our redesigned multidomain license key correctly -- fix to prevent the play button going visible when the onBufferEmpty event occurs -- the commercial swf now correctly loads the controls using version information -- fixed: the play button overlay became invisible with long fadeOutSpeeds - -beta6 ------ -- removed the onFirstFramePause event -- playing a clip for the second time caused a doubled sound -- pausing on first frame did not work on some FLV files - -beta5 ------ -- logo only uses percentage scaling if it's a SWF file (there is ".swf" in it's url) -- context menu now correctly builds up from string entries in configuration --always closes the previous connection before starting a new clip - -beta4 ------ -- now it's possible to load a plugin into the panel without specifying any position/dimensions - information, the plugin is placed to left: "50%", top: "50%" and using the plugin DisplayObject's width & height -- The Flowplayer API was not fully initialized when onLoad was invoked on Flash plugins - -beta3 ------ -- tweaking logo placement -- "play" did not show up after repeated pause/resume -- player now loads the latest controls SWF version, right now the latest SWF is called 'flowplayer.controls-3.0.0-beta2.swf' - -beta2 ------ -- fixed support for RTMP stream groups -- changed to loop through available fonts in order to find a suitable font also in IE -- Preloader was broken on IE: When the player SWf was in browser's cache it did not initialize properly -- Context menu now correctly handles menu items that are configured by their string labels only (not using json objects) -- fixed custom logo positioning (was moved to the left edge of screen in fullscreen) -- "play" now always follows the position and size of the screen -- video was stretched below the controls in fullscreen when autoHide: 'never' -- logo now takes 6.5% of the screen height, width is scaled so that the aspect ratio is preserved - -beta1 ------ -- First public beta release diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js b/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js deleted file mode 100644 index 52f2780764..0000000000 --- a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js +++ /dev/null @@ -1,1520 +0,0 @@ -/** - * flowplayer.js 3.0.0-rc2. The Flowplayer API. - * - * This file is part of Flowplayer, http://flowplayer.org - * - * Author: Tero Piirainen, - * Copyright (c) 2008 Flowplayer Ltd - * - * Released under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - * Version: 3.0.0-rc2 - Fri Nov 07 2008 16:50:59 GMT-0000 (GMT+00:00) - */ -(function() { - -/* - FEATURES - -------- - - handling multiple instances - - Flowplayer programming API - - Flowplayer event model - - player loading / unloading - - $f() function - - jQuery support -*/ - - -/*jslint glovar: true, browser: true */ -/*global flowplayer, $f */ - -// {{{ private utility methods - - function log(args) { - - // write into opera console - if (typeof opera == 'object') { - opera.postError("$f.fireEvent: " + args.join(" | ")); - - - } else if (typeof console == 'object') { - console.log("$f.fireEvent", [].slice.call(args)); - } - } - - - // thanks: http://keithdevens.com/weblog/archive/2007/Jun/07/javascript.clone - function clone(obj) { - if (!obj || typeof obj != 'object') { return obj; } - var temp = new obj.constructor(); - for (var key in obj) { - if (obj.hasOwnProperty(key)) { - temp[key] = clone(obj[key]); - } - } - return temp; - } - - // stripped from jQuery, thanks John Resig - function each(obj, fn) { - if (!obj) { return; } - - var name, i = 0, length = obj.length; - - // object - if (length === undefined) { - for (name in obj) { - if (fn.call(obj[name], name, obj[name]) === false) { break; } - } - - // array - } else { - for (var value = obj[0]; - i < length && fn.call( value, i, value ) !== false; value = obj[++i]) { - } - } - - return obj; - } - - - // convenience - function el(id) { - return document.getElementById(id); - } - - - // used extensively. a very simple implementation. - function extend(to, from, skipFuncs) { - if (to && from) { - each(from, function(name, value) { - if (!skipFuncs || typeof value != 'function') { - to[name] = value; - } - }); - } - } - - // var arr = select("elem.className"); - function select(query) { - var index = query.indexOf("."); - if (index != -1) { - var tag = query.substring(0, index) || "*"; - var klass = query.substring(index + 1, query.length); - var els = []; - each(document.getElementsByTagName(tag), function() { - if (this.className && this.className.indexOf(klass) != -1) { - els.push(this); - } - }); - return els; - } - } - - // fix event inconsistencies across browsers - function stopEvent(e) { - e = e || window.event; - - if (e.preventDefault) { - e.stopPropagation(); - e.preventDefault(); - - } else { - e.returnValue = false; - e.cancelBubble = true; - } - return false; - } - - // push an event listener into existing array of listeners - function bind(to, evt, fn) { - to[evt] = to[evt] || []; - to[evt].push(fn); - } - - - // generates an unique id - function makeId() { - return "_" + ("" + Math.random()).substring(2, 10); - } - -//}}} - - -// {{{ Clip - - var Clip = function(json, index, player) { - - // private variables - var self = this; - var cuepoints = {}; - var listeners = {}; - this.index = index; - - // instance variables - if (typeof json == 'string') { - json = {url:json}; - } - - extend(this, json, true); - - // event handling - each(("Start*,MetaData,Pause*,Resume*,Seek*,Stop*,Finish,LastSecond,Update,BufferFull,BufferEmpty").split(","), - function() { - - var evt = "on" + this; - - // before event - if (evt.indexOf("*") != -1) { - evt = evt.substring(0, evt.length -1); - var before = "onBefore" + evt.substring(2); - - self[before] = function(fn) { - bind(listeners, before, fn); - return self; - }; - } - - self[evt] = function(fn) { - bind(listeners, evt, fn); - return self; - }; - - - // set common clip event listeners to player level - if (index == -1) { - if (self[before]) { - player[before] = self[before]; - } - if (self[evt]) { - player[evt] = self[evt]; - } - } - - }); - - extend(this, { - - - onCuepoint: function(points, fn) { - - // embedded cuepoints - if (arguments.length == 1) { - cuepoints.embedded = [null, points]; - return self; - } - - if (typeof points == 'number') { - points = [points]; - } - - var fnId = makeId(); - cuepoints[fnId] = [points, fn]; - - if (player.isLoaded()) { - player._api().fp_addCuepoints(points, index, fnId); - } - - return self; - }, - - update: function(json) { - extend(self, json); - - if (player.isLoaded()) { - player._api().fp_updateClip(json, index); - } - var conf = player._config(); - var clip = (index == -1) ? conf.clip : conf.playlist[index]; - extend(clip, json, true); - }, - - - // internal event for performing clip tasks. should be made private someday - _fireEvent: function(evt, arg1, arg2, target) { - - if (evt == 'onLoad') { - each(cuepoints, function(key, val) { - player._api().fp_addCuepoints(val[0], index, key); - }); - return false; - } - - // target clip we are working against - if (index != -1) { - target = self; - } - - if (evt == 'onCuepoint') { - var fn = cuepoints[arg1]; - if (fn) { - return fn[1].call(player, target, arg2); - } - } - - if (evt == 'onMetaData' || evt == 'onUpdate') { - - extend(target, arg1); - - if (!target.duration) { - target.duration = arg1.metaData.duration; - } else { - target.fullDuration = arg1.metaData.duration; - } - } - - var ret = true; - each(listeners[evt], function() { - ret = this.call(player, target, arg1); - }); - return ret; - } - - }); - - - // get cuepoints from config - if (json.onCuepoint) { - self.onCuepoint.apply(self, json.onCuepoint); - delete json.onCuepoint; - } - - // get other events - each(json, function(key, val) { - if (typeof val == 'function') { - bind(listeners, key, val); - delete json[key]; - } - }); - - - // setup common clip event callbacks for Player object too (shortcuts) - if (index == -1) { - player.onCuepoint = this.onCuepoint; - } - - }; - -//}}} - - -// {{{ Plugin - - var Plugin = function(name, json, player, fn) { - - var listeners = {}; - var self = this; - var hasMethods = false; - - if (fn) { - extend(listeners, fn); - } - - // custom callback functions in configuration - each(json, function(key, val) { - if (typeof val == 'function') { - listeners[key] = val; - delete json[key]; - } - }); - - // core plugin methods - extend(this, { - - animate: function(props, speed, fn) { - if (!props) { - return self; - } - - if (typeof speed == 'function') { - fn = speed; - speed = 500; - } - - if (typeof props == 'string') { - var key = props; - props = {}; - props[key] = speed; - speed = 500; - } - - if (fn) { - var fnId = makeId(); - listeners[fnId] = fn; - } - - if (speed === undefined) { speed = 500; } - json = player._api().fp_animate(name, props, speed, fnId); - return self; - }, - - css: function(props, val) { - if (val !== undefined) { - var css = {}; - css[props] = val; - props = css; - } - json = player._api().fp_css(name, props); - extend(self, json); - return self; - }, - - show: function() { - this.display = 'block'; - player._api().fp_showPlugin(name); - return self; - }, - - hide: function() { - this.display = 'none'; - player._api().fp_hidePlugin(name); - return self; - }, - - toggle: function() { - this.display = player._api().fp_togglePlugin(name); - return self; - }, - - fadeTo: function(o, speed, fn) { - - if (typeof speed == 'function') { - fn = speed; - speed = 500; - } - - if (fn) { - var fnId = makeId(); - listeners[fnId] = fn; - } - this.display = player._api().fp_fadeTo(name, o, speed, fnId); - this.opacity = o; - return self; - }, - - fadeIn: function(speed, fn) { - return self.fadeTo(1, speed, fn); - }, - - fadeOut: function(speed, fn) { - return self.fadeTo(0, speed, fn); - }, - - getName: function() { - return name; - }, - - - // internal method not meant to be used by clients - _fireEvent: function(evt, arg) { - - - // update plugins properties & methods - if (evt == 'onUpdate') { - var json = arg || player._api().fp_getPlugin(name); - if (!json) { return; } - - extend(self, json); - delete self.methods; - - if (!hasMethods) { - each(json.methods, function() { - var method = "" + this; - - self[method] = function() { - var a = [].slice.call(arguments); - var ret = player._api().fp_invoke(name, method, a); - return ret == 'undefined' ? self : ret; - }; - }); - hasMethods = true; - } - } - - // plugin callbacks - var fn = listeners[evt]; - - if (fn) { - - fn.call(self, arg); - - // "one-shot" callback - if (evt.substring(0, 1) == "_") { - delete listeners[evt]; - } - } - } - - }); - - }; - - -//}}} - - -function Player(wrapper, params, conf) { - - // private variables (+ arguments) - var - self = this, - api = null, - html, - commonClip, - playlist = [], - plugins = {}, - listeners = {}, - playerId, - apiId, - activeIndex, - swfHeight; - - -// {{{ public methods - - extend(self, { - - id: function() { - return playerId; - }, - - isLoaded: function() { - return (api !== null); - }, - - getParent: function() { - return wrapper; - }, - - hide: function() { - if (api) { api.style.height = "0px"; } - return self; - }, - - show: function() { - if (api) { api.style.height = swfHeight + "px"; } - return self; - }, - - isHidden: function() { - return api && parseInt(api.style.height, 10) === 0; - }, - - - load: function(fn) { - - if (!api && self._fireEvent("onBeforeLoad") !== false) { - - // unload all instances - each(players, function() { - this.unload(); - }); - - html = wrapper.innerHTML; - flashembed(wrapper, params, {config: conf}); - - // function argument - if (fn) { - fn.cached = true; - bind(listeners, "onLoad", fn); - } - } - - return self; - }, - - unload: function() { - - if (api && html.replace(/\s/g, '') !== '' && !api.fp_isFullscreen() && - self._fireEvent("onBeforeUnload") !== false) { - api.fp_close(); - wrapper.innerHTML = html; - self._fireEvent("onUnload"); - api = null; - } - - return self; - }, - - getClip: function(index) { - if (index === undefined) { - index = activeIndex; - } - return playlist[index]; - }, - - - getCommonClip: function() { - return commonClip; - }, - - getPlaylist: function() { - return playlist; - }, - - getPlugin: function(name) { - var plugin = plugins[name]; - - // create plugin if nessessary - if (!plugin && self.isLoaded()) { - var json = self._api().fp_getPlugin(name); - if (json) { - plugin = new Plugin(name, json, self); - plugins[name] = plugin; - } - } - return plugin; - }, - - getScreen: function() { - return self.getPlugin("screen"); - }, - - getControls: function() { - return self.getPlugin("controls"); - }, - - getConfig: function() { - return clone(conf); - }, - - getFlashParams: function() { - return params; - }, - - loadPlugin: function(name, url, props, fn) { - - // properties not supplied - if (typeof props == 'function') { - fn = props; - props = {}; - } - - // if fn not given, make a fake id so that plugin's onUpdate get's fired - var fnId = fn ? makeId() : "_"; - self._api().fp_loadPlugin(name, url, props, fnId); - - // create new plugin - var arg = {}; - arg[fnId] = fn; - var p = new Plugin(name, null, self, arg); - plugins[name] = p; - return p; - }, - - - getState: function() { - return api ? api.fp_getState() : -1; - }, - - // "lazy" play - play: function(clip) { - - function play() { - if (clip !== undefined) { - self._api().fp_play(clip); - } else { - self._api().fp_play(); - } - } - - if (api) { - play(); - - } else { - self.load(function() { - play(); - }); - } - - return self; - }, - - getVersion: function() { - var js = "flowplayer.js 3.0.0-rc2"; - if (api) { - var ver = api.fp_getVersion(); - ver.push(js); - return ver; - } - return js; - }, - - _api: function() { - if (!api) { - throw "Flowplayer " +self.id()+ " not loaded. Try moving your call to player's onLoad event"; - } - return api; - }, - - _config: function() { - return conf; - } - - }); - - - // event handlers - each(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,Fullscreen*,FullscreenExit,Error").split(","), - function() { - var name = "on" + this; - - // before event - if (name.indexOf("*") != -1) { - name = name.substring(0, name.length -1); - var name2 = "onBefore" + name.substring(2); - self[name2] = function(fn) { - bind(listeners, name2, fn); - return self; - }; - } - - // normal event - self[name] = function(fn) { - bind(listeners, name, fn); - return self; - }; - } - ); - - - // core API methods - each(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,reset").split(","), - function() { - var name = this; - - self[name] = function(arg) { - if (!api) { return self; } - var ret = (arg === undefined) ? api["fp_" + name]() : api["fp_" + name](arg); - return ret == 'undefined' ? self : ret; - }; - } - ); - -//}}} - - -// {{{ public method: _fireEvent - - self._fireEvent = function(evt, arg0, arg1, arg2) { - - if (conf.debug) { - log(arguments); - } - - // internal onLoad - if (evt == 'onLoad' && !api) { - - api = api || el(apiId); - swfHeight = api.clientHeight; - - each(playlist, function() { - this._fireEvent("onLoad"); - }); - - each(plugins, function(name, p) { - p._fireEvent("onUpdate"); - }); - - - commonClip._fireEvent("onLoad"); - } - - if (evt == 'onContextMenu') { - each(conf.contextMenu[arg0], function(key, fn) { - fn.call(self); - }); - return; - } - - if (evt == 'onPluginEvent') { - var name = arg0.name || arg0; - var p = plugins[name]; - if (p) { - if (arg0.name) { - p._fireEvent("onUpdate", arg0); - } - p._fireEvent(arg1); - } - return; - } - - // onPlaylistReplace - if (evt == 'onPlaylistReplace') { - playlist = []; - var index = 0; - each(arg0, function() { - playlist.push(new Clip(this, index++)); - }); - } - - var ret = true; - - // clip event - if (arg0 === 0 || (arg0 && arg0 >= 0)) { - - activeIndex = arg0; - var clip = playlist[arg0]; - - if (!clip || clip._fireEvent(evt, arg1, arg2) !== false) { - - // clip argument is given for common clip, because it behaves as the target - ret = commonClip._fireEvent(evt, arg1, arg2, clip); - } - } - - // player event - var i = 0; - each(listeners[evt], function() { - ret = this.call(self, arg0); - - // remove cached entry - if (this.cached) { - listeners[evt].splice(i, 1); - } - - // break loop - if (ret === false) { return false; } - i++; - - }); - - return ret; - }; - -//}}} - - -// {{{ init - - function init() { - - if ($f(wrapper)) { - return null; - } - - // register this player into global array of instances - players.push(self); - - - // flashembed parameters - if (typeof params == 'string') { - params = {src: params}; - } - - // playerId - playerId = wrapper.id || "fp" + makeId(); - apiId = params.id || playerId + "_api"; - params.id = apiId; - conf.playerId = playerId; - - - // plain url is given as config - if (typeof conf == 'string') { - conf = {clip:{url:conf}}; - } - - // common clip is always there - conf.clip = conf.clip || {}; - commonClip = new Clip(conf.clip, -1, self); - - - // wrapper href as playlist - if (wrapper.getAttribute("href")) { - conf.playlist = [{url:wrapper.getAttribute("href", 2)}]; - } - - // playlist - conf.playlist = conf.playlist || [conf.clip]; - - var index = 0; - each(conf.playlist, function() { - - var clip = this; - - // clip is an array, we don't allow that - if (typeof clip == 'object' && clip.length) { - clip = "" + clip; - } - - if (!clip.url && typeof clip == 'string') { - clip = {url: clip}; - } - - // populate common clip properties to each clip - extend(clip, conf.clip, true); - - // modify configuration playlist - conf.playlist[index] = clip; - - // populate playlist array - clip = new Clip(clip, index, self); - playlist.push(clip); - index++; - }); - - - // event listeners - each(conf, function(key, val) { - if (typeof val == 'function') { - bind(listeners, key, val); - delete conf[key]; - } - }); - - - // plugins - each(conf.plugins, function(name, val) { - if (val) { - plugins[name] = new Plugin(name, val, self); - } - }); - - - // setup controlbar plugin if not explicitly defined - if (!conf.plugins || conf.plugins.controls === undefined) { - plugins.controls = new Plugin("controls", null, self); - } - - // Flowplayer uses black background by default - params.bgcolor = params.bgcolor || "#000000"; - - - // setup default settings for express install - params.version = params.version || [9,0]; - params.expressInstall = 'http://www.flowplayer.org/swf/expressinstall.swf'; - - - // click function - function doClick(e) { - if (self._fireEvent("onBeforeClick") !== false) { - self.load(); - } - return stopEvent(e); - } - - // defer loading upon click - html = wrapper.innerHTML; - if (html.replace(/\s/g, '') !== '') { - - if (wrapper.addEventListener) { - wrapper.addEventListener("click", doClick, false); - - } else if (wrapper.attachEvent) { - wrapper.attachEvent("onclick", doClick); - } - - // player is loaded upon page load - } else { - - // prevent default action from wrapper (safari problem) loaded - if (wrapper.addEventListener) { - wrapper.addEventListener("click", stopEvent, false); - } - - // load player - self.load(); - } - - } - - // possibly defer initialization until DOM get's loaded - if (typeof wrapper == 'string') { - flashembed.domReady(function() { - var node = el(wrapper); - - if (!node) { - throw "Flowplayer cannot access element: " + wrapper; - } else { - wrapper = node; - init(); - } - }); - - // we have a DOM element so page is already loaded - } else { - init(); - } - - -//}}} - - -} - - -// {{{ flowplayer() & statics - -// container for player instances -var players = []; - - -// this object is returned when multiple player's are requested -function Iterator(arr) { - - this.length = arr.length; - - this.each = function(fn) { - each(arr, fn); - }; - - this.size = function() { - return arr.length; - }; -} - -// these two variables are the only global variables -window.flowplayer = window.$f = function() { - - var instance = null; - var arg = arguments[0]; - - - // $f() - if (!arguments.length) { - each(players, function() { - if (this.isLoaded()) { - instance = this; - return false; - } - }); - - return instance || players[0]; - } - - if (arguments.length == 1) { - - // $f(index); - if (typeof arg == 'number') { - return players[arg]; - - - // $f(wrapper || 'containerId' || '*'); - } else { - - // $f("*"); - if (arg == '*') { - return new Iterator(players); - } - - // $f(wrapper || 'containerId'); - each(players, function() { - if (this.id() == arg.id || this.id() == arg || this.getParent() == arg) { - instance = this; - return false; - } - }); - - return instance; - } - } - - // instance builder - if (arguments.length > 1) { - - var swf = arguments[1]; - var conf = (arguments.length == 3) ? arguments[2] : {}; - - if (typeof arg == 'string') { - - // select arg by classname - if (arg.indexOf(".") != -1) { - var instances = []; - - each(select(arg), function() { - instances.push(new Player(this, clone(swf), clone(conf))); - }); - - return new Iterator(instances); - - // select node by id - } else { - var node = el(arg); - return new Player(node !== null ? node : arg, swf, conf); - } - - - // arg is a DOM element - } else if (arg) { - return new Player(arg, swf, conf); - } - - } - - return null; -}; - -extend(window.$f, { - - // called by Flash External Interface - fireEvent: function(id, evt, a0, a1, a2) { - var p = $f(id); - return p ? p._fireEvent(evt, a0, a1, a2) : null; - }, - - - // create plugins by modifying Player's prototype - addPlugin: function(name, fn) { - Player.prototype[name] = fn; - return $f; - }, - - // utility methods for plugin developers - each: each, - - extend: extend - -}); - -//}}} - - -//{{{ jQuery support - -if (typeof jQuery == 'function') { - - jQuery.prototype.flowplayer = function(params, conf) { - - // select instances - if (!arguments.length || typeof arguments[0] == 'number') { - var arr = []; - this.each(function() { - var p = $f(this); - if (p) { - arr.push(p); - } - }); - return arguments.length ? arr[arguments[0]] : new Iterator(arr); - } - - // create flowplayer instances - return this.each(function() { - $f(this, clone(params), conf ? clone(conf) : {}); - }); - - }; - -} - -//}}} - - -})(); -/** - * flashembed 0.33. Adobe Flash embedding script - * - * http://flowplayer.org/tools/flash-embed.html - * - * Copyright (c) 2008 Tero Piirainen (support@flowplayer.org) - * - * Released under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - * >> Basically you can do anything you want but leave this header as is << - * - * first version 0.01 - 03/11/2008 - * version 0.33 - Mon Nov 03 2008 15:37:15 GMT-0000 (GMT+00:00) - */ -(function() { - -//{{{ utility functions - -var jQ = typeof jQuery == 'function'; - - -// from "Pro JavaScript techniques" by John Resig -function isDomReady() { - if (domReady.done) { return false; } - - var d = document; - if (d && d.getElementsByTagName && d.getElementById && d.body) { - clearInterval(domReady.timer); - domReady.timer = null; - - for (var i = 0; i < domReady.ready.length; i++) { - domReady.ready[i].call(); - } - - domReady.ready = null; - domReady.done = true; - } -} - -// if jQuery is present, use it's more effective domReady method -var domReady = jQ ? jQuery : function(f) { - - if (domReady.done) { - return f(); - } - - if (domReady.timer) { - domReady.ready.push(f); - - } else { - domReady.ready = [f]; - domReady.timer = setInterval(isDomReady, 13); - } -}; - - -// override extend params function -function extend(to, from) { - if (from) { - for (key in from) { - if (from.hasOwnProperty(key)) { - to[key] = from[key]; - } - } - } -} - - -function concatVars(vars) { - var out = ""; - - for (var key in vars) { - if (vars[key]) { - out += [key] + '=' + toString(vars[key]) + '&'; - } - } - return out.substring(0, out.length -1); -} - - - -// JSON.toString() function -function toString(obj) { - - switch (typeOf(obj)){ - case 'string': - obj = obj.replace(new RegExp('(["\\\\])', 'g'), '\\$1'); - - // flash does not handle %- characters well. transforms "50%" to "50pct" (a dirty hack, I admit) - obj = obj.replace(/^\s?(\d+)%/, "$1pct"); - return '"' +obj+ '"'; - - case 'array': - return '['+ map(obj, function(el) { - return toString(el); - }).join(',') +']'; - - case 'function': - return '"function()"'; - - case 'object': - var str = []; - for (var prop in obj) { - if (obj.hasOwnProperty(prop)) { - str.push('"'+prop+'":'+ toString(obj[prop])); - } - } - return '{'+str.join(',')+'}'; - } - - // replace ' --> " and remove spaces - return String(obj).replace(/\s/g, " ").replace(/\'/g, "\""); -} - - -// private functions -function typeOf(obj) { - if (obj === null || obj === undefined) { return false; } - var type = typeof obj; - return (type == 'object' && obj.push) ? 'array' : type; -} - - -// version 9 bugfix: (http://blog.deconcept.com/2006/07/28/swfobject-143-released/) -if (window.attachEvent) { - window.attachEvent("onbeforeunload", function() { - __flash_unloadHandler = function() {}; - __flash_savedUnloadHandler = function() {}; - }); -} - -function map(arr, func) { - var newArr = []; - for (var i in arr) { - if (arr.hasOwnProperty(i)) { - newArr[i] = func(arr[i]); - } - } - return newArr; -} - -//}}} - - -window.flashembed = function(root, userParams, flashvars) { - - -//{{{ getHTML - - function getHTML() { - - var html = ""; - if (typeof flashvars == 'function') { flashvars = flashvars(); } - - - // sometimes ie fails to load flash if it's on cache - params.src += ((params.src.indexOf("?") != -1 ? "&" : "?") + Math.random()); - - - // mozilla - if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { - - html = ''; - - params.id = params.src = params.width = params.height = null; - - for (var k in params) { - if (params[k] !== null) { - html += '\n\t'; - } - } - - if (flashvars) { - html += '\n\t'; - } - - html += ""; - if (debug) { - alert(html); - } - - } - - return html; - } - - //}}} - - -//{{{ construction - - // setup params - var params = { - - // very common params - src: '#', - width: '100%', - height: '100%', - - // flashembed specific options - version:null, - onFail:null, - expressInstall:null, - debug: false, - - // flashembed defaults - // bgcolor: 'transparent', - allowfullscreen: true, - allowscriptaccess: 'always', - quality: 'high', - type: 'application/x-shockwave-flash', - pluginspage: 'http://www.adobe.com/go/getflashplayer' - }; - - - if (typeof userParams == 'string') { - userParams = {src: userParams}; - } - - extend(params, userParams); - - var version = flashembed.getVersion(); - var required = params.version; - var express = params.expressInstall; - var debug = params.debug; - - - if (typeof root == 'string') { - var el = document.getElementById(root); - if (el) { - root = el; - } else { - domReady(function() { - flashembed(root, userParams, flashvars); - }); - return; - } - } - - if (!root) { return; } - - - // is supported - if (!required || flashembed.isSupported(required)) { - params.onFail = params.version = params.expressInstall = params.debug = null; - - // root.innerHTML may cause broplems: http://domscripting.com/blog/display/99 - // thanks to: Ryan Rud - // var tmp = document.createElement("extradiv"); - // tmp.innerHTML = getHTML(); - // root.appendChild(tmp); - - root.innerHTML = getHTML(); - - // return our API - return root.firstChild; - - // custom fail event - } else if (params.onFail) { - var ret = params.onFail.call(params, flashembed.getVersion(), flashvars); - if (ret === true) { root.innerHTML = ret; } - - - // express install - } else if (required && express && flashembed.isSupported([6,65])) { - - extend(params, {src: express}); - - flashvars = { - MMredirectURL: location.href, - MMplayerType: 'PlugIn', - MMdoctitle: document.title - }; - - root.innerHTML = getHTML(); - - // not supported - } else { - - // minor bug fixed here 08.04.2008 (thanks JRodman) - - if (root.innerHTML.replace(/\s/g, '') !== '') { - // custom content was supplied - - } else { - root.innerHTML = - "

Flash version " + required + " or greater is required

" + - "

" + - (version[0] > 0 ? "Your version is " + version : "You have no flash plugin installed") + - "

" + - "

Download latest version from here

"; - } - } - - return root; - -//}}} - - -}; - - -//{{{ static methods - -extend(window.flashembed, { - - // arr[major, minor, fix] - getVersion: function() { - - var version = [0, 0]; - - if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { - var _d = navigator.plugins["Shockwave Flash"].description; - if (typeof _d != "undefined") { - _d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); - var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10); - var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0; - version = [_m, _r]; - } - - } else if (window.ActiveXObject) { - - try { // avoid fp 6 crashes - var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); - - } catch(e) { - try { - _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); - version = [6, 0]; - _a.AllowScriptAccess = "always"; // throws if fp < 6.47 - - } catch(ee) { - if (version[0] == 6) { return; } - } - try { - _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - } catch(eee) { - - } - - } - - if (typeof _a == "object") { - _d = _a.GetVariable("$version"); // bugs in fp 6.21 / 6.23 - if (typeof _d != "undefined") { - _d = _d.replace(/^\S+\s+(.*)$/, "$1").split(","); - version = [parseInt(_d[0], 10), parseInt(_d[2], 10)]; - } - } - } - - return version; - }, - - isSupported: function(version) { - var now = flashembed.getVersion(); - var ret = (now[0] > version[0]) || (now[0] == version[0] && now[1] >= version[1]); - return ret; - }, - - domReady: domReady, - - // returns a String representation from JSON object - toString: toString - -}); - -//}}} - - -// setup jquery support -if (jQ) { - - jQuery.prototype.flashembed = function(params, flashvars) { - return this.each(function() { - flashembed(this, params, flashvars); - }); - }; - -} - -})(); diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js b/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js deleted file mode 100644 index a0fcabd066..0000000000 --- a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js +++ /dev/null @@ -1,15 +0,0 @@ -/** - * flowplayer.js 3.0.0-rc2. The Flowplayer API. - * - * This file is part of Flowplayer, http://flowplayer.org - * - * Author: Tero Piirainen, - * Copyright (c) 2008 Flowplayer Ltd - * - * Released under the MIT License: - * http://www.opensource.org/licenses/mit-license.php - * - * Version: 3.0.0-rc2 - Fri Nov 07 2008 16:50:52 GMT-0000 (GMT+00:00) - */ -(function(){function log(args){if(typeof opera=='object'){opera.postError("$f.fireEvent: "+args.join(" | "));}else if(typeof console=='object'){console.log("$f.fireEvent",[].slice.call(args));}}function clone(obj){if(!obj||typeof obj!='object'){return obj;}var temp=new obj.constructor();for(var key in obj){if(obj.hasOwnProperty(key)){temp[key]=clone(obj[key]);}}return temp;}function each(obj,fn){if(!obj){return;}var name,i=0,length=obj.length;if(length===undefined){for(name in obj){if(fn.call(obj[name],name,obj[name])===false){break;}}}else{for(var value=obj[0];i=0)){activeIndex=arg0;var clip=playlist[arg0];if(!clip||clip._fireEvent(evt,arg1,arg2)!==false){ret=commonClip._fireEvent(evt,arg1,arg2,clip);}}var i=0;each(listeners[evt],function(){ret=this.call(self,arg0);if(this.cached){listeners[evt].splice(i,1);}if(ret===false){return false;}i++;});return ret;};function init(){if($f(wrapper)){return null;}players.push(self);if(typeof params=='string'){params={src:params};}playerId=wrapper.id||"fp"+makeId();apiId=params.id||playerId+"_api";params.id=apiId;conf.playerId=playerId;if(typeof conf=='string'){conf={clip:{url:conf}};}conf.clip=conf.clip||{};commonClip=new Clip(conf.clip,-1,self);if(wrapper.getAttribute("href")){conf.playlist=[{url:wrapper.getAttribute("href",2)}];}conf.playlist=conf.playlist||[conf.clip];var index=0;each(conf.playlist,function(){var clip=this;if(typeof clip=='object'&&clip.length){clip=""+clip;}if(!clip.url&&typeof clip=='string'){clip={url:clip};}extend(clip,conf.clip,true);conf.playlist[index]=clip;clip=new Clip(clip,index,self);playlist.push(clip);index++;});each(conf,function(key,val){if(typeof val=='function'){bind(listeners,key,val);delete conf[key];}});each(conf.plugins,function(name,val){if(val){plugins[name]=new Plugin(name,val,self);}});if(!conf.plugins||conf.plugins.controls===undefined){plugins.controls=new Plugin("controls",null,self);}params.bgcolor=params.bgcolor||"#000000";params.version=params.version||[9,0];params.expressInstall='http://www.flowplayer.org/swf/expressinstall.swf';function doClick(e){if(self._fireEvent("onBeforeClick")!==false){self.load();}return stopEvent(e);}html=wrapper.innerHTML;if(html.replace(/\s/g,'')!==''){if(wrapper.addEventListener){wrapper.addEventListener("click",doClick,false);}else if(wrapper.attachEvent){wrapper.attachEvent("onclick",doClick);}}else{if(wrapper.addEventListener){wrapper.addEventListener("click",stopEvent,false);}self.load();}}if(typeof wrapper=='string'){flashembed.domReady(function(){var node=el(wrapper);if(!node){throw"Flowplayer cannot access element: "+wrapper;}else{wrapper=node;init();}});}else{init();}}var players=[];function Iterator(arr){this.length=arr.length;this.each=function(fn){each(arr,fn);};this.size=function(){return arr.length;};}window.flowplayer=window.$f=function(){var instance=null;var arg=arguments[0];if(!arguments.length){each(players,function(){if(this.isLoaded()){instance=this;return false;}});return instance||players[0];}if(arguments.length==1){if(typeof arg=='number'){return players[arg];}else{if(arg=='*'){return new Iterator(players);}each(players,function(){if(this.id()==arg.id||this.id()==arg||this.getParent()==arg){instance=this;return false;}});return instance;}}if(arguments.length>1){var swf=arguments[1];var conf=(arguments.length==3)?arguments[2]:{};if(typeof arg=='string'){if(arg.indexOf(".")!=-1){var instances=[];each(select(arg),function(){instances.push(new Player(this,clone(swf),clone(conf)));});return new Iterator(instances);}else{var node=el(arg);return new Player(node!==null?node:arg,swf,conf);}}else if(arg){return new Player(arg,swf,conf);}}return null;};extend(window.$f,{fireEvent:function(id,evt,a0,a1,a2){var p=$f(id);return p?p._fireEvent(evt,a0,a1,a2):null;},addPlugin:function(name,fn){Player.prototype[name]=fn;return $f;},each:each,extend:extend});if(typeof jQuery=='function'){jQuery.prototype.flowplayer=function(params,conf){if(!arguments.length||typeof arguments[0]=='number'){var arr=[];this.each(function(){var p=$f(this);if(p){arr.push(p);}});return arguments.length?arr[arguments[0]]:new Iterator(arr);}return this.each(function(){$f(this,clone(params),conf?clone(conf):{});});};}})();(function(){var jQ=typeof jQuery=='function';function isDomReady(){if(domReady.done){return false;}var d=document;if(d&&d.getElementsByTagName&&d.getElementById&&d.body){clearInterval(domReady.timer);domReady.timer=null;for(var i=0;i';}else{html='';params.id=params.src=params.width=params.height=null;for(var k in params){if(params[k]!==null){html+='\n\t';}}if(flashvars){html+='\n\t';}html+="";if(debug){alert(html);}}return html;}var params={src:'#',width:'100%',height:'100%',version:null,onFail:null,expressInstall:null,debug:false,allowfullscreen:true,allowscriptaccess:'always',quality:'high',type:'application/x-shockwave-flash',pluginspage:'http://www.adobe.com/go/getflashplayer'};if(typeof userParams=='string'){userParams={src:userParams};}extend(params,userParams);var version=flashembed.getVersion();var required=params.version;var express=params.expressInstall;var debug=params.debug;if(typeof root=='string'){var el=document.getElementById(root);if(el){root=el;}else{domReady(function(){flashembed(root,userParams,flashvars);});return;}}if(!root){return;}if(!required||flashembed.isSupported(required)){params.onFail=params.version=params.expressInstall=params.debug=null;root.innerHTML=getHTML();return root.firstChild;}else if(params.onFail){var ret=params.onFail.call(params,flashembed.getVersion(),flashvars);if(ret===true){root.innerHTML=ret;}}else if(required&&express&&flashembed.isSupported([6,65])){extend(params,{src:express});flashvars={MMredirectURL:location.href,MMplayerType:'PlugIn',MMdoctitle:document.title};root.innerHTML=getHTML();}else{if(root.innerHTML.replace(/\s/g,'')!==''){}else{root.innerHTML="

Flash version "+required+" or greater is required

"+"

"+(version[0]>0?"Your version is "+version:"You have no flash plugin installed")+"

"+"

Download latest version from here

";}}return root;};extend(window.flashembed,{getVersion:function(){var version=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var _d=navigator.plugins["Shockwave Flash"].description;if(typeof _d!="undefined"){_d=_d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var _m=parseInt(_d.replace(/^(.*)\..*$/,"$1"),10);var _r=/r/.test(_d)?parseInt(_d.replace(/^.*r(.*)$/,"$1"),10):0;version=[_m,_r];}}else if(window.ActiveXObject){try{var _a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version=[6,0];_a.AllowScriptAccess="always";}catch(ee){if(version[0]==6){return;}}try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(eee){}}if(typeof _a=="object"){_d=_a.GetVariable("$version");if(typeof _d!="undefined"){_d=_d.replace(/^\S+\s+(.*)$/,"$1").split(",");version=[parseInt(_d[0],10),parseInt(_d[2],10)];}}}return version;},isSupported:function(version){var now=flashembed.getVersion();var ret=(now[0]>version[0])||(now[0]==version[0]&&now[1]>=version[1]);return ret;},domReady:domReady,toString:toString});if(jQ){jQuery.prototype.flashembed=function(params,flashvars){return this.each(function(){flashembed(this,params,flashvars);});};}})(); \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf deleted file mode 100644 index 70f6a17473..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf deleted file mode 100644 index 9c7b3b4feb..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.1.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.1.swf deleted file mode 100644 index fcb9cf5166..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer-3.0.1.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf deleted file mode 100644 index c5bec77f40..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf deleted file mode 100644 index 703a96ab51..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf deleted file mode 100644 index 9f08f4dcff..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf b/js2/mwEmbed/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf deleted file mode 100644 index 65a56059ea..0000000000 Binary files a/js2/mwEmbed/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/kaltura-player/README b/js2/mwEmbed/binPlayers/kaltura-player/README deleted file mode 100644 index 3ec87577e5..0000000000 --- a/js2/mwEmbed/binPlayers/kaltura-player/README +++ /dev/null @@ -1,11 +0,0 @@ -This Kaltura Dynamic Player +Playlist (KDP) is a sub package of the taken Kaltura Community Edition (CE) Built from Kaltura.org source. - -The full Kaltura Community Edition is licensed under the (GNU Affero General Public License v3) - -And the source code is available on the kaltura.org site: -http://www.kaltura.org/project/kalturaCE - -More info about the KDP: -http://www.kaltura.org/kdp-dynamic-player-and-playlist-widget - - diff --git a/js2/mwEmbed/binPlayers/kaltura-player/kdp.swf b/js2/mwEmbed/binPlayers/kaltura-player/kdp.swf deleted file mode 100755 index c105546577..0000000000 Binary files a/js2/mwEmbed/binPlayers/kaltura-player/kdp.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/kaltura-player/wrapper.swf b/js2/mwEmbed/binPlayers/kaltura-player/wrapper.swf deleted file mode 100755 index 812a32bc17..0000000000 Binary files a/js2/mwEmbed/binPlayers/kaltura-player/wrapper.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/omtk-fx/LICENSE.txt b/js2/mwEmbed/binPlayers/omtk-fx/LICENSE.txt deleted file mode 100644 index 878ca2a00e..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/LICENSE.txt +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "[]" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. diff --git a/js2/mwEmbed/binPlayers/omtk-fx/README.txt b/js2/mwEmbed/binPlayers/omtk-fx/README.txt deleted file mode 100644 index f8416e0a34..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/README.txt +++ /dev/null @@ -1,17 +0,0 @@ - - *** PRELIMINARY SOFTWARE *** - -Please note that this is a prerelease of the OMTK Flash library. No -quality of this software can be guaranteed. - - - *** haXe notes *** - -You need at least haXe 2.01 (with support for the new Flash 10 types) -to compile the haXe source. - - *** Flash notes *** - -I am not able to create a .SWC library from the haXe .SWF file. It's -therefore dynamically linked at runtime and hxmdct.swf must be placed -in the same directory as the "real" Flash movie. diff --git a/js2/mwEmbed/binPlayers/omtk-fx/hxmdct.swf b/js2/mwEmbed/binPlayers/omtk-fx/hxmdct.swf deleted file mode 100644 index d314dee6de..0000000000 Binary files a/js2/mwEmbed/binPlayers/omtk-fx/hxmdct.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/omtk-fx/omtkp.swf b/js2/mwEmbed/binPlayers/omtk-fx/omtkp.swf deleted file mode 100644 index 4ec9bfa7db..0000000000 Binary files a/js2/mwEmbed/binPlayers/omtk-fx/omtkp.swf and /dev/null differ diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/Player.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/Player.as deleted file mode 100644 index 6abe5d2ced..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/Player.as +++ /dev/null @@ -1,106 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package { - - import org.omtk.vorbis.VorbisSound; - - import flash.display.Shape; - import flash.display.Sprite; - import flash.display.StageAlign; - import flash.display.StageQuality; - import flash.display.StageScaleMode; - import flash.net.*; - import flash.events.Event; - import flash.text.TextField; - import flash.utils.ByteArray; - import flash.utils.Endian; - import flash.utils.getTimer; - import flash.utils.setTimeout; - import flash.utils.setInterval; - import flash.external.ExternalInterface; - - [ SWF( backgroundColor = '#ffffff', width = '1', height = '1' ) ] - - public class Player extends Sprite { - - private var sound: VorbisSound; - private var initialized: Boolean = false; - - public function Player() { - if(stage != null) { - stage.frameRate = 20; - } - - setTimeout(registerJSCallbacks, 100); - initialized = true; - } - - private function registerJSCallbacks(): void { - if (ExternalInterface.available) { - ExternalInterface.addCallback("play", playJS); - ExternalInterface.addCallback("getMetaData", getMetaDataJS); - ExternalInterface.addCallback("getPosition", getPositionJS); - } - } - - public function playJS(url: String): void { - if(sound != null) { - sound.stop(); - } - sound = new VorbisSound(new URLRequest(url)); - sound.addEventListener(Event.COMPLETE, complete); - sound.addEventListener(VorbisSound.METADATA_UPDATE, metadataUpdate); - sound.play(); - } - - public function getMetaDataJS(key: String): String { - if(sound == null) { - return null; - } - else { - return sound.getMetaData(key); - } - } - - public function getPositionJS(): int { - if(sound == null) { - return -1; - } - else { - return sound.position; - } - } - - private function complete(event: Event):void { - trace("complete"); - if(ExternalInterface.available) { - ExternalInterface.call("OMTK_P_complete"); - } - } - - private function metadataUpdate(event: Event):void { - trace("metadata update: " + sound.getMetaData("TITLE")); - if(ExternalInterface.available) { - ExternalInterface.call("OMTK_P_metadataUpdate"); - } - } - - } - -} diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as deleted file mode 100644 index 9b8a82aece..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as +++ /dev/null @@ -1,29 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.ogg { - - public class EndOfOggStreamError extends Error { - - public function EndOfOggStreamError(message:String = null) { - super(message); - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as deleted file mode 100644 index d9d5d35ac8..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as +++ /dev/null @@ -1,72 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.ogg { - - import org.omtk.util.BitByteArray; - import flash.utils.Endian; - - public class LogicalOggStream { - - private var source:UncachedUrlStream; - - private var pageIndex:int; - private var currentPage:OggPage; - private var currentSegmentIndex:int; - - public function LogicalOggStream(source:UncachedUrlStream) { - this.source = source; - } - - public function getNextOggPacket(): OggPacket { - - var res:BitByteArray = new BitByteArray(); - - var segmentLength:int = 0; - - if(currentPage == null) { - currentPage = source.getNextOggPage(); - } - - do { - if(currentSegmentIndex >= currentPage.segmentOffsets.length) { - currentSegmentIndex=0; - - if(currentPage.eos) { - throw new EndOfOggStreamError("End of OGG stream"); - } - - currentPage = source.getNextOggPage(); - } - - segmentLength = currentPage.segmentLengths[currentSegmentIndex]; - res.writeBytes(currentPage.data, currentPage.segmentOffsets[currentSegmentIndex], segmentLength); - currentSegmentIndex++; - } - while(segmentLength==255); - - res.position = 0; - - var lastPacket: Boolean = currentPage.eos && currentSegmentIndex == currentPage.segmentOffsets.length; - var lastGranulePosition: int = currentPage.absoluteGranulePosition; - - return new OggPacket(res, lastPacket, lastGranulePosition); - } - - } -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as deleted file mode 100644 index b7876ca56c..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as +++ /dev/null @@ -1,49 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.ogg { - - import org.omtk.util.BitByteArray; - - public class OggPacket { - - private var _data: BitByteArray; - private var _lastPacket: Boolean; - private var _lastGranulePosition: int; - - public function OggPacket(data: BitByteArray, lastPacket: Boolean, lastGranulePosition: int) { - _data = data; - _lastPacket = lastPacket; - _lastGranulePosition = lastGranulePosition; - } - - public function get data(): BitByteArray { - return _data; - } - - public function get lastPacket(): Boolean { - return _lastPacket; - } - - public function get lastGranulePosition(): int { - return _lastGranulePosition; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as deleted file mode 100644 index 8e90b08213..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as +++ /dev/null @@ -1,116 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.ogg { - - import flash.net.*; - import flash.utils.ByteArray; - - public class OggPage { - - private var _version:int; - private var _continued:Boolean; - private var _bos:Boolean; - private var _eos:Boolean; - private var _absoluteGranulePosition:int; - private var _streamSerialNumber:int; - private var _pageSequenceNumber:int; - private var _pageCheckSum:int; - private var _segmentOffsets:Array; - private var _segmentLengths:Array; - private var _totalLength:int; - private var _data:ByteArray; - - public function OggPage(stream:URLStream) { - - var capture:int = stream.readInt(); - if(capture != 0x5367674f) { - throw new Error("Ogg page does not start with 'OggS': "+capture); - } - - _version = stream.readByte()&0xff; - var tmp:int = stream.readByte(); - - _continued = (tmp&1)!=0;; - _bos = (tmp&2)!=0; - _eos = (tmp&4)!=0; - - // absoluteGranulePosition is really 64 bits - _absoluteGranulePosition = stream.readUnsignedInt(); - stream.readUnsignedInt(); // last 32 bits of _absoluteGranulePosition - - _streamSerialNumber = stream.readUnsignedInt(); - _pageSequenceNumber = stream.readUnsignedInt(); - _pageCheckSum = stream.readUnsignedInt(); - - //trace("_pageSequenceNumber: " + _pageSequenceNumber); - - var pageSegments:int = stream.readUnsignedByte(); - - //stream.waitFor(pageSegments); - - _segmentOffsets = []; - _segmentLengths = []; - _data = new ByteArray(); - - var totalLength:int; - - var i:int; - var l:int; - - for( i= 0 ; i < pageSegments ; i++ ) { - l = stream.readUnsignedByte(); - _segmentLengths.push( l ); - _segmentOffsets.push( totalLength ); - totalLength += l; - } - - stream.readBytes(_data, 0, totalLength); - } - - public function get absoluteGranulePosition():int { - return _absoluteGranulePosition; - } - - public function get segmentOffsets():Array { - return _segmentOffsets; - } - - public function get segmentLengths():Array { - return _segmentLengths; - } - - public function get data():ByteArray { - return _data; - } - - public function get eos():Boolean { - return _eos; - } - - public function get bos():Boolean { - return _bos; - } - - public function get continued():Boolean { - return _continued; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as deleted file mode 100644 index 6e4a34af8d..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as +++ /dev/null @@ -1,52 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.ogg { - - import flash.net.*; - import flash.utils.Endian; - import flash.events.HTTPStatusEvent; - import flash.events.ProgressEvent; - - public class UncachedUrlStream { - - private var source:URLStream; - - public function UncachedUrlStream(source: URLStream) { - this.source = source; - } - - public function get bytesAvailable():int { - return source.bytesAvailable; - } - - public function addEventListener(type:String, listener:Function):void { - source.addEventListener(type, listener); - } - - public function getLogicalOggStream():LogicalOggStream { - return new LogicalOggStream(this); - } - - public function getNextOggPage():OggPage { - return new OggPage(source); - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as deleted file mode 100644 index 3c54f6f053..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as +++ /dev/null @@ -1,75 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.util { - - import flash.utils.ByteArray; - import flash.utils.Endian; - import flash.errors.IllegalOperationError; - - public class BitByteArray extends ByteArray { - - private var currentByte:uint; - private var bitIndex:int = 8; - - public function BitByteArray() { - this.endian = Endian.LITTLE_ENDIAN; - } - - public function readBit():Boolean { - if (bitIndex > 7) { - bitIndex = 0; - currentByte = readUnsignedByte(); - } - return (currentByte & (1 << (bitIndex++))) != 0; - } - - public function readUnsignedBitwiseInt(bits:int):uint { - - var res:uint = 0; - - for (var i : int = 0; i < bits; i++) { - if (bitIndex > 7) { - bitIndex = 0; - currentByte = readUnsignedByte(); - } - if((currentByte & (1 << (bitIndex++))) != 0) { - res |= (1 << i); - } - } - - return res; - } - - public function readUnsignedHuffmanInt(root:HuffmanNode):uint { - - while (!root.hasValue) { - if (bitIndex > 7) { - bitIndex = 0; - currentByte = readUnsignedByte(); - } - root = (currentByte & (1 << (bitIndex++))) != 0 ? root._o1 : root._o0; - } - - return root._value; - } - - } - - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as deleted file mode 100644 index c8ce3ae7ea..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as +++ /dev/null @@ -1,92 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ -package org.omtk.util { - - public class HuffmanNode { - - private var _parent:HuffmanNode; - - public var _o0:HuffmanNode; - public var _o1:HuffmanNode; - - private var _depth:int; - - public var _value:int; - public var hasValue: Boolean; - private var _full:Boolean = false; - - public function HuffmanNode(parent:HuffmanNode = null, value:int = -1) { - _parent = parent; - if(_parent != null) { - _depth = _parent.depth+1; - } - _value = value; - _full = value >= 0; - hasValue = value >= 0; - } - - public function setNewValue(depth:int, value:uint):Boolean { - if (full) { - return false; - } - if (depth == 1) { - if (_o0 == null) { - _o0 = new HuffmanNode(this, value); - return true; - } else if (_o1 == null) { - _o1 = new HuffmanNode(this, value); - return true; - } else { - return false; - } - } else { - return o0.setNewValue(depth - 1, value) - ? true : o1.setNewValue(depth - 1, value); - } - } - - public function get value():uint { - return _value; - } - - public function get o0():HuffmanNode { - if(_o0 == null) { - _o0 = new HuffmanNode(this); - } - return _o0; - } - - public function get o1():HuffmanNode { - if(_o1 == null) { - _o1 = new HuffmanNode(this); - } - return _o1; - } - - public function get depth():int { - return _depth; - } - - public function get full():Boolean { - return _full ? true - : (_full = (_o0 != null && _o0.full && _o1 != null && _o1.full)); - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as deleted file mode 100644 index 8cec99619e..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as +++ /dev/null @@ -1,340 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.utils.getTimer; - import flash.utils.ByteArray; - import org.omtk.ogg.*; - import org.omtk.util.BitByteArray; - - public class AudioPacket { - - private var modeNumber:int; - private var mode:Mode; - private var mapping:Mapping; - private var n:int; - - private var blockFlag:Boolean; - private var previousWindowFlag:Boolean; - private var nextWindowFlag:Boolean; - - private var windowCenter:int; - private var leftWindowStart:int; - private var leftWindowEnd:int; - private var leftN:int; - private var rightWindowStart:int; - private var rightWindowEnd:int; - private var rightN:int; - - private var window:Vector.; - private var freq0:Vector.; - private var freq1:Vector.; - private var pcm0:Vector.; - private var pcm1:Vector.; - - private var channelFloors:Vector.; - private var noResidues:Vector.; - - private var _lastPacket: Boolean; - private var _lastGranulePosition: int; - - public function AudioPacket(vorbis:VorbisStream, packet: OggPacket, currentGranulePosition: int) { - - var source: BitByteArray = packet.data; - _lastPacket = packet.lastPacket; - _lastGranulePosition = packet.lastGranulePosition; - - var i:int; - var j:int; - var k:int; - - var sHeader:SetupHeader = vorbis.setupHeader; - var iHeader:IdentificationHeader = vorbis.identificationHeader; - var modes:Vector. = sHeader.modes; - var mappings:Vector. = sHeader.mappings; - var residues:Vector. = sHeader.residues; - var channels:int = iHeader.channels; - - if (source.readUnsignedBitwiseInt(1) != 0) { - throw new Error("Packet type mismatch when trying to create an audio packet."); - } - - modeNumber = source.readUnsignedBitwiseInt(Util.ilog(modes.length - 1)); - - mode = modes[modeNumber]; - - if(mode == null) { - throw new Error("Reference to invalid mode in audio packet."); - } - - mapping = mappings[mode.mapping]; - - var magnitudes:Vector. = mapping.magnitudes; - var angles:Vector. = mapping.angles; - - blockFlag = mode.blockFlag; - - var blockSize0:int = iHeader.blockSize0; - var blockSize1:int = iHeader.blockSize1; - - n = blockFlag ? blockSize1 : blockSize0; - - if (blockFlag) { - previousWindowFlag = source.readBit(); - nextWindowFlag = source.readBit(); - } - - windowCenter = n / 2; - - if (blockFlag && !previousWindowFlag) { - leftWindowStart = n / 4 - blockSize0 / 4; - leftWindowEnd = n / 4 + blockSize0 / 4; - leftN = blockSize0 / 2; - } else { - leftWindowStart = 0; - leftWindowEnd = n / 2; - leftN = windowCenter; - } - - if (blockFlag && !nextWindowFlag) { - rightWindowStart = n * 3 / 4 - blockSize0 / 4; - rightWindowEnd = n * 3 / 4 + blockSize0 / 4; - rightN = blockSize0 / 2; - } else { - rightWindowStart = windowCenter; - rightWindowEnd = n; - rightN = n / 2; - } - - window = getComputedWindow(vorbis); - - channelFloors = new Vector.(channels, true); - noResidues = new Vector.(channels, true); - - freq0 = new Vector.(n, true); - freq1 = new Vector.(n, true); - pcm0 = new Vector.(n, true); - pcm1 = new Vector.(n, true); - - var allFloorsEmpty: Boolean = true; - var submapNumber: int; - var floorNumber: int; - var decodedFloor: Floor; - - for(i = 0; i < channels; i++) { - submapNumber = mapping.mux[i]; - floorNumber = mapping.submapFloors[submapNumber]; - decodedFloor = sHeader.floors[floorNumber].decodeFloor(vorbis, source); - channelFloors[i] = decodedFloor; - noResidues[i] = decodedFloor == null; - if (decodedFloor != null) { - allFloorsEmpty = false; - } - } - - if(allFloorsEmpty) { - return; - } - - var mag: int; - var ang: int; - - for(i = 0; i < magnitudes.length; i++) { - mag = magnitudes[i]; - ang = angles[i]; - if (!noResidues[mag] || !noResidues[ang]) { - noResidues[mag] = false; - noResidues[ang] = false; - } - } - - var ch: int; - var doNotDecodeFlags: Vector.; - var residue:Residue; - - for(i = 0; i < mapping.submaps; i++) { - - doNotDecodeFlags = new Vector.(); - - for(j = 0; j < channels; j++) { - if(mapping.mux[j] == i) { - doNotDecodeFlags.push(noResidues[j]); - } - } - - residue = residues[mapping.submapResidues[i]]; - - residue.decodeResidue(vorbis, source, mode, ch, doNotDecodeFlags, freq0, freq1); - } - - var a: Number; - var m: Number; - - for(i = mapping.couplingSteps - 1; i >= 0; i--) { - - mag = magnitudes[i]; - ang = angles[i]; - - for (j = 0; j < freq0.length; j++) { - - a = ang == 0 ? freq0[j] : freq1[j]; - m = mag == 0 ? freq0[j] : freq1[j]; - - if(a > 0) { - if(ang == 0) { - freq0[j] = m > 0 ? m - a : m + a; - } - else { - freq1[j] = m > 0 ? m - a : m + a; - } - } - else { - if(mag == 0) { - freq0[j] = m > 0 ? m + a : m - a; - } - else { - freq1[j] = m > 0 ? m + a : m - a; - } - - if(ang == 0) { - freq0[j] = m; - } - else { - freq1[j] = m; - } - } - } - } - - if(channelFloors[0] != null) { - Floor(channelFloors[0]).computeFloor(freq0); - } - - if(channelFloors[1] != null) { - Floor(channelFloors[1]).computeFloor(freq1); - } - - // perform an inverse mdct to all channels - var mdct: Mdct = blockFlag ? iHeader.mdct1 : iHeader.mdct0; - mdct.imdct(freq0, window, pcm0); - mdct.imdct(freq1, window, pcm1); - - if(_lastPacket) { - if(leftWindowEnd - leftWindowStart > _lastGranulePosition - currentGranulePosition) { - leftWindowEnd = leftWindowStart + _lastGranulePosition - currentGranulePosition - } - if(rightWindowStart - leftWindowStart > _lastGranulePosition - currentGranulePosition) { - rightWindowStart = leftWindowStart + _lastGranulePosition - currentGranulePosition - } - } - - } - - private function getComputedWindow(vorbis:VorbisStream):Vector. { - - var i:int; - - var ix:int = (blockFlag ? 4 : 0) + (previousWindowFlag ? 2 : 0) + (nextWindowFlag ? 1 : 0); - var w:Vector. = vorbis.windows[ix]; - - var x:Number; - - if (w == null) { - w = new Vector.(n); - - for(i = 0; i < leftWindowStart; i++) { - w[i] = 0; - } - - for (i = 0; i < leftN; i++) { - x = (i + .5) / leftN * Math.PI / 2.; - x = Math.sin(x); - x *= x; - x *= Math.PI / 2.; - x = Math.sin(x); - w[i + leftWindowStart] = x; - } - - for (i = leftWindowEnd; i < rightWindowStart; i++) { - w[i] = 1; - } - - for (i = 0; i < rightN; i++) { - x = (rightN - i - .5) / rightN * Math.PI / 2.; - x = Math.sin(x); - x *= x; - x *= Math.PI / 2.; - x = Math.sin(x); - w[i + rightWindowStart] = x; - } - - for(i = rightN + rightWindowStart; i < n; i++) { - w[i] = 0; - } - - for(i = 0; i < w.length; i++) { - w[i] *= 0.5; - } - - vorbis.windows[ix] = w; - } - - return w; - } - - - public function readPcm(previousPacket:AudioPacket, target: ByteArray): int { - - var j:int; - var j2:int; - var ppcm0:Vector. = previousPacket.pcm0; - var ppcm1:Vector. = previousPacket.pcm1; - - j2 = previousPacket.rightWindowStart; - - for(j = leftWindowStart; j < leftWindowEnd; j++) { - target.writeFloat(pcm0[j] + ppcm0[j2]); - target.writeFloat(pcm1[j] + ppcm1[j2++]); - } - - for (j = leftWindowEnd; j < rightWindowStart; j++) { - target.writeFloat(pcm0[j]); - target.writeFloat(pcm1[j]); - } - - return numberOfSamples; - - } - - public function get numberOfSamples():int { - return rightWindowStart - leftWindowStart; - } - - public function get lastPacket(): Boolean { - return lastPacket; - } - - public function get lastGranulePosition(): int { - return lastGranulePosition; - } - - } - - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as deleted file mode 100644 index ed84041e08..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as +++ /dev/null @@ -1,223 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.*; - - public class CodeBook { - - private var entries:uint; - private var entryLengths:Vector.; - private var valueVector:Vector.>; - - private var codeBookLookupType:int = -1; - - public var huffmanRoot:HuffmanNode; - public var dimensions:uint; - - public function CodeBook( source: BitByteArray ) { - - var i:int; - var j:int; - - var syncPattern:uint = source.readUnsignedBitwiseInt(24); - if(syncPattern !=0x564342) { - throw new IllegalOperationError("Illegal codebook sync pattern: "+syncPattern); - } - - dimensions = source.readUnsignedBitwiseInt(16); - entries = source.readUnsignedBitwiseInt(24); - - entryLengths = new Vector.(entries); - - var ordered:Boolean = source.readBit(); - - if(ordered) { - var cl:int = source.readUnsignedBitwiseInt(5)+1; - for(i=0; ientryLengths.length) { - throw new Error("The codebook entry length list is longer than the actual number of entry lengths."); - } - for(j=i; j = new Vector.(codeBookLookupValues); - - for(i=0; i < codeBookMultiplicands.length; i++) { - codeBookMultiplicands[i]=source.readUnsignedBitwiseInt(codeBookValueBits); - } - - valueVector = new Vector.>(entries); - - if(codeBookLookupType==1) { - for(i=0; i(dimensions); - var last:Number = 0.0; - var indexDivisor:uint = 1; - for(j=0; j):Boolean { - - var i:int; - - huffmanRoot = new HuffmanNode(); - for(i=0; i0) { - if(!huffmanRoot.setNewValue(el, i)) { - return false; - } - } - } - return true; - } - - - public function readVvAdd(a0:Vector., a1:Vector., left:Boolean, right:Boolean, source:BitByteArray, offset:int, length:int):void { - - var i:int; - var j:int; - - if (!left && !right) { - return; - } - - // 1 or 2 channels - var ch:int = - left && right ? 2 : 1; - - var lim:int; - var ix:int; - var ve:Vector.; - - if(left && right) { - lim = (offset + length) / 2; - var chptr:int = 0; - for (i = offset / 2; i < lim;) { - ix = source.readUnsignedHuffmanInt(huffmanRoot); - ve = valueVector[ix]; - for (j = 0; j < dimensions; j++) { - if(chptr == 0) { - a0[i] += ve[j]; - } - else { - a1[i] += ve[j]; - } - chptr++; - if(chptr == 2) { - chptr = 0; - i++; - } - } - } - } - else { - var a : Vector. = left ? a0 : a1; - lim = offset + length; - for (i = offset; i < lim;) { - ve = valueVector[source.readUnsignedHuffmanInt(huffmanRoot)]; - for (j = 0; j < dimensions; j++) { - a[i] += ve[j]; - i++; - } - } - } - - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as deleted file mode 100644 index 6cf3bfded5..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as +++ /dev/null @@ -1,81 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.utils.ByteArray; - import flash.utils.Endian; - import flash.utils.Dictionary; - import org.omtk.ogg.*; - - public class CommentHeader { - - private var _vendor:String; - private var _comments:Dictionary = new Dictionary(); - - public function CommentHeader(source:ByteArray) - { - init( source ); - } - - private function init( source: ByteArray ): void - { - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - - _vendor = readUtf8String(source); - - var ucLength:int = source.readUnsignedInt(); - - for(var i:int = 0; i < ucLength; i++) { - var comment:String = readUtf8String(source); - var ix:int = comment.indexOf('='); - var key:String = comment.substring(0, ix); - var value:String = comment.substring(ix+1); - _comments[key.toUpperCase()]=value; - } - } - - private function readUtf8String(source:ByteArray):String { - var length:uint = source.readUnsignedInt(); - return source.readUTFBytes(length); - } - - public function get vendor():String { - return _vendor; - } - - public function get comments():Dictionary { - return _comments; - } - - public function get artist():String { - return _comments["ARTIST"]; - } - - public function get title():String { - return _comments["TITLE"]; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as deleted file mode 100644 index f8eac3ba22..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as +++ /dev/null @@ -1,122 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.BitByteArray; - - public class Floor { - - public static const DB_STATIC_TABLE:Vector. = Vector.([ - 1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07, - 1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07, - 1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.128753e-07, - 2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07, - 2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07, - 3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07, - 4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07, - 6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07, - 7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07, - 1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06, - 1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06, - 1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06, - 2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06, - 2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06, - 3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06, - 4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06, - 5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06, - 7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06, - 9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05, - 1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05, - 1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05, - 2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05, - 2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05, - 3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05, - 4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05, - 5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05, - 7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05, - 9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824, - 0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085, - 0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536, - 0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449, - 0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787, - 0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456, - 0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927, - 0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058, - 0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457, - 0.00092223983, 0.00098217216, 0.0010459992, 0.0011139742, - 0.0011863665, 0.0012634633, 0.0013455702, 0.0014330129, - 0.0015261382, 0.0016253153, 0.0017309374, 0.0018434235, - 0.0019632195, 0.0020908006, 0.0022266726, 0.0023713743, - 0.0025254795, 0.0026895994, 0.0028643847, 0.0030505286, - 0.0032487691, 0.0034598925, 0.0036847358, 0.0039241906, - 0.0041792066, 0.0044507950, 0.0047400328, 0.0050480668, - 0.0053761186, 0.0057254891, 0.0060975636, 0.0064938176, - 0.0069158225, 0.0073652516, 0.0078438871, 0.0083536271, - 0.0088964928, 0.009474637, 0.010090352, 0.010746080, - 0.011444421, 0.012188144, 0.012980198, 0.013823725, - 0.014722068, 0.015678791, 0.016697687, 0.017782797, - 0.018938423, 0.020169149, 0.021479854, 0.022875735, - 0.024362330, 0.025945531, 0.027631618, 0.029427276, - 0.031339626, 0.033376252, 0.035545228, 0.037855157, - 0.040315199, 0.042935108, 0.045725273, 0.048696758, - 0.051861348, 0.055231591, 0.058820850, 0.062643361, - 0.066714279, 0.071049749, 0.075666962, 0.080584227, - 0.085821044, 0.091398179, 0.097337747, 0.10366330, - 0.11039993, 0.11757434, 0.12521498, 0.13335215, - 0.14201813, 0.15124727, 0.16107617, 0.17154380, - 0.18269168, 0.19456402, 0.20720788, 0.22067342, - 0.23501402, 0.25028656, 0.26655159, 0.28387361, - 0.30232132, 0.32196786, 0.34289114, 0.36517414, - 0.38890521, 0.41417847, 0.44109412, 0.46975890, - 0.50028648, 0.53279791, 0.56742212, 0.60429640, - 0.64356699, 0.68538959, 0.72993007, 0.77736504, - 0.82788260, 0.88168307, 0.9389798, 1.0]); - - public static function createInstance(source:BitByteArray, header:SetupHeader):Floor { - - var type:int = source.readUnsignedBitwiseInt(16); - - switch (type) { - case 0: - return new Floor0(source, header); - case 1: - return new Floor1(source, header); - default: - throw new Error("Floor type " + type + " is not supported."); - } - } - - public function get type():int { - throw new IllegalOperationError("operation not implemented"); - } - - public function decodeFloor(vorbis:VorbisStream, source:BitByteArray):Floor1 { - throw new IllegalOperationError("operation not implemented"); - } - - public function computeFloor(vector:Vector.):void { - throw new IllegalOperationError("operation not implemented"); - } - - - } - - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as deleted file mode 100644 index 3f38dc842f..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as +++ /dev/null @@ -1,56 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.BitByteArray; - - public class Floor0 extends Floor { - - private var order:int; - private var rate:int; - private var barkMapSize:int; - private var amplitudeBits:int; - private var amplitudeOffset:int; - - private var bookList:Vector.; - - public function Floor0(source:BitByteArray, header:SetupHeader) { - - order = source.readUnsignedBitwiseInt(8); - rate = source.readUnsignedBitwiseInt(16); - barkMapSize = source.readUnsignedBitwiseInt(16); - amplitudeBits = source.readUnsignedBitwiseInt(6); - amplitudeOffset = source.readUnsignedBitwiseInt(8); - - var bookCount:uint = source.readUnsignedBitwiseInt(4) + 1; - bookList = new Vector.(bookCount); - - var i:int; - - for (i = 0; i < bookList.length; i++) { - bookList[i] = source.readUnsignedBitwiseInt(8); - if (bookList[i] > header.codeBooks.length) { - throw new Error("A floor0_book_list entry is higher than the code book count."); - } - } - } - - } -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as deleted file mode 100644 index 70621d0a3b..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as +++ /dev/null @@ -1,278 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.*; - - public class Floor1 extends Floor { - - private var partitionClassList:Vector.; - private var maximumClass:int; - private var multiplier:int; - private var rangeBits:int; - private var classDimensions:Vector.; - private var classSubclasses:Vector.; - private var classMasterbooks:Vector.; - private var subclassBooks:Vector.>; - private var xList:Vector.; - private var yList:Vector.; - private var lowNeighbours:Vector.; - private var highNeighbours:Vector.; - private static var RANGES:Vector. = Vector.([256, 128, 86, 64]); - - private var xList2:Vector.; - private var step2Flags:Vector.; - - public function Floor1(source:BitByteArray = null, header:SetupHeader = null) { - - if(source==null && header==null) { - return; - } - - var i:int; - var j:int; - - maximumClass = -1; - var partitions:int = source.readUnsignedBitwiseInt(5); - partitionClassList = new Vector.(partitions); - - for (i = 0; i < partitionClassList.length; i++) { - partitionClassList[i] = source.readUnsignedBitwiseInt(4); - if (partitionClassList[i] > maximumClass) { - maximumClass = partitionClassList[i]; - } - } - - classDimensions = new Vector.(maximumClass + 1); - classSubclasses = new Vector.(maximumClass + 1); - classMasterbooks = new Vector.(maximumClass + 1); - subclassBooks = new Vector.>(maximumClass + 1); - - var xListLength:int = 2; - - for (i = 0; i <= maximumClass; i++) { - classDimensions[i] = source.readUnsignedBitwiseInt(3) + 1; - xListLength += classDimensions[i]; - classSubclasses[i] = source.readUnsignedBitwiseInt(2); - - if (classDimensions[i] > header.codeBooks.length || classSubclasses[i] > header.codeBooks.length) { - throw new Error("There is a class dimension or class subclasses entry higher than the number of codebooks in the setup header."); - } - if (classSubclasses[i] != 0) { - classMasterbooks[i] = source.readUnsignedBitwiseInt(8); - } - subclassBooks[i] = new Vector.(1 << classSubclasses[i]); - for (j = 0; j < subclassBooks[i].length; j++) { - subclassBooks[i][j] = source.readUnsignedBitwiseInt(8) - 1; - } - } - - multiplier = source.readUnsignedBitwiseInt(2) + 1; - rangeBits = source.readUnsignedBitwiseInt(4); - - var floorValues:int = 0; - - xList = Vector.([0, 1<(xList.length); - highNeighbours = new Vector.(xList.length); - - for (i = 0; i < xList.length; i++) { - lowNeighbours[i] = Util.lowNeighbour(xList, i); - highNeighbours[i] = Util.highNeighbour(xList, i); - } - - xList2 = new Vector.(xList.length, true); - step2Flags = new Vector.(xList.length, true); - } - - public override function get type():int { - return 1; - } - - public override function decodeFloor(vorbis:VorbisStream, source:BitByteArray):Floor1 { - - var i:int; - var j:int; - var offset:int; - - if (!source.readBit()) { - return null; - } - - var clone:Floor1 = clone(); - - clone.yList = new Vector.(xList.length); - - var range:int = RANGES[multiplier - 1]; - - clone.yList[0] = source.readUnsignedBitwiseInt(Util.ilog(range - 1)); - clone.yList[1] = source.readUnsignedBitwiseInt(Util.ilog(range - 1)); - - offset = 2; - - for (i = 0; i < partitionClassList.length; i++) { - var cls:int = partitionClassList[i]; - var cdim:int = classDimensions[cls]; - var cbits:int = classSubclasses[cls]; - var csub:int = (1 << cbits) - 1; - var cval:int = 0; - if (cbits > 0) { - cval = source.readUnsignedHuffmanInt(vorbis.setupHeader.codeBooks[classMasterbooks[cls]].huffmanRoot); - } - - for (j = 0; j < cdim; j++) { - var book:int = subclassBooks[cls][cval & csub]; - cval >>>= cbits; - if (book >= 0) { - clone.yList[j + offset] = source.readUnsignedHuffmanInt(vorbis.setupHeader.codeBooks[book].huffmanRoot); - } else { - clone.yList[j + offset] = 0; - } - } - offset += cdim; - } - - return clone; - } - - public override function computeFloor(vector:Vector.):void { - - var i:int; - var j:int; - - var n:int = vector.length; - var values:int = xList.length; - //var step2Flags:Vector. = new Vector.(values); - - var range:int = RANGES[multiplier - 1]; - - for (i = 2; i < values; i++) { - - var lowNeighbourOffset:int = lowNeighbours[i]; - var highNeighbourOffset:int = highNeighbours[i]; - - var predicted:int = Util.renderPoint( - xList[lowNeighbourOffset], xList[highNeighbourOffset], - yList[lowNeighbourOffset], yList[highNeighbourOffset], xList[i]); - - var val:int = yList[i]; - var highRoom:int = range - predicted; - var lowRoom:int = predicted; - var room:int = highRoom < lowRoom ? highRoom * 2 : lowRoom * 2; - - if (val != 0) { - step2Flags[lowNeighbourOffset] = true; - step2Flags[highNeighbourOffset] = true; - step2Flags[i] = true; - if (val >= room) { - yList[i] = highRoom > lowRoom ? val - lowRoom + predicted - : -val + highRoom + predicted - 1; - } else { - yList[i] = (val & 1) == 1 ? predicted - ((val + 1) >> 1) - : predicted + (val >> 1); - } - } else { - step2Flags[i] = false; - yList[i] = predicted; - } - } - - for(i=0; i, y:Vector., b:Vector.):void { - var off:int = 0; - var len:int = x.length; - var lim:int = len + off; - var itmp:int; - var btmp:Boolean; - var i:int; - var j:int; - // Insertion sort on smallest arrays - for (i = off; i < lim; i++) { - for (j = i; j > off && x[j - 1] > x[j]; j--) { - itmp = x[j]; - x[j] = x[j - 1]; - x[j - 1] = itmp; - itmp = y[j]; - y[j] = y[j - 1]; - y[j - 1] = itmp; - btmp = b[j]; - b[j] = b[j - 1]; - b[j - 1] = btmp; - } - } - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as deleted file mode 100644 index c334a11a48..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as +++ /dev/null @@ -1,87 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.utils.ByteArray; - - public class IdentificationHeader { - - private var _version:uint; - private var _channels:uint; - private var _sampleRate:uint; - private var _bitrateMaximum:int; - private var _bitrateMinimum:int; - private var _bitrateNominal:int; - private var _blockSize0:uint; - private var _blockSize1:uint; - - private var _mdct:Vector.; - - public function IdentificationHeader(source:ByteArray) { - - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - - _version = source.readUnsignedInt(); - _channels = source.readUnsignedByte(); - _sampleRate = source.readUnsignedInt(); - _bitrateMaximum = source.readUnsignedInt(); - _bitrateNominal = source.readUnsignedInt(); - _bitrateMinimum = source.readUnsignedInt(); - var bs:int = source.readUnsignedByte(); - _blockSize0 = 1<<(bs&0xf); - _blockSize1 = 1<<(bs>>4); - - _mdct = new Vector.(2, false); - _mdct[0] = new Mdct(_blockSize0); - _mdct[1] = new Mdct(_blockSize1); - } - - public function get channels():uint { - return _channels; - } - - public function get sampleRate():uint { - return _sampleRate; - } - - public function get blockSize0():uint { - return _blockSize0; - } - - public function get blockSize1():uint { - return _blockSize1; - } - - public function get mdct0():Mdct { - return _mdct[0]; - } - - public function get mdct1():Mdct { - return _mdct[1]; - } - - } - - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as deleted file mode 100644 index a174a7b456..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as +++ /dev/null @@ -1,136 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import org.omtk.util.BitByteArray; - - public class Look { - - private var _map:int; - private var _parts:int; - private var _stages:int; - private var _fullbooks:Vector.; - private var _phrasebook:CodeBook; - private var _partbooks:Vector.>; - private var _partvals:int; - private var _decodemap:Vector.>; - private var _postbits:int; - private var _phrasebits:int; - private var _frames:int; - - public function Look(source:VorbisStream, residue:Residue, mode:Mode) { - - var i:int; - var j:int; - var k:int; - - var dim:int = 0; - var acc:int = 0; - var maxstage:int = 0; - - _map = mode.mapping; - - _parts = residue.classifications; - _fullbooks = source.setupHeader.codeBooks; - _phrasebook = _fullbooks[residue.classBook]; - dim = _phrasebook.dimensions; - - _partbooks = new Vector.>(_parts); - - for (j = 0; j < _parts; j++) { - var s:int = Util.ilog(residue.cascade[j]); - if (s != 0) { - if (s > maxstage) { - maxstage = s; - } - _partbooks[j] = new Vector.(s); - for (k = 0; k < s; k++) { - if ((residue.cascade[j] & (1 << k)) != 0) { - _partbooks[j][k] = residue.books[j][k]; - } - } - } - } - - _partvals = Math.round(Math.pow(_parts, dim)); - _stages = maxstage; - - _decodemap = new Vector.>(_partvals, true); - - for (j = 0; j < _partvals; j++) { - var val:int = j; - var mult:int = _partvals / _parts; - _decodemap[j] = new Vector.(dim); - - for (k = 0; k < dim; k++) { - var deco:int = val / mult; - val -= deco * mult; - mult /= _parts; - _decodemap[j][k] = deco; - } - } - } - - public function get map():int { - return _map; - } - - public function get parts():int { - return _parts; - } - - public function get stages():int { - return _stages; - } - - public function get fullbooks():Vector. { - return _fullbooks; - } - - public function get phrasebook():CodeBook { - return _phrasebook; - } - - public function get partbooks():Vector.> { - return _partbooks; - } - - public function get partvals():int { - return _partvals; - } - - public function get decodemap():Vector.> { - return _decodemap; - } - - public function get postbits():int { - return _postbits; - } - - public function get phrasebits():int { - return _phrasebits; - } - - public function get frames():int { - return _frames; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as deleted file mode 100644 index 982bec72ba..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as +++ /dev/null @@ -1,73 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.BitByteArray; - - public class Mapping { - - public static function createInstance(stream:VorbisStream, source:BitByteArray, header:SetupHeader):Mapping { - - var type:int = source.readUnsignedBitwiseInt(16); - switch (type) { - case 0: - return new Mapping0(stream, source, header); - default: - throw new Error("Mapping type " + type + " is not supported."); - } - - } - - public function get type():int { - throw new IllegalOperationError("not implemented"); - } - - public function get couplingSteps():int { - throw new IllegalOperationError("not implemented"); - } - - public function get submaps():int { - throw new IllegalOperationError("not implemented"); - } - - public function get angles():Vector. { - throw new IllegalOperationError("not implemented"); - } - - public function get magnitudes():Vector. { - throw new IllegalOperationError("not implemented"); - } - - public function get mux():Vector. { - throw new IllegalOperationError("not implemented"); - } - - public function get submapFloors():Vector. { - throw new IllegalOperationError("not implemented"); - } - - public function get submapResidues():Vector. { - throw new IllegalOperationError("not implemented"); - } - - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as deleted file mode 100644 index 547b53363e..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as +++ /dev/null @@ -1,136 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import org.omtk.util.BitByteArray; - - public class Mapping0 extends Mapping { - - private var _magnitudes:Vector.; - private var _angles:Vector.; - private var _mux:Vector.; - private var _submapFloors:Vector.; - private var _submapResidues:Vector.; - - public function Mapping0(stream:VorbisStream, source:BitByteArray, header:SetupHeader) { - - var i:int; - var j:int; - - var submaps:int = 1; - - if (source.readBit()) { - submaps = source.readUnsignedBitwiseInt(4) + 1; - } - - var channels:int = stream.identificationHeader.channels; - var ilogChannels:int = Util.ilog(channels - 1); - - if (source.readBit()) { - var couplingSteps:int = source.readUnsignedBitwiseInt(8) + 1; - _magnitudes = new Vector.(couplingSteps); - _angles = new Vector.(couplingSteps); - - for (i = 0; i < couplingSteps; i++) { - magnitudes[i] = source.readUnsignedBitwiseInt(ilogChannels); - angles[i] = source.readUnsignedBitwiseInt(ilogChannels); - if (magnitudes[i] == angles[i] || magnitudes[i] >= channels - || angles[i] >= channels) { - throw new Error("The channel magnitude and/or angle mismatch."); - } - } - } else { - _magnitudes = Vector.([]); - _angles = Vector.([]); - } - - if (source.readUnsignedBitwiseInt(2) != 0) { - throw new Error("A reserved mapping field has an invalid value."); - } - - _mux = new Vector.(channels); - if (submaps > 1) { - for (i = 0; i < channels; i++) { - _mux[i] = source.readUnsignedBitwiseInt(4); - if (_mux[i] > submaps) { - throw new Error("A mapping mux value is higher than the number of submaps"); - } - } - } else { - for (i = 0; i < channels; i++) { - _mux[i] = 0; - } - } - - _submapFloors = new Vector.(submaps); - _submapResidues = new Vector.(submaps); - - var floorCount:int = header.floors.length; - var residueCount:int = header.residues.length; - - for (i = 0; i < submaps; i++) { - source.readUnsignedBitwiseInt(8); // discard time placeholder - _submapFloors[i] = source.readUnsignedBitwiseInt(8); - _submapResidues[i] = source.readUnsignedBitwiseInt(8); - - if (_submapFloors[i] > floorCount) { - throw new Error("A mapping floor value is higher than the number of floors."); - } - - if (_submapResidues[i] > residueCount) { - throw new Error("A mapping residue value is higher than the number of residues."); - } - } - } - - public override function get type():int { - return 0; - } - - public override function get couplingSteps():int { - return _angles.length; - } - - public override function get submaps():int { - return _submapFloors.length; - } - - public override function get angles():Vector. { - return _angles; - } - - public override function get magnitudes():Vector. { - return _magnitudes; - } - - public override function get mux():Vector. { - return _mux; - } - - public override function get submapFloors():Vector. { - return _submapFloors; - } - - public override function get submapResidues():Vector. { - return _submapResidues; - } - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as deleted file mode 100644 index 886deea63f..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as +++ /dev/null @@ -1,62 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.events.*; - import flash.system.*; - import flash.display.*; - import flash.net.*; - import flash.utils.getTimer; - - /* - * Wrapper for the haXe compiled class org.omtk.vorbis.MdctHX - */ - public class Mdct { - - public static var initialized : Boolean = false; - private static var hxClass : Class; - - public static function initialize() : void { - var ldr:Loader = new Loader(); - var swfUrl:String = "hxmdct.swf"; - var req:URLRequest = new URLRequest(swfUrl); - var ldrContext:LoaderContext = - new LoaderContext(false, ApplicationDomain.currentDomain); - ldr.load(req, ldrContext); - ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded); - - function swfLoaded(e:Event):void { - hxClass = ApplicationDomain.currentDomain.getDefinition("org.omtk.vorbis.MdctHX") as Class; - initialized = true; - } - } - - private var delegate : Object; - - public function Mdct(n:int) { - delegate = new hxClass(n); - } - - public function imdct(frq:Vector., window:Vector., pcm:Vector.):void { - delegate.imdct(frq, window, pcm); - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as deleted file mode 100644 index cf27af2b3f..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as +++ /dev/null @@ -1,70 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import flash.utils.Dictionary; - import org.omtk.util.BitByteArray; - - public class Mode - { - private var _blockFlag:Boolean; - private var _windowType:uint; - private var _transformType:uint; - private var _mapping:uint; - - public function Mode(source:BitByteArray, header:SetupHeader) { - - _blockFlag=source.readBit(); - _windowType=source.readUnsignedBitwiseInt(16); - _transformType=source.readUnsignedBitwiseInt(16); - _mapping=source.readUnsignedBitwiseInt(8); - - if(_windowType!=0) { - throw new Error("Window type = "+windowType+", != 0"); - } - - if(_transformType!=0) { - throw new Error("Transform type = "+transformType+", != 0"); - } - - if(_mapping > header.mappings.length) { - throw new Error("Mode mapping number is higher than total number of mappings."); - } - } - - public function get blockFlag():Boolean { - return _blockFlag; - } - - public function get windowType():uint { - return _windowType; - } - - public function get transformType():uint { - return _transformType; - } - - public function get mapping():uint { - return _mapping; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as deleted file mode 100644 index de9924f7b9..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as +++ /dev/null @@ -1,142 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import flash.utils.Dictionary; - import org.omtk.util.BitByteArray; - - public class Residue { - - private var _begin:int; - private var _end:int; - private var _partitionSize:int; - private var _classifications:int; - private var _classBook:int; - private var _cascade:Vector.; - private var _books:Vector.>; - - private var _looks:Dictionary; - - - public function Residue(source:BitByteArray, header:SetupHeader) { - - _begin = source.readUnsignedBitwiseInt(24); - _end = source.readUnsignedBitwiseInt(24); - _partitionSize = source.readUnsignedBitwiseInt(24) + 1; - _classifications = source.readUnsignedBitwiseInt(6) + 1; - _classBook = source.readUnsignedBitwiseInt(8); - - _cascade = new Vector.(classifications); - - var acc:int = 0; - var i:int; - var j:int; - - for (i = 0; i < classifications; i++) { - var highBits:int = 0; - var lowBits:int = 0; - - lowBits = source.readUnsignedBitwiseInt(3); - if (source.readBit()) { - highBits = source.readUnsignedBitwiseInt(5); - } - _cascade[i] = (highBits << 3) | lowBits; - acc += Util.icount(cascade[i]); - } - - _books = new Vector.>(classifications); - - for (i = 0; i < classifications; i++) { - books[i] = new Vector.(8); - for (j = 0; j < 8; j++) { - if ((cascade[i] & (1 << j)) != 0) { - books[i][j] = source.readUnsignedBitwiseInt(8); - if (books[i][j] > header.codeBooks.length) { - throw new Error( - "Reference to invalid codebook entry in residue header."); - } - } - } - } - - _looks = new Dictionary(); - } - - public static function createInstance(source:BitByteArray, header:SetupHeader):Residue { - - var type:int = source.readUnsignedBitwiseInt(16); - switch (type) { - case 2: - return new Residue2(source, header); - default: - throw new Error("Residue type " + type + " is not supported."); - } - } - - public function decodeResidue( - vorbis:VorbisStream, source:BitByteArray, - mode:Mode, ch:int, - doNotDecodeFlags:Vector., vectors0:Vector., vectors1:Vector.):void { - - throw new IllegalOperationError("not implemented"); - } - - - public function getLook(stream:VorbisStream, key:Mode):Look { - var look:Look = _looks[key]; - if (look == null) { - look = new Look(stream, this, key); - _looks[key] = look; - } - return new Look(stream, this, key);//look; - } - - - public function get begin():int { - return _begin; - } - - public function get end():int { - return _end; - } - - public function get partitionSize():int { - return _partitionSize; - } - - public function get classifications():int { - return _classifications; - } - - public function get classBook():int { - return _classBook; - } - - public function get cascade():Vector. { - return _cascade; - } - - public function get books():Vector.> { - return _books; - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as deleted file mode 100644 index 1fdc453fbc..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as +++ /dev/null @@ -1,109 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.errors.IllegalOperationError; - import flash.utils.Dictionary; - import org.omtk.util.BitByteArray; - - public class Residue2 extends Residue { - - public function Residue2(source:BitByteArray, header:SetupHeader) { - super(source, header); - } - - public override function decodeResidue( - vorbis:VorbisStream, source:BitByteArray, - mode:Mode, ch:int, - doNotDecodeFlags:Vector., vectors0:Vector., vectors1:Vector.):void { - - var i:int; - var j:int; - var k:int; - var l:int; - var s:int; - var slim:int; - - var look:Look = getLook(vorbis, mode); - - var codeBook:CodeBook = vorbis.setupHeader.codeBooks[classBook]; - - var classvalsPerCodeword:int = codeBook.dimensions; - var nToRead:int = end - begin; - var partitionsToRead:int = nToRead / partitionSize; // partvals - - var samplesPerPartition:int = partitionSize; - var partitionsPerWord:int = look.phrasebook.dimensions; - - var partWords:int = (partitionsToRead + partitionsPerWord - 1) / partitionsPerWord; - - var offset:int; - - var left:Boolean = false; - var right:Boolean = false; - - for (i = 0; i < doNotDecodeFlags.length; i++) { - if (!doNotDecodeFlags[i]) { - if(i==0) { - left = true; - } - else if (i==1) { - right = true; - } - } - } - - var partword:Array = new Array(partWords); - - var pb:int = source.position; - - slim = look.stages; - for (s = 0; s < slim; s++) { - - for (i = 0, l = 0; i < partitionsToRead; l++) { - - if (s == 0) { - var temp:int = source.readUnsignedHuffmanInt(look.phrasebook.huffmanRoot); - if (temp == -1) { - throw new Error("Foo??"); - } - partword[l] = look.decodemap[temp]; - if (partword[l] == null) { - throw new Error("Foo??"); - } - } - - for (k = 0; k < partitionsPerWord && i < partitionsToRead; k++, i++) { - offset = begin + i * samplesPerPartition; - - if ((cascade[partword[l][k]] & (1 << s)) != 0) { - var stagebook:CodeBook = - vorbis.setupHeader.codeBooks[look.partbooks[partword[l][k]][s]]; - if (stagebook != null) { - stagebook.readVvAdd(vectors0, vectors1, left, right, source, offset, samplesPerPartition); - } - } - } - } - } - - } - - } -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as deleted file mode 100644 index 1d1350f9ef..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as +++ /dev/null @@ -1,118 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import org.omtk.util.BitByteArray; - - public class SetupHeader { - - private var _codeBooks:Vector.; - private var _floors:Vector.; - private var _residues:Vector.; - private var _mappings:Vector.; - private var _modes:Vector.; - - public function SetupHeader(stream:VorbisStream, source:BitByteArray) { - - var i:int; - - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - source.readByte(); - - var codeBookCount:uint = source.readUnsignedBitwiseInt(8)+1; - _codeBooks = new Vector.(codeBookCount); - - for(i = 0; i < codeBookCount; i++) { - _codeBooks[i] = new CodeBook(source); - } - - // read the time domain transformations, - // these should all be 0 - - var timeCount:int = source.readUnsignedBitwiseInt(6) + 1; - for (i = 0; i < timeCount; i++) { - if (source.readUnsignedBitwiseInt(16) != 0) { - throw new Error( - "Time domain transformation != 0"); - } - } - - // read floor entries - - var floorCount:int = source.readUnsignedBitwiseInt(6) + 1; - _floors = new Vector.(floorCount); - - for (i = 0; i < floorCount; i++) { - _floors[i] = Floor.createInstance(source, this); - } - - var residueCount:int = source.readUnsignedBitwiseInt(6) + 1; - _residues = new Vector.(residueCount); - - for (i = 0; i < residueCount; i++) { - _residues[i] = Residue.createInstance(source, this); - } - - var mappingCount:int = source.readUnsignedBitwiseInt(6) + 1; - _mappings = new Vector.(mappingCount); - - for (i = 0; i < mappingCount; i++) { - _mappings[i] = Mapping.createInstance(stream, source, this); - } - - var modeCount:int = source.readUnsignedBitwiseInt(6) + 1; - _modes = new Vector.(modeCount); - - for (i = 0; i < modeCount; i++) { - _modes[i] = new Mode(source, this); - } - - if (!source.readBit()) { - throw new Error("The setup header framing bit is incorrect."); - } - } - - public function get codeBooks():Vector. { - return _codeBooks; - } - - public function get floors():Vector. { - return _floors; - } - - public function get mappings():Vector. { - return _mappings; - } - - public function get residues():Vector. { - return _residues; - } - - public function get modes():Vector. { - return _modes; - } - - } - - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as deleted file mode 100644 index f6e7ed18db..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as +++ /dev/null @@ -1,122 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - public class Util { - - public static function ilog(x:uint):uint { - var res:int = 0; - for(; x>0; x>>=1, res++); - return res; - } - - public static function float32unpack(x:uint):Number { - var mantissa:Number = x&0x1fffff; - var e:Number = (x&0x7fe00000)>>21; - if((x&0x80000000)!=0) { - mantissa=-mantissa; - } - return mantissa*Math.pow(2.0, e-788.0); - } - - public static function lookup1Values(a:int, b:int):uint { - var res:uint = Math.pow(Math.E, Math.log(a)/b); - return intPow(res+1, b)<=a?res+1:res; - } - - public static function intPow(base:uint, e:uint):uint { - var res:uint = 1; - for(; e>0; e--, res*=base); - return res; - } - - public static function isBitSet(value:uint, bit:uint):Boolean { - return (value&(1< 0) { - res += value & 1; - value >>= 1; - } - return res; - } - - public static function lowNeighbour(v:Vector., x:int):int { - - var max:int = -1; - var n:int = 0; - var i:int; - - for (i = 0; i < v.length && i < x; i++) { - if (v[i] > max && v[i] < v[x]) { - max = v[i]; - n = i; - } - } - return n; - } - - public static function highNeighbour(v:Vector., x:int):int { - - var min:int = int.MAX_VALUE; - var n:int = 0; - var i:int; - - for (i = 0; i < v.length && i < x; i++) { - if (v[i] < min && v[i] > v[x]) { - min = v[i]; - n = i; - } - } - return n; - } - - public static function renderPoint(x0:int, x1:int, y0:int, y1:int, x:int):int { - return y0 + int(((y1-y0) * (x - x0)) / (x1 - x0)); - } - - public static function renderLine(x0:int, y0:int, x1:int, y1:int, v:Vector.):void { - - var dy:int = y1 - y0; - var adx:int = x1 - x0; - var b:int = dy / adx; - var sy:int = dy < 0 ? b - 1 : b + 1; - var x:int = x0; - var y:int = y0; - var err:int = 0; - var ady:int = (dy < 0 ? -dy : dy) - (b > 0 ? b * adx : -b * adx); - - v[x] *= Floor.DB_STATIC_TABLE[y]; - for (x = x0 + 1; x < x1; x++) { - err += ady; - if (err >= adx) { - err -= adx; - v[x] *= Floor.DB_STATIC_TABLE[y += sy]; - } else { - v[x] *= Floor.DB_STATIC_TABLE[y += b]; - } - } - - } - - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as deleted file mode 100644 index c82bb72e7f..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as +++ /dev/null @@ -1,136 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.net.URLRequest; - import flash.net.URLStream; - import flash.utils.ByteArray; - import flash.utils.Endian; - import flash.events.Event; - import flash.events.ProgressEvent; - import flash.events.SampleDataEvent; - - import flash.external.ExternalInterface; - - import flash.media.Sound; - - import org.omtk.ogg.UncachedUrlStream; - import org.omtk.ogg.EndOfOggStreamError; - import flash.utils.setTimeout; - - public class VorbisSound extends Sound { - - public static var METADATA_UPDATE: String = "metadata_update"; - - private var urlStream: URLStream; - - private var oggStream:UncachedUrlStream; - private var vorbisStream:VorbisStream; - - private var bytesAvailable:int; - - private var initialized:Boolean = false; - private var playing:Boolean = false; - - private var fill1:Boolean = true; - private var fill2:Boolean = true; - - private var stopped: Boolean = false; - private var completeEventDispatched: Boolean = false; - - public function VorbisSound(url: URLRequest ) { - urlStream = new URLStream(); - urlStream.endian = Endian.LITTLE_ENDIAN; - urlStream.load(url); - - Mdct.initialize(); - - oggStream = new UncachedUrlStream(urlStream); - oggStream.addEventListener('progress', progress); - bytesAvailable = oggStream.bytesAvailable; - addEventListener("sampleData", sampleGenerator); - } - - private function initialize():void { - vorbisStream = new VorbisStream(oggStream.getLogicalOggStream()); - setTimeout(dispatchEvent, 100, new Event(METADATA_UPDATE)); - initialized = true; - } - - private var samplesPlayed: int = 0; - - private function sampleGenerator(event:SampleDataEvent):void { - - if(stopped) { - return; - } - - if(Mdct.initialized && !initialized && bytesAvailable > 64*1024) { - initialize(); - } - - if(initialized && bytesAvailable > 16*1024 && !vorbisStream.finished) { - var cnt: int; - cnt = vorbisStream.readPcm(event.data); - samplesPlayed += cnt; - if(cnt < 2048 && oggStream.bytesAvailable > 0) { - vorbisStream = new VorbisStream(oggStream.getLogicalOggStream()); - setTimeout(dispatchEvent, 100, new Event(METADATA_UPDATE)); - samplesPlayed += vorbisStream.readPcm(event.data); - } - } - else if(vorbisStream == null || !vorbisStream.finished) { - for(var c:int=0; c<2048; c++) { - event.data.writeFloat(0); - event.data.writeFloat(0); - } - } - - if(initialized && vorbisStream.finished && oggStream.bytesAvailable == 0 && !completeEventDispatched) { - dispatchEvent(new Event(Event.COMPLETE)); - completeEventDispatched = true; - } - - //trace("samples played: " + samplesPlayed + "/" + oggStream.bytesAvailable); - - } - - public function stop(): void { - stopped = true; - } - - public function progress(event:ProgressEvent):void { - bytesAvailable = oggStream.bytesAvailable; - } - - public function get position(): int { - return samplesPlayed * 1000 / 44100; - } - - public function getMetaData(key: String):String { - if(vorbisStream != null) { - return vorbisStream.commentHeader.comments[key]; - } - else { - return null; - } - } - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as b/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as deleted file mode 100644 index 0c37fa1b18..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as +++ /dev/null @@ -1,130 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis { - - import flash.events.SampleDataEvent; - import flash.utils.ByteArray; - import flash.utils.Endian; - import org.omtk.util.*; - import org.omtk.ogg.*; - - public class VorbisStream { - - private const IDENTIFICATION_HEADER:int = 1; - private const COMMENT_HEADER:int = 3; - private const SETUP_HEADER:int = 5; - - private var source:LogicalOggStream; - - private var _identificationHeader:IdentificationHeader; - private var _commentHeader:CommentHeader; - private var _setupHeader:SetupHeader; - - private var _lastAudioPacket:AudioPacket; - - private var _currentGranulePosition:int=0; - private var packetCounter:int; - - private var _finished: Boolean = false; - - public var windows:Vector.> = new Vector.>(8); - - public function VorbisStream(source:LogicalOggStream) { - - this.source = source; - - for (var i:int = 0; i < 3; i++) { - - var data:BitByteArray = source.getNextOggPacket().data; - var headerType:int = data.readUnsignedByte(); - - switch(headerType) { - case IDENTIFICATION_HEADER: - _identificationHeader = new IdentificationHeader(data); - break; - case COMMENT_HEADER: - _commentHeader = new CommentHeader(data); - break; - case SETUP_HEADER: - _setupHeader = new SetupHeader(this, data); - break; - } - } - - } - - public function get identificationHeader():IdentificationHeader { - return _identificationHeader; - } - - public function get commentHeader():CommentHeader { - return _commentHeader; - } - - public function get setupHeader():SetupHeader { - return _setupHeader; - } - - public function readPcm(data:ByteArray): int { - - var total:int; - var i:int; - - if(_lastAudioPacket == null) { - _lastAudioPacket = getNextAudioPacket(); - } - - total = 0; - - while(total < 2048 && !_finished) { - try { - var ap:AudioPacket = getNextAudioPacket(); - total += ap.readPcm(_lastAudioPacket, data); - _lastAudioPacket = ap; - } - catch(e: EndOfOggStreamError) { - // ok, stream finished - _finished = true; - } - } - - return total; - } - - private function getNextAudioPacket():AudioPacket { - packetCounter++; - var packet:OggPacket = source.getNextOggPacket(); - var res:AudioPacket = new AudioPacket(this, packet, _currentGranulePosition); - if(_lastAudioPacket != null) { - // don't count the first packet, since it doesn't contain any "real" samples - _currentGranulePosition += res.numberOfSamples; - } - return res; - } - - public function get finished() : Boolean { - return _finished; - } - - public function get currentGranulePosition(): int { - return _currentGranulePosition; - } - } - -} \ No newline at end of file diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/build.hxml b/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/build.hxml deleted file mode 100644 index be51ca9dc9..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/build.hxml +++ /dev/null @@ -1,3 +0,0 @@ --main org.omtk.vorbis.MdctHX --swf-version 10 --swf hxmdct.swf diff --git a/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx b/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx deleted file mode 100644 index 4461c32dae..0000000000 --- a/js2/mwEmbed/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx +++ /dev/null @@ -1,337 +0,0 @@ -/* - -Copyright 2008 Tor-Einar Jarnbjo - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - -*/ - -package org.omtk.vorbis; - -import flash.Vector; - -class MdctHX { - - private static var cPI1_8:Float = 0.92387953251128675613; - private static var cPI2_8:Float = 0.70710678118654752441; - private static var cPI3_8:Float = 0.38268343236508977175; - - private var n:Int; - private var log2n:Int; - private var trig:Vector; - private var bitrev:Vector; - - private var dtmp1:Float; - private var dtmp2:Float; - private var dtmp3:Float; - private var dtmp4:Float; - - private var x:Vector; - private var w:Vector; - - public function new(n:Int) { - this.n = n; - - var i:Int; - var j:Int; - - bitrev = new Vector(); - trig = new Vector(Std.int(n+n/4), true); - - for(i in 0...Std.int(n+n/4)) { - trig[i] = 0; - } - - x = new Vector(Std.int(n/2), true); - w = new Vector(Std.int(n/2), true); - - for(i in 0...Std.int(n/2)) { - x[i] = 0; - w[i] = 0; - } - - var n2:Int = n >>> 1; - log2n = Math.round(Math.log(n) / Math.log(2)); - - var AE:Int = 0; - var AO:Int = 1; - var BE:Int = Std.int(AE + n / 2); - var BO:Int = BE + 1; - var CE:Int = Std.int(BE + n / 2); - var CO:Int = CE + 1; - - for (i in 0...Std.int(n/4)) { - trig[AE + i * 2] = Math.cos((Math.PI / n) * (4 * i)); - trig[AO + i * 2] = -Math.sin((Math.PI / n) * (4 * i)); - trig[BE + i * 2] = Math.cos((Math.PI / (2 * n)) * (2 * i + 1)); - trig[BO + i * 2] = Math.sin((Math.PI / (2 * n)) * (2 * i + 1)); - } - - for (i in 0...Std.int(n/8)) { - trig[CE + i * 2] = Math.cos((Math.PI / n) * (4 * i + 2)); - trig[CO + i * 2] = -Math.sin((Math.PI / n) * (4 * i + 2)); - } - - var mask:Int = (1 << (log2n - 1)) - 1; - var msb:Int = 1 << (log2n - 2); - - for (i in 0...Std.int(n/8)) { - var acc:Int = 0; - j = 0; - while(msb>>>j!=0) { - if (((msb >>> j) & i) != 0) { - acc |= 1 << j; - } - j++; - } - bitrev[i * 2] = ((~acc) & mask); - bitrev[i * 2 + 1] = acc; - } - - } - - public function imdct(frq:Vector, window:Vector, pcm:Vector):Void { - - var i:Int; - - var n2:Int; - var n4:Int; - var n8:Int; - - var inO:Int; - var xO:Int; - var A:Int; - - var temp1:Float; - var temp2:Float; - - var B:Int; - var o1:Int; - var o2:Int; - var o3:Int; - var o4:Int; - - var xx:Int; - var xxx:Vector; - - n2 = n >> 1; - n4 = n >> 2; - n8 = n >> 3; - - inO = -1; - xO = 0; - A = n2; - - temp1 = 0.0; - temp2 = 0.0; - - for (i in 0...n8) { - dtmp1 = frq[inO += 2]; - dtmp2 = frq[inO += 2]; - dtmp3 = trig[--A]; - dtmp4 = trig[--A]; - x[xO++] = -dtmp2 * dtmp3 - dtmp1 * dtmp4; - x[xO++] = dtmp1 * dtmp3 - dtmp2 * dtmp4; - } - - inO = n2; - - for(i in 0...n8) { - dtmp1 = frq[inO -= 2]; - dtmp2 = frq[inO -= 2]; - dtmp3 = trig[--A]; - dtmp4 = trig[--A]; - x[xO++] = dtmp2 * dtmp3 + dtmp1 * dtmp4; - x[xO++] = dtmp2 * dtmp4 - dtmp1 * dtmp3; - } - - xxx = kernel(x, w, n, n2, n4, n8); - xx = 0; - - B = n2; - o1 = n4; - o2 = o1 - 1; - o3 = n4 + n2; - o4 = o3 - 1; - - for (i in 0...n4) { - dtmp1 = xxx[xx++]; - dtmp2 = xxx[xx++]; - dtmp3 = trig[B++]; - dtmp4 = trig[B++]; - - temp1 = (dtmp1 * dtmp4 - dtmp2 * dtmp3); - temp2 = -(dtmp1 * dtmp3 + dtmp2 * dtmp4); - - pcm[o1] = -temp1 * window[o1]; - pcm[o2] = temp1 * window[o2]; - pcm[o3] = temp2 * window[o3]; - pcm[o4] = temp2 * window[o4]; - - o1++; - o2--; - o3++; - o4--; - } - - } - - private inline function kernel(x:Vector, w:Vector, n:Int, n2:Int, n4:Int, n8:Int):Vector { - - var i:Int; - var r:Int; - var s:Int; - var rlim:Int; - var slim:Int; - - var xA:Int = n4; - var xB:Int = 0; - var w1:Int = 0; - var w2:Int = n4; - var A:Int = n2; - - var x0:Float; - var x1:Float; - var wA:Float; - var wB:Float; - var wC:Float; - var wD:Float; - var k0:Int; - var k1:Int; - var t1:Int; - var t2:Int; - - var wbase:Int; - var temp:Vector; - - var wACE:Float; - var wBCE:Float; - var wACO:Float; - var wBCO:Float; - - var AEv:Float; - var AOv:Float; - - i=0; - while(i < n4) { - x0 = x[xA] - x[xB]; - - w[w2 + i] = x[xA++] + x[xB++]; - - x1 = x[xA] - x[xB]; - A -= 4; - - w[i++] = x0 * trig[A] + x1 * trig[A + 1]; - w[i] = x1 * trig[A] - x0 * trig[A + 1]; - - w[w2 + i] = x[xA++] + x[xB++]; - i++; - } - - for (i in 0...log2n-3) { - k0 = n >>> (i + 2); - k1 = 1 << (i + 3); - wbase = n2 - 2; - - A = 0; - - rlim = k0 >>> 2; - for (r in 0...rlim) { - - w1 = wbase; - w2 = w1 - (k0 >> 1); - AEv = trig[A]; - AOv = trig[A + 1]; - wbase -= 2; - - k0++; - - slim = 2 << i; - for (s in 0...slim) { - dtmp1 = w[w1]; - dtmp2 = w[w2]; - wB = dtmp1 - dtmp2; - x[w1] = dtmp1 + dtmp2; - dtmp1 = w[++w1]; - dtmp2 = w[++w2]; - wA = dtmp1 - dtmp2; - x[w1] = dtmp1 + dtmp2; - x[w2] = wA * AEv - wB * AOv; - x[w2-1] = wB * AEv + wA * AOv; - w1 -= k0; - w2 -= k0; - } - k0--; - A += k1; - } - - temp = w; - w = x; - x = temp; - } - - - var C:Int = n; - var bit:Int = 0; - var xx1:Int = 0; - var xx2:Int = n2 - 1; - - var wt1: Float; - var wt2: Float; - var wt12: Float; - var wt21: Float; - var trigV: Float; - - for (i in 0...n8) { - t1 = bitrev[bit++]; - t2 = bitrev[bit++]; - - wt1 = w[t1]; - wt2 = w[t2]; - wt12 = w[t1-1]; - wt21 = w[t2+1]; - - wA = wt1 - wt21; - wB = wt12 + wt2; - wC = wt1 + wt21; - wD = wt12 - wt2; - - trigV = trig[C]; - - wACE = wA * trigV; - wBCE = wB * trigV; - - trigV = trig[++C]; - - wACO = wA * trigV; - wBCO = wB * trigV; - - ++C; - - x[xx1++] = (wC + wACO + wBCE); - x[xx2--] = (-wD + wBCO - wACE); - x[xx1++] = (wD + wBCO - wACE); - x[xx2--] = (wC - wACO - wBCE); - } - - return x; - } - - /* - * Dummy function required for the haXe compiler to build this to - * a .SWF file. - */ - public static function main() : Void { - } - -} diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/README b/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/README new file mode 100644 index 0000000000..9b2c1eafcb --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/README @@ -0,0 +1 @@ +This version of cortado comes form http://theora.org/cortado.jar diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar b/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar new file mode 100644 index 0000000000..02c541f44b Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/LICENSE.txt b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/LICENSE.txt new file mode 100644 index 0000000000..20d40b6bce --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/LICENSE.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + 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. + + + Copyright (C) + + 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 . + +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: + + Copyright (C) + 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 +. + + 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 +. \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/README.txt b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/README.txt new file mode 100644 index 0000000000..22624edd9e --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/README.txt @@ -0,0 +1,52 @@ +Version history: + +RC2 +--- +- fixed: setting the screen height in configuration did not have any effect + +RC1 +----- +- better error message if plugin loading fails, shows the URL used +- validates our redesigned multidomain license key correctly +- fix to prevent the play button going visible when the onBufferEmpty event occurs +- the commercial swf now correctly loads the controls using version information +- fixed: the play button overlay became invisible with long fadeOutSpeeds + +beta6 +----- +- removed the onFirstFramePause event +- playing a clip for the second time caused a doubled sound +- pausing on first frame did not work on some FLV files + +beta5 +----- +- logo only uses percentage scaling if it's a SWF file (there is ".swf" in it's url) +- context menu now correctly builds up from string entries in configuration +-always closes the previous connection before starting a new clip + +beta4 +----- +- now it's possible to load a plugin into the panel without specifying any position/dimensions + information, the plugin is placed to left: "50%", top: "50%" and using the plugin DisplayObject's width & height +- The Flowplayer API was not fully initialized when onLoad was invoked on Flash plugins + +beta3 +----- +- tweaking logo placement +- "play" did not show up after repeated pause/resume +- player now loads the latest controls SWF version, right now the latest SWF is called 'flowplayer.controls-3.0.0-beta2.swf' + +beta2 +----- +- fixed support for RTMP stream groups +- changed to loop through available fonts in order to find a suitable font also in IE +- Preloader was broken on IE: When the player SWf was in browser's cache it did not initialize properly +- Context menu now correctly handles menu items that are configured by their string labels only (not using json objects) +- fixed custom logo positioning (was moved to the left edge of screen in fullscreen) +- "play" now always follows the position and size of the screen +- video was stretched below the controls in fullscreen when autoHide: 'never' +- logo now takes 6.5% of the screen height, width is scaled so that the aspect ratio is preserved + +beta1 +----- +- First public beta release diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js new file mode 100644 index 0000000000..52f2780764 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.js @@ -0,0 +1,1520 @@ +/** + * flowplayer.js 3.0.0-rc2. The Flowplayer API. + * + * This file is part of Flowplayer, http://flowplayer.org + * + * Author: Tero Piirainen, + * Copyright (c) 2008 Flowplayer Ltd + * + * Released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * Version: 3.0.0-rc2 - Fri Nov 07 2008 16:50:59 GMT-0000 (GMT+00:00) + */ +(function() { + +/* + FEATURES + -------- + - handling multiple instances + - Flowplayer programming API + - Flowplayer event model + - player loading / unloading + - $f() function + - jQuery support +*/ + + +/*jslint glovar: true, browser: true */ +/*global flowplayer, $f */ + +// {{{ private utility methods + + function log(args) { + + // write into opera console + if (typeof opera == 'object') { + opera.postError("$f.fireEvent: " + args.join(" | ")); + + + } else if (typeof console == 'object') { + console.log("$f.fireEvent", [].slice.call(args)); + } + } + + + // thanks: http://keithdevens.com/weblog/archive/2007/Jun/07/javascript.clone + function clone(obj) { + if (!obj || typeof obj != 'object') { return obj; } + var temp = new obj.constructor(); + for (var key in obj) { + if (obj.hasOwnProperty(key)) { + temp[key] = clone(obj[key]); + } + } + return temp; + } + + // stripped from jQuery, thanks John Resig + function each(obj, fn) { + if (!obj) { return; } + + var name, i = 0, length = obj.length; + + // object + if (length === undefined) { + for (name in obj) { + if (fn.call(obj[name], name, obj[name]) === false) { break; } + } + + // array + } else { + for (var value = obj[0]; + i < length && fn.call( value, i, value ) !== false; value = obj[++i]) { + } + } + + return obj; + } + + + // convenience + function el(id) { + return document.getElementById(id); + } + + + // used extensively. a very simple implementation. + function extend(to, from, skipFuncs) { + if (to && from) { + each(from, function(name, value) { + if (!skipFuncs || typeof value != 'function') { + to[name] = value; + } + }); + } + } + + // var arr = select("elem.className"); + function select(query) { + var index = query.indexOf("."); + if (index != -1) { + var tag = query.substring(0, index) || "*"; + var klass = query.substring(index + 1, query.length); + var els = []; + each(document.getElementsByTagName(tag), function() { + if (this.className && this.className.indexOf(klass) != -1) { + els.push(this); + } + }); + return els; + } + } + + // fix event inconsistencies across browsers + function stopEvent(e) { + e = e || window.event; + + if (e.preventDefault) { + e.stopPropagation(); + e.preventDefault(); + + } else { + e.returnValue = false; + e.cancelBubble = true; + } + return false; + } + + // push an event listener into existing array of listeners + function bind(to, evt, fn) { + to[evt] = to[evt] || []; + to[evt].push(fn); + } + + + // generates an unique id + function makeId() { + return "_" + ("" + Math.random()).substring(2, 10); + } + +//}}} + + +// {{{ Clip + + var Clip = function(json, index, player) { + + // private variables + var self = this; + var cuepoints = {}; + var listeners = {}; + this.index = index; + + // instance variables + if (typeof json == 'string') { + json = {url:json}; + } + + extend(this, json, true); + + // event handling + each(("Start*,MetaData,Pause*,Resume*,Seek*,Stop*,Finish,LastSecond,Update,BufferFull,BufferEmpty").split(","), + function() { + + var evt = "on" + this; + + // before event + if (evt.indexOf("*") != -1) { + evt = evt.substring(0, evt.length -1); + var before = "onBefore" + evt.substring(2); + + self[before] = function(fn) { + bind(listeners, before, fn); + return self; + }; + } + + self[evt] = function(fn) { + bind(listeners, evt, fn); + return self; + }; + + + // set common clip event listeners to player level + if (index == -1) { + if (self[before]) { + player[before] = self[before]; + } + if (self[evt]) { + player[evt] = self[evt]; + } + } + + }); + + extend(this, { + + + onCuepoint: function(points, fn) { + + // embedded cuepoints + if (arguments.length == 1) { + cuepoints.embedded = [null, points]; + return self; + } + + if (typeof points == 'number') { + points = [points]; + } + + var fnId = makeId(); + cuepoints[fnId] = [points, fn]; + + if (player.isLoaded()) { + player._api().fp_addCuepoints(points, index, fnId); + } + + return self; + }, + + update: function(json) { + extend(self, json); + + if (player.isLoaded()) { + player._api().fp_updateClip(json, index); + } + var conf = player._config(); + var clip = (index == -1) ? conf.clip : conf.playlist[index]; + extend(clip, json, true); + }, + + + // internal event for performing clip tasks. should be made private someday + _fireEvent: function(evt, arg1, arg2, target) { + + if (evt == 'onLoad') { + each(cuepoints, function(key, val) { + player._api().fp_addCuepoints(val[0], index, key); + }); + return false; + } + + // target clip we are working against + if (index != -1) { + target = self; + } + + if (evt == 'onCuepoint') { + var fn = cuepoints[arg1]; + if (fn) { + return fn[1].call(player, target, arg2); + } + } + + if (evt == 'onMetaData' || evt == 'onUpdate') { + + extend(target, arg1); + + if (!target.duration) { + target.duration = arg1.metaData.duration; + } else { + target.fullDuration = arg1.metaData.duration; + } + } + + var ret = true; + each(listeners[evt], function() { + ret = this.call(player, target, arg1); + }); + return ret; + } + + }); + + + // get cuepoints from config + if (json.onCuepoint) { + self.onCuepoint.apply(self, json.onCuepoint); + delete json.onCuepoint; + } + + // get other events + each(json, function(key, val) { + if (typeof val == 'function') { + bind(listeners, key, val); + delete json[key]; + } + }); + + + // setup common clip event callbacks for Player object too (shortcuts) + if (index == -1) { + player.onCuepoint = this.onCuepoint; + } + + }; + +//}}} + + +// {{{ Plugin + + var Plugin = function(name, json, player, fn) { + + var listeners = {}; + var self = this; + var hasMethods = false; + + if (fn) { + extend(listeners, fn); + } + + // custom callback functions in configuration + each(json, function(key, val) { + if (typeof val == 'function') { + listeners[key] = val; + delete json[key]; + } + }); + + // core plugin methods + extend(this, { + + animate: function(props, speed, fn) { + if (!props) { + return self; + } + + if (typeof speed == 'function') { + fn = speed; + speed = 500; + } + + if (typeof props == 'string') { + var key = props; + props = {}; + props[key] = speed; + speed = 500; + } + + if (fn) { + var fnId = makeId(); + listeners[fnId] = fn; + } + + if (speed === undefined) { speed = 500; } + json = player._api().fp_animate(name, props, speed, fnId); + return self; + }, + + css: function(props, val) { + if (val !== undefined) { + var css = {}; + css[props] = val; + props = css; + } + json = player._api().fp_css(name, props); + extend(self, json); + return self; + }, + + show: function() { + this.display = 'block'; + player._api().fp_showPlugin(name); + return self; + }, + + hide: function() { + this.display = 'none'; + player._api().fp_hidePlugin(name); + return self; + }, + + toggle: function() { + this.display = player._api().fp_togglePlugin(name); + return self; + }, + + fadeTo: function(o, speed, fn) { + + if (typeof speed == 'function') { + fn = speed; + speed = 500; + } + + if (fn) { + var fnId = makeId(); + listeners[fnId] = fn; + } + this.display = player._api().fp_fadeTo(name, o, speed, fnId); + this.opacity = o; + return self; + }, + + fadeIn: function(speed, fn) { + return self.fadeTo(1, speed, fn); + }, + + fadeOut: function(speed, fn) { + return self.fadeTo(0, speed, fn); + }, + + getName: function() { + return name; + }, + + + // internal method not meant to be used by clients + _fireEvent: function(evt, arg) { + + + // update plugins properties & methods + if (evt == 'onUpdate') { + var json = arg || player._api().fp_getPlugin(name); + if (!json) { return; } + + extend(self, json); + delete self.methods; + + if (!hasMethods) { + each(json.methods, function() { + var method = "" + this; + + self[method] = function() { + var a = [].slice.call(arguments); + var ret = player._api().fp_invoke(name, method, a); + return ret == 'undefined' ? self : ret; + }; + }); + hasMethods = true; + } + } + + // plugin callbacks + var fn = listeners[evt]; + + if (fn) { + + fn.call(self, arg); + + // "one-shot" callback + if (evt.substring(0, 1) == "_") { + delete listeners[evt]; + } + } + } + + }); + + }; + + +//}}} + + +function Player(wrapper, params, conf) { + + // private variables (+ arguments) + var + self = this, + api = null, + html, + commonClip, + playlist = [], + plugins = {}, + listeners = {}, + playerId, + apiId, + activeIndex, + swfHeight; + + +// {{{ public methods + + extend(self, { + + id: function() { + return playerId; + }, + + isLoaded: function() { + return (api !== null); + }, + + getParent: function() { + return wrapper; + }, + + hide: function() { + if (api) { api.style.height = "0px"; } + return self; + }, + + show: function() { + if (api) { api.style.height = swfHeight + "px"; } + return self; + }, + + isHidden: function() { + return api && parseInt(api.style.height, 10) === 0; + }, + + + load: function(fn) { + + if (!api && self._fireEvent("onBeforeLoad") !== false) { + + // unload all instances + each(players, function() { + this.unload(); + }); + + html = wrapper.innerHTML; + flashembed(wrapper, params, {config: conf}); + + // function argument + if (fn) { + fn.cached = true; + bind(listeners, "onLoad", fn); + } + } + + return self; + }, + + unload: function() { + + if (api && html.replace(/\s/g, '') !== '' && !api.fp_isFullscreen() && + self._fireEvent("onBeforeUnload") !== false) { + api.fp_close(); + wrapper.innerHTML = html; + self._fireEvent("onUnload"); + api = null; + } + + return self; + }, + + getClip: function(index) { + if (index === undefined) { + index = activeIndex; + } + return playlist[index]; + }, + + + getCommonClip: function() { + return commonClip; + }, + + getPlaylist: function() { + return playlist; + }, + + getPlugin: function(name) { + var plugin = plugins[name]; + + // create plugin if nessessary + if (!plugin && self.isLoaded()) { + var json = self._api().fp_getPlugin(name); + if (json) { + plugin = new Plugin(name, json, self); + plugins[name] = plugin; + } + } + return plugin; + }, + + getScreen: function() { + return self.getPlugin("screen"); + }, + + getControls: function() { + return self.getPlugin("controls"); + }, + + getConfig: function() { + return clone(conf); + }, + + getFlashParams: function() { + return params; + }, + + loadPlugin: function(name, url, props, fn) { + + // properties not supplied + if (typeof props == 'function') { + fn = props; + props = {}; + } + + // if fn not given, make a fake id so that plugin's onUpdate get's fired + var fnId = fn ? makeId() : "_"; + self._api().fp_loadPlugin(name, url, props, fnId); + + // create new plugin + var arg = {}; + arg[fnId] = fn; + var p = new Plugin(name, null, self, arg); + plugins[name] = p; + return p; + }, + + + getState: function() { + return api ? api.fp_getState() : -1; + }, + + // "lazy" play + play: function(clip) { + + function play() { + if (clip !== undefined) { + self._api().fp_play(clip); + } else { + self._api().fp_play(); + } + } + + if (api) { + play(); + + } else { + self.load(function() { + play(); + }); + } + + return self; + }, + + getVersion: function() { + var js = "flowplayer.js 3.0.0-rc2"; + if (api) { + var ver = api.fp_getVersion(); + ver.push(js); + return ver; + } + return js; + }, + + _api: function() { + if (!api) { + throw "Flowplayer " +self.id()+ " not loaded. Try moving your call to player's onLoad event"; + } + return api; + }, + + _config: function() { + return conf; + } + + }); + + + // event handlers + each(("Click*,Load*,Unload*,Keypress*,Volume*,Mute*,Unmute*,PlaylistReplace,Fullscreen*,FullscreenExit,Error").split(","), + function() { + var name = "on" + this; + + // before event + if (name.indexOf("*") != -1) { + name = name.substring(0, name.length -1); + var name2 = "onBefore" + name.substring(2); + self[name2] = function(fn) { + bind(listeners, name2, fn); + return self; + }; + } + + // normal event + self[name] = function(fn) { + bind(listeners, name, fn); + return self; + }; + } + ); + + + // core API methods + each(("pause,resume,mute,unmute,stop,toggle,seek,getStatus,getVolume,setVolume,getTime,isPaused,isPlaying,startBuffering,stopBuffering,isFullscreen,reset").split(","), + function() { + var name = this; + + self[name] = function(arg) { + if (!api) { return self; } + var ret = (arg === undefined) ? api["fp_" + name]() : api["fp_" + name](arg); + return ret == 'undefined' ? self : ret; + }; + } + ); + +//}}} + + +// {{{ public method: _fireEvent + + self._fireEvent = function(evt, arg0, arg1, arg2) { + + if (conf.debug) { + log(arguments); + } + + // internal onLoad + if (evt == 'onLoad' && !api) { + + api = api || el(apiId); + swfHeight = api.clientHeight; + + each(playlist, function() { + this._fireEvent("onLoad"); + }); + + each(plugins, function(name, p) { + p._fireEvent("onUpdate"); + }); + + + commonClip._fireEvent("onLoad"); + } + + if (evt == 'onContextMenu') { + each(conf.contextMenu[arg0], function(key, fn) { + fn.call(self); + }); + return; + } + + if (evt == 'onPluginEvent') { + var name = arg0.name || arg0; + var p = plugins[name]; + if (p) { + if (arg0.name) { + p._fireEvent("onUpdate", arg0); + } + p._fireEvent(arg1); + } + return; + } + + // onPlaylistReplace + if (evt == 'onPlaylistReplace') { + playlist = []; + var index = 0; + each(arg0, function() { + playlist.push(new Clip(this, index++)); + }); + } + + var ret = true; + + // clip event + if (arg0 === 0 || (arg0 && arg0 >= 0)) { + + activeIndex = arg0; + var clip = playlist[arg0]; + + if (!clip || clip._fireEvent(evt, arg1, arg2) !== false) { + + // clip argument is given for common clip, because it behaves as the target + ret = commonClip._fireEvent(evt, arg1, arg2, clip); + } + } + + // player event + var i = 0; + each(listeners[evt], function() { + ret = this.call(self, arg0); + + // remove cached entry + if (this.cached) { + listeners[evt].splice(i, 1); + } + + // break loop + if (ret === false) { return false; } + i++; + + }); + + return ret; + }; + +//}}} + + +// {{{ init + + function init() { + + if ($f(wrapper)) { + return null; + } + + // register this player into global array of instances + players.push(self); + + + // flashembed parameters + if (typeof params == 'string') { + params = {src: params}; + } + + // playerId + playerId = wrapper.id || "fp" + makeId(); + apiId = params.id || playerId + "_api"; + params.id = apiId; + conf.playerId = playerId; + + + // plain url is given as config + if (typeof conf == 'string') { + conf = {clip:{url:conf}}; + } + + // common clip is always there + conf.clip = conf.clip || {}; + commonClip = new Clip(conf.clip, -1, self); + + + // wrapper href as playlist + if (wrapper.getAttribute("href")) { + conf.playlist = [{url:wrapper.getAttribute("href", 2)}]; + } + + // playlist + conf.playlist = conf.playlist || [conf.clip]; + + var index = 0; + each(conf.playlist, function() { + + var clip = this; + + // clip is an array, we don't allow that + if (typeof clip == 'object' && clip.length) { + clip = "" + clip; + } + + if (!clip.url && typeof clip == 'string') { + clip = {url: clip}; + } + + // populate common clip properties to each clip + extend(clip, conf.clip, true); + + // modify configuration playlist + conf.playlist[index] = clip; + + // populate playlist array + clip = new Clip(clip, index, self); + playlist.push(clip); + index++; + }); + + + // event listeners + each(conf, function(key, val) { + if (typeof val == 'function') { + bind(listeners, key, val); + delete conf[key]; + } + }); + + + // plugins + each(conf.plugins, function(name, val) { + if (val) { + plugins[name] = new Plugin(name, val, self); + } + }); + + + // setup controlbar plugin if not explicitly defined + if (!conf.plugins || conf.plugins.controls === undefined) { + plugins.controls = new Plugin("controls", null, self); + } + + // Flowplayer uses black background by default + params.bgcolor = params.bgcolor || "#000000"; + + + // setup default settings for express install + params.version = params.version || [9,0]; + params.expressInstall = 'http://www.flowplayer.org/swf/expressinstall.swf'; + + + // click function + function doClick(e) { + if (self._fireEvent("onBeforeClick") !== false) { + self.load(); + } + return stopEvent(e); + } + + // defer loading upon click + html = wrapper.innerHTML; + if (html.replace(/\s/g, '') !== '') { + + if (wrapper.addEventListener) { + wrapper.addEventListener("click", doClick, false); + + } else if (wrapper.attachEvent) { + wrapper.attachEvent("onclick", doClick); + } + + // player is loaded upon page load + } else { + + // prevent default action from wrapper (safari problem) loaded + if (wrapper.addEventListener) { + wrapper.addEventListener("click", stopEvent, false); + } + + // load player + self.load(); + } + + } + + // possibly defer initialization until DOM get's loaded + if (typeof wrapper == 'string') { + flashembed.domReady(function() { + var node = el(wrapper); + + if (!node) { + throw "Flowplayer cannot access element: " + wrapper; + } else { + wrapper = node; + init(); + } + }); + + // we have a DOM element so page is already loaded + } else { + init(); + } + + +//}}} + + +} + + +// {{{ flowplayer() & statics + +// container for player instances +var players = []; + + +// this object is returned when multiple player's are requested +function Iterator(arr) { + + this.length = arr.length; + + this.each = function(fn) { + each(arr, fn); + }; + + this.size = function() { + return arr.length; + }; +} + +// these two variables are the only global variables +window.flowplayer = window.$f = function() { + + var instance = null; + var arg = arguments[0]; + + + // $f() + if (!arguments.length) { + each(players, function() { + if (this.isLoaded()) { + instance = this; + return false; + } + }); + + return instance || players[0]; + } + + if (arguments.length == 1) { + + // $f(index); + if (typeof arg == 'number') { + return players[arg]; + + + // $f(wrapper || 'containerId' || '*'); + } else { + + // $f("*"); + if (arg == '*') { + return new Iterator(players); + } + + // $f(wrapper || 'containerId'); + each(players, function() { + if (this.id() == arg.id || this.id() == arg || this.getParent() == arg) { + instance = this; + return false; + } + }); + + return instance; + } + } + + // instance builder + if (arguments.length > 1) { + + var swf = arguments[1]; + var conf = (arguments.length == 3) ? arguments[2] : {}; + + if (typeof arg == 'string') { + + // select arg by classname + if (arg.indexOf(".") != -1) { + var instances = []; + + each(select(arg), function() { + instances.push(new Player(this, clone(swf), clone(conf))); + }); + + return new Iterator(instances); + + // select node by id + } else { + var node = el(arg); + return new Player(node !== null ? node : arg, swf, conf); + } + + + // arg is a DOM element + } else if (arg) { + return new Player(arg, swf, conf); + } + + } + + return null; +}; + +extend(window.$f, { + + // called by Flash External Interface + fireEvent: function(id, evt, a0, a1, a2) { + var p = $f(id); + return p ? p._fireEvent(evt, a0, a1, a2) : null; + }, + + + // create plugins by modifying Player's prototype + addPlugin: function(name, fn) { + Player.prototype[name] = fn; + return $f; + }, + + // utility methods for plugin developers + each: each, + + extend: extend + +}); + +//}}} + + +//{{{ jQuery support + +if (typeof jQuery == 'function') { + + jQuery.prototype.flowplayer = function(params, conf) { + + // select instances + if (!arguments.length || typeof arguments[0] == 'number') { + var arr = []; + this.each(function() { + var p = $f(this); + if (p) { + arr.push(p); + } + }); + return arguments.length ? arr[arguments[0]] : new Iterator(arr); + } + + // create flowplayer instances + return this.each(function() { + $f(this, clone(params), conf ? clone(conf) : {}); + }); + + }; + +} + +//}}} + + +})(); +/** + * flashembed 0.33. Adobe Flash embedding script + * + * http://flowplayer.org/tools/flash-embed.html + * + * Copyright (c) 2008 Tero Piirainen (support@flowplayer.org) + * + * Released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * >> Basically you can do anything you want but leave this header as is << + * + * first version 0.01 - 03/11/2008 + * version 0.33 - Mon Nov 03 2008 15:37:15 GMT-0000 (GMT+00:00) + */ +(function() { + +//{{{ utility functions + +var jQ = typeof jQuery == 'function'; + + +// from "Pro JavaScript techniques" by John Resig +function isDomReady() { + if (domReady.done) { return false; } + + var d = document; + if (d && d.getElementsByTagName && d.getElementById && d.body) { + clearInterval(domReady.timer); + domReady.timer = null; + + for (var i = 0; i < domReady.ready.length; i++) { + domReady.ready[i].call(); + } + + domReady.ready = null; + domReady.done = true; + } +} + +// if jQuery is present, use it's more effective domReady method +var domReady = jQ ? jQuery : function(f) { + + if (domReady.done) { + return f(); + } + + if (domReady.timer) { + domReady.ready.push(f); + + } else { + domReady.ready = [f]; + domReady.timer = setInterval(isDomReady, 13); + } +}; + + +// override extend params function +function extend(to, from) { + if (from) { + for (key in from) { + if (from.hasOwnProperty(key)) { + to[key] = from[key]; + } + } + } +} + + +function concatVars(vars) { + var out = ""; + + for (var key in vars) { + if (vars[key]) { + out += [key] + '=' + toString(vars[key]) + '&'; + } + } + return out.substring(0, out.length -1); +} + + + +// JSON.toString() function +function toString(obj) { + + switch (typeOf(obj)){ + case 'string': + obj = obj.replace(new RegExp('(["\\\\])', 'g'), '\\$1'); + + // flash does not handle %- characters well. transforms "50%" to "50pct" (a dirty hack, I admit) + obj = obj.replace(/^\s?(\d+)%/, "$1pct"); + return '"' +obj+ '"'; + + case 'array': + return '['+ map(obj, function(el) { + return toString(el); + }).join(',') +']'; + + case 'function': + return '"function()"'; + + case 'object': + var str = []; + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + str.push('"'+prop+'":'+ toString(obj[prop])); + } + } + return '{'+str.join(',')+'}'; + } + + // replace ' --> " and remove spaces + return String(obj).replace(/\s/g, " ").replace(/\'/g, "\""); +} + + +// private functions +function typeOf(obj) { + if (obj === null || obj === undefined) { return false; } + var type = typeof obj; + return (type == 'object' && obj.push) ? 'array' : type; +} + + +// version 9 bugfix: (http://blog.deconcept.com/2006/07/28/swfobject-143-released/) +if (window.attachEvent) { + window.attachEvent("onbeforeunload", function() { + __flash_unloadHandler = function() {}; + __flash_savedUnloadHandler = function() {}; + }); +} + +function map(arr, func) { + var newArr = []; + for (var i in arr) { + if (arr.hasOwnProperty(i)) { + newArr[i] = func(arr[i]); + } + } + return newArr; +} + +//}}} + + +window.flashembed = function(root, userParams, flashvars) { + + +//{{{ getHTML + + function getHTML() { + + var html = ""; + if (typeof flashvars == 'function') { flashvars = flashvars(); } + + + // sometimes ie fails to load flash if it's on cache + params.src += ((params.src.indexOf("?") != -1 ? "&" : "?") + Math.random()); + + + // mozilla + if (navigator.plugins && navigator.mimeTypes && navigator.mimeTypes.length) { + + html = ''; + + params.id = params.src = params.width = params.height = null; + + for (var k in params) { + if (params[k] !== null) { + html += '\n\t'; + } + } + + if (flashvars) { + html += '\n\t'; + } + + html += ""; + if (debug) { + alert(html); + } + + } + + return html; + } + + //}}} + + +//{{{ construction + + // setup params + var params = { + + // very common params + src: '#', + width: '100%', + height: '100%', + + // flashembed specific options + version:null, + onFail:null, + expressInstall:null, + debug: false, + + // flashembed defaults + // bgcolor: 'transparent', + allowfullscreen: true, + allowscriptaccess: 'always', + quality: 'high', + type: 'application/x-shockwave-flash', + pluginspage: 'http://www.adobe.com/go/getflashplayer' + }; + + + if (typeof userParams == 'string') { + userParams = {src: userParams}; + } + + extend(params, userParams); + + var version = flashembed.getVersion(); + var required = params.version; + var express = params.expressInstall; + var debug = params.debug; + + + if (typeof root == 'string') { + var el = document.getElementById(root); + if (el) { + root = el; + } else { + domReady(function() { + flashembed(root, userParams, flashvars); + }); + return; + } + } + + if (!root) { return; } + + + // is supported + if (!required || flashembed.isSupported(required)) { + params.onFail = params.version = params.expressInstall = params.debug = null; + + // root.innerHTML may cause broplems: http://domscripting.com/blog/display/99 + // thanks to: Ryan Rud + // var tmp = document.createElement("extradiv"); + // tmp.innerHTML = getHTML(); + // root.appendChild(tmp); + + root.innerHTML = getHTML(); + + // return our API + return root.firstChild; + + // custom fail event + } else if (params.onFail) { + var ret = params.onFail.call(params, flashembed.getVersion(), flashvars); + if (ret === true) { root.innerHTML = ret; } + + + // express install + } else if (required && express && flashembed.isSupported([6,65])) { + + extend(params, {src: express}); + + flashvars = { + MMredirectURL: location.href, + MMplayerType: 'PlugIn', + MMdoctitle: document.title + }; + + root.innerHTML = getHTML(); + + // not supported + } else { + + // minor bug fixed here 08.04.2008 (thanks JRodman) + + if (root.innerHTML.replace(/\s/g, '') !== '') { + // custom content was supplied + + } else { + root.innerHTML = + "

Flash version " + required + " or greater is required

" + + "

" + + (version[0] > 0 ? "Your version is " + version : "You have no flash plugin installed") + + "

" + + "

Download latest version from here

"; + } + } + + return root; + +//}}} + + +}; + + +//{{{ static methods + +extend(window.flashembed, { + + // arr[major, minor, fix] + getVersion: function() { + + var version = [0, 0]; + + if (navigator.plugins && typeof navigator.plugins["Shockwave Flash"] == "object") { + var _d = navigator.plugins["Shockwave Flash"].description; + if (typeof _d != "undefined") { + _d = _d.replace(/^.*\s+(\S+\s+\S+$)/, "$1"); + var _m = parseInt(_d.replace(/^(.*)\..*$/, "$1"), 10); + var _r = /r/.test(_d) ? parseInt(_d.replace(/^.*r(.*)$/, "$1"), 10) : 0; + version = [_m, _r]; + } + + } else if (window.ActiveXObject) { + + try { // avoid fp 6 crashes + var _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7"); + + } catch(e) { + try { + _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6"); + version = [6, 0]; + _a.AllowScriptAccess = "always"; // throws if fp < 6.47 + + } catch(ee) { + if (version[0] == 6) { return; } + } + try { + _a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); + } catch(eee) { + + } + + } + + if (typeof _a == "object") { + _d = _a.GetVariable("$version"); // bugs in fp 6.21 / 6.23 + if (typeof _d != "undefined") { + _d = _d.replace(/^\S+\s+(.*)$/, "$1").split(","); + version = [parseInt(_d[0], 10), parseInt(_d[2], 10)]; + } + } + } + + return version; + }, + + isSupported: function(version) { + var now = flashembed.getVersion(); + var ret = (now[0] > version[0]) || (now[0] == version[0] && now[1] >= version[1]); + return ret; + }, + + domReady: domReady, + + // returns a String representation from JSON object + toString: toString + +}); + +//}}} + + +// setup jquery support +if (jQ) { + + jQuery.prototype.flashembed = function(params, flashvars) { + return this.each(function() { + flashembed(this, params, flashvars); + }); + }; + +} + +})(); diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js new file mode 100644 index 0000000000..a0fcabd066 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.min.js @@ -0,0 +1,15 @@ +/** + * flowplayer.js 3.0.0-rc2. The Flowplayer API. + * + * This file is part of Flowplayer, http://flowplayer.org + * + * Author: Tero Piirainen, + * Copyright (c) 2008 Flowplayer Ltd + * + * Released under the MIT License: + * http://www.opensource.org/licenses/mit-license.php + * + * Version: 3.0.0-rc2 - Fri Nov 07 2008 16:50:52 GMT-0000 (GMT+00:00) + */ +(function(){function log(args){if(typeof opera=='object'){opera.postError("$f.fireEvent: "+args.join(" | "));}else if(typeof console=='object'){console.log("$f.fireEvent",[].slice.call(args));}}function clone(obj){if(!obj||typeof obj!='object'){return obj;}var temp=new obj.constructor();for(var key in obj){if(obj.hasOwnProperty(key)){temp[key]=clone(obj[key]);}}return temp;}function each(obj,fn){if(!obj){return;}var name,i=0,length=obj.length;if(length===undefined){for(name in obj){if(fn.call(obj[name],name,obj[name])===false){break;}}}else{for(var value=obj[0];i=0)){activeIndex=arg0;var clip=playlist[arg0];if(!clip||clip._fireEvent(evt,arg1,arg2)!==false){ret=commonClip._fireEvent(evt,arg1,arg2,clip);}}var i=0;each(listeners[evt],function(){ret=this.call(self,arg0);if(this.cached){listeners[evt].splice(i,1);}if(ret===false){return false;}i++;});return ret;};function init(){if($f(wrapper)){return null;}players.push(self);if(typeof params=='string'){params={src:params};}playerId=wrapper.id||"fp"+makeId();apiId=params.id||playerId+"_api";params.id=apiId;conf.playerId=playerId;if(typeof conf=='string'){conf={clip:{url:conf}};}conf.clip=conf.clip||{};commonClip=new Clip(conf.clip,-1,self);if(wrapper.getAttribute("href")){conf.playlist=[{url:wrapper.getAttribute("href",2)}];}conf.playlist=conf.playlist||[conf.clip];var index=0;each(conf.playlist,function(){var clip=this;if(typeof clip=='object'&&clip.length){clip=""+clip;}if(!clip.url&&typeof clip=='string'){clip={url:clip};}extend(clip,conf.clip,true);conf.playlist[index]=clip;clip=new Clip(clip,index,self);playlist.push(clip);index++;});each(conf,function(key,val){if(typeof val=='function'){bind(listeners,key,val);delete conf[key];}});each(conf.plugins,function(name,val){if(val){plugins[name]=new Plugin(name,val,self);}});if(!conf.plugins||conf.plugins.controls===undefined){plugins.controls=new Plugin("controls",null,self);}params.bgcolor=params.bgcolor||"#000000";params.version=params.version||[9,0];params.expressInstall='http://www.flowplayer.org/swf/expressinstall.swf';function doClick(e){if(self._fireEvent("onBeforeClick")!==false){self.load();}return stopEvent(e);}html=wrapper.innerHTML;if(html.replace(/\s/g,'')!==''){if(wrapper.addEventListener){wrapper.addEventListener("click",doClick,false);}else if(wrapper.attachEvent){wrapper.attachEvent("onclick",doClick);}}else{if(wrapper.addEventListener){wrapper.addEventListener("click",stopEvent,false);}self.load();}}if(typeof wrapper=='string'){flashembed.domReady(function(){var node=el(wrapper);if(!node){throw"Flowplayer cannot access element: "+wrapper;}else{wrapper=node;init();}});}else{init();}}var players=[];function Iterator(arr){this.length=arr.length;this.each=function(fn){each(arr,fn);};this.size=function(){return arr.length;};}window.flowplayer=window.$f=function(){var instance=null;var arg=arguments[0];if(!arguments.length){each(players,function(){if(this.isLoaded()){instance=this;return false;}});return instance||players[0];}if(arguments.length==1){if(typeof arg=='number'){return players[arg];}else{if(arg=='*'){return new Iterator(players);}each(players,function(){if(this.id()==arg.id||this.id()==arg||this.getParent()==arg){instance=this;return false;}});return instance;}}if(arguments.length>1){var swf=arguments[1];var conf=(arguments.length==3)?arguments[2]:{};if(typeof arg=='string'){if(arg.indexOf(".")!=-1){var instances=[];each(select(arg),function(){instances.push(new Player(this,clone(swf),clone(conf)));});return new Iterator(instances);}else{var node=el(arg);return new Player(node!==null?node:arg,swf,conf);}}else if(arg){return new Player(arg,swf,conf);}}return null;};extend(window.$f,{fireEvent:function(id,evt,a0,a1,a2){var p=$f(id);return p?p._fireEvent(evt,a0,a1,a2):null;},addPlugin:function(name,fn){Player.prototype[name]=fn;return $f;},each:each,extend:extend});if(typeof jQuery=='function'){jQuery.prototype.flowplayer=function(params,conf){if(!arguments.length||typeof arguments[0]=='number'){var arr=[];this.each(function(){var p=$f(this);if(p){arr.push(p);}});return arguments.length?arr[arguments[0]]:new Iterator(arr);}return this.each(function(){$f(this,clone(params),conf?clone(conf):{});});};}})();(function(){var jQ=typeof jQuery=='function';function isDomReady(){if(domReady.done){return false;}var d=document;if(d&&d.getElementsByTagName&&d.getElementById&&d.body){clearInterval(domReady.timer);domReady.timer=null;for(var i=0;i';}else{html='';params.id=params.src=params.width=params.height=null;for(var k in params){if(params[k]!==null){html+='\n\t';}}if(flashvars){html+='\n\t';}html+="";if(debug){alert(html);}}return html;}var params={src:'#',width:'100%',height:'100%',version:null,onFail:null,expressInstall:null,debug:false,allowfullscreen:true,allowscriptaccess:'always',quality:'high',type:'application/x-shockwave-flash',pluginspage:'http://www.adobe.com/go/getflashplayer'};if(typeof userParams=='string'){userParams={src:userParams};}extend(params,userParams);var version=flashembed.getVersion();var required=params.version;var express=params.expressInstall;var debug=params.debug;if(typeof root=='string'){var el=document.getElementById(root);if(el){root=el;}else{domReady(function(){flashembed(root,userParams,flashvars);});return;}}if(!root){return;}if(!required||flashembed.isSupported(required)){params.onFail=params.version=params.expressInstall=params.debug=null;root.innerHTML=getHTML();return root.firstChild;}else if(params.onFail){var ret=params.onFail.call(params,flashembed.getVersion(),flashvars);if(ret===true){root.innerHTML=ret;}}else if(required&&express&&flashembed.isSupported([6,65])){extend(params,{src:express});flashvars={MMredirectURL:location.href,MMplayerType:'PlugIn',MMdoctitle:document.title};root.innerHTML=getHTML();}else{if(root.innerHTML.replace(/\s/g,'')!==''){}else{root.innerHTML="

Flash version "+required+" or greater is required

"+"

"+(version[0]>0?"Your version is "+version:"You have no flash plugin installed")+"

"+"

Download latest version from here

";}}return root;};extend(window.flashembed,{getVersion:function(){var version=[0,0];if(navigator.plugins&&typeof navigator.plugins["Shockwave Flash"]=="object"){var _d=navigator.plugins["Shockwave Flash"].description;if(typeof _d!="undefined"){_d=_d.replace(/^.*\s+(\S+\s+\S+$)/,"$1");var _m=parseInt(_d.replace(/^(.*)\..*$/,"$1"),10);var _r=/r/.test(_d)?parseInt(_d.replace(/^.*r(.*)$/,"$1"),10):0;version=[_m,_r];}}else if(window.ActiveXObject){try{var _a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");}catch(e){try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");version=[6,0];_a.AllowScriptAccess="always";}catch(ee){if(version[0]==6){return;}}try{_a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash");}catch(eee){}}if(typeof _a=="object"){_d=_a.GetVariable("$version");if(typeof _d!="undefined"){_d=_d.replace(/^\S+\s+(.*)$/,"$1").split(",");version=[parseInt(_d[0],10),parseInt(_d[2],10)];}}}return version;},isSupported:function(version){var now=flashembed.getVersion();var ret=(now[0]>version[0])||(now[0]==version[0]&&now[1]>=version[1]);return ret;},domReady:domReady,toString:toString});if(jQ){jQuery.prototype.flashembed=function(params,flashvars){return this.each(function(){flashembed(this,params,flashvars);});};}})(); \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf new file mode 100644 index 0000000000..70f6a17473 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc2.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf new file mode 100644 index 0000000000..9c7b3b4feb Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.0-rc4.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.1.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.1.swf new file mode 100644 index 0000000000..fcb9cf5166 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.1.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf new file mode 100644 index 0000000000..c5bec77f40 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta5.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf new file mode 100644 index 0000000000..703a96ab51 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.0-beta7.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf new file mode 100644 index 0000000000..9f08f4dcff Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.controls-3.0.1.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf new file mode 100644 index 0000000000..65a56059ea Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/flowplayer/flowplayer.pseudostreaming-3.0.0-beta3.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/README b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/README new file mode 100644 index 0000000000..3ec87577e5 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/README @@ -0,0 +1,11 @@ +This Kaltura Dynamic Player +Playlist (KDP) is a sub package of the taken Kaltura Community Edition (CE) Built from Kaltura.org source. + +The full Kaltura Community Edition is licensed under the (GNU Affero General Public License v3) + +And the source code is available on the kaltura.org site: +http://www.kaltura.org/project/kalturaCE + +More info about the KDP: +http://www.kaltura.org/kdp-dynamic-player-and-playlist-widget + + diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/kdp.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/kdp.swf new file mode 100755 index 0000000000..c105546577 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/kdp.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/wrapper.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/wrapper.swf new file mode 100755 index 0000000000..812a32bc17 Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/kaltura-player/wrapper.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/LICENSE.txt b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/LICENSE.txt new file mode 100644 index 0000000000..878ca2a00e --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/LICENSE.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/README.txt b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/README.txt new file mode 100644 index 0000000000..f8416e0a34 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/README.txt @@ -0,0 +1,17 @@ + + *** PRELIMINARY SOFTWARE *** + +Please note that this is a prerelease of the OMTK Flash library. No +quality of this software can be guaranteed. + + + *** haXe notes *** + +You need at least haXe 2.01 (with support for the new Flash 10 types) +to compile the haXe source. + + *** Flash notes *** + +I am not able to create a .SWC library from the haXe .SWF file. It's +therefore dynamically linked at runtime and hxmdct.swf must be placed +in the same directory as the "real" Flash movie. diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/hxmdct.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/hxmdct.swf new file mode 100644 index 0000000000..d314dee6de Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/hxmdct.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/omtkp.swf b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/omtkp.swf new file mode 100644 index 0000000000..4ec9bfa7db Binary files /dev/null and b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/omtkp.swf differ diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/Player.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/Player.as new file mode 100644 index 0000000000..6abe5d2ced --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/Player.as @@ -0,0 +1,106 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package { + + import org.omtk.vorbis.VorbisSound; + + import flash.display.Shape; + import flash.display.Sprite; + import flash.display.StageAlign; + import flash.display.StageQuality; + import flash.display.StageScaleMode; + import flash.net.*; + import flash.events.Event; + import flash.text.TextField; + import flash.utils.ByteArray; + import flash.utils.Endian; + import flash.utils.getTimer; + import flash.utils.setTimeout; + import flash.utils.setInterval; + import flash.external.ExternalInterface; + + [ SWF( backgroundColor = '#ffffff', width = '1', height = '1' ) ] + + public class Player extends Sprite { + + private var sound: VorbisSound; + private var initialized: Boolean = false; + + public function Player() { + if(stage != null) { + stage.frameRate = 20; + } + + setTimeout(registerJSCallbacks, 100); + initialized = true; + } + + private function registerJSCallbacks(): void { + if (ExternalInterface.available) { + ExternalInterface.addCallback("play", playJS); + ExternalInterface.addCallback("getMetaData", getMetaDataJS); + ExternalInterface.addCallback("getPosition", getPositionJS); + } + } + + public function playJS(url: String): void { + if(sound != null) { + sound.stop(); + } + sound = new VorbisSound(new URLRequest(url)); + sound.addEventListener(Event.COMPLETE, complete); + sound.addEventListener(VorbisSound.METADATA_UPDATE, metadataUpdate); + sound.play(); + } + + public function getMetaDataJS(key: String): String { + if(sound == null) { + return null; + } + else { + return sound.getMetaData(key); + } + } + + public function getPositionJS(): int { + if(sound == null) { + return -1; + } + else { + return sound.position; + } + } + + private function complete(event: Event):void { + trace("complete"); + if(ExternalInterface.available) { + ExternalInterface.call("OMTK_P_complete"); + } + } + + private function metadataUpdate(event: Event):void { + trace("metadata update: " + sound.getMetaData("TITLE")); + if(ExternalInterface.available) { + ExternalInterface.call("OMTK_P_metadataUpdate"); + } + } + + } + +} diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as new file mode 100644 index 0000000000..9b8a82aece --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/EndOfOggStreamError.as @@ -0,0 +1,29 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.ogg { + + public class EndOfOggStreamError extends Error { + + public function EndOfOggStreamError(message:String = null) { + super(message); + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as new file mode 100644 index 0000000000..d9d5d35ac8 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/LogicalOggStream.as @@ -0,0 +1,72 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.ogg { + + import org.omtk.util.BitByteArray; + import flash.utils.Endian; + + public class LogicalOggStream { + + private var source:UncachedUrlStream; + + private var pageIndex:int; + private var currentPage:OggPage; + private var currentSegmentIndex:int; + + public function LogicalOggStream(source:UncachedUrlStream) { + this.source = source; + } + + public function getNextOggPacket(): OggPacket { + + var res:BitByteArray = new BitByteArray(); + + var segmentLength:int = 0; + + if(currentPage == null) { + currentPage = source.getNextOggPage(); + } + + do { + if(currentSegmentIndex >= currentPage.segmentOffsets.length) { + currentSegmentIndex=0; + + if(currentPage.eos) { + throw new EndOfOggStreamError("End of OGG stream"); + } + + currentPage = source.getNextOggPage(); + } + + segmentLength = currentPage.segmentLengths[currentSegmentIndex]; + res.writeBytes(currentPage.data, currentPage.segmentOffsets[currentSegmentIndex], segmentLength); + currentSegmentIndex++; + } + while(segmentLength==255); + + res.position = 0; + + var lastPacket: Boolean = currentPage.eos && currentSegmentIndex == currentPage.segmentOffsets.length; + var lastGranulePosition: int = currentPage.absoluteGranulePosition; + + return new OggPacket(res, lastPacket, lastGranulePosition); + } + + } +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as new file mode 100644 index 0000000000..b7876ca56c --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPacket.as @@ -0,0 +1,49 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.ogg { + + import org.omtk.util.BitByteArray; + + public class OggPacket { + + private var _data: BitByteArray; + private var _lastPacket: Boolean; + private var _lastGranulePosition: int; + + public function OggPacket(data: BitByteArray, lastPacket: Boolean, lastGranulePosition: int) { + _data = data; + _lastPacket = lastPacket; + _lastGranulePosition = lastGranulePosition; + } + + public function get data(): BitByteArray { + return _data; + } + + public function get lastPacket(): Boolean { + return _lastPacket; + } + + public function get lastGranulePosition(): int { + return _lastGranulePosition; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as new file mode 100644 index 0000000000..8e90b08213 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/OggPage.as @@ -0,0 +1,116 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.ogg { + + import flash.net.*; + import flash.utils.ByteArray; + + public class OggPage { + + private var _version:int; + private var _continued:Boolean; + private var _bos:Boolean; + private var _eos:Boolean; + private var _absoluteGranulePosition:int; + private var _streamSerialNumber:int; + private var _pageSequenceNumber:int; + private var _pageCheckSum:int; + private var _segmentOffsets:Array; + private var _segmentLengths:Array; + private var _totalLength:int; + private var _data:ByteArray; + + public function OggPage(stream:URLStream) { + + var capture:int = stream.readInt(); + if(capture != 0x5367674f) { + throw new Error("Ogg page does not start with 'OggS': "+capture); + } + + _version = stream.readByte()&0xff; + var tmp:int = stream.readByte(); + + _continued = (tmp&1)!=0;; + _bos = (tmp&2)!=0; + _eos = (tmp&4)!=0; + + // absoluteGranulePosition is really 64 bits + _absoluteGranulePosition = stream.readUnsignedInt(); + stream.readUnsignedInt(); // last 32 bits of _absoluteGranulePosition + + _streamSerialNumber = stream.readUnsignedInt(); + _pageSequenceNumber = stream.readUnsignedInt(); + _pageCheckSum = stream.readUnsignedInt(); + + //trace("_pageSequenceNumber: " + _pageSequenceNumber); + + var pageSegments:int = stream.readUnsignedByte(); + + //stream.waitFor(pageSegments); + + _segmentOffsets = []; + _segmentLengths = []; + _data = new ByteArray(); + + var totalLength:int; + + var i:int; + var l:int; + + for( i= 0 ; i < pageSegments ; i++ ) { + l = stream.readUnsignedByte(); + _segmentLengths.push( l ); + _segmentOffsets.push( totalLength ); + totalLength += l; + } + + stream.readBytes(_data, 0, totalLength); + } + + public function get absoluteGranulePosition():int { + return _absoluteGranulePosition; + } + + public function get segmentOffsets():Array { + return _segmentOffsets; + } + + public function get segmentLengths():Array { + return _segmentLengths; + } + + public function get data():ByteArray { + return _data; + } + + public function get eos():Boolean { + return _eos; + } + + public function get bos():Boolean { + return _bos; + } + + public function get continued():Boolean { + return _continued; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as new file mode 100644 index 0000000000..6e4a34af8d --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/ogg/UncachedUrlStream.as @@ -0,0 +1,52 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.ogg { + + import flash.net.*; + import flash.utils.Endian; + import flash.events.HTTPStatusEvent; + import flash.events.ProgressEvent; + + public class UncachedUrlStream { + + private var source:URLStream; + + public function UncachedUrlStream(source: URLStream) { + this.source = source; + } + + public function get bytesAvailable():int { + return source.bytesAvailable; + } + + public function addEventListener(type:String, listener:Function):void { + source.addEventListener(type, listener); + } + + public function getLogicalOggStream():LogicalOggStream { + return new LogicalOggStream(this); + } + + public function getNextOggPage():OggPage { + return new OggPage(source); + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as new file mode 100644 index 0000000000..3c54f6f053 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/BitByteArray.as @@ -0,0 +1,75 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.util { + + import flash.utils.ByteArray; + import flash.utils.Endian; + import flash.errors.IllegalOperationError; + + public class BitByteArray extends ByteArray { + + private var currentByte:uint; + private var bitIndex:int = 8; + + public function BitByteArray() { + this.endian = Endian.LITTLE_ENDIAN; + } + + public function readBit():Boolean { + if (bitIndex > 7) { + bitIndex = 0; + currentByte = readUnsignedByte(); + } + return (currentByte & (1 << (bitIndex++))) != 0; + } + + public function readUnsignedBitwiseInt(bits:int):uint { + + var res:uint = 0; + + for (var i : int = 0; i < bits; i++) { + if (bitIndex > 7) { + bitIndex = 0; + currentByte = readUnsignedByte(); + } + if((currentByte & (1 << (bitIndex++))) != 0) { + res |= (1 << i); + } + } + + return res; + } + + public function readUnsignedHuffmanInt(root:HuffmanNode):uint { + + while (!root.hasValue) { + if (bitIndex > 7) { + bitIndex = 0; + currentByte = readUnsignedByte(); + } + root = (currentByte & (1 << (bitIndex++))) != 0 ? root._o1 : root._o0; + } + + return root._value; + } + + } + + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as new file mode 100644 index 0000000000..c8ce3ae7ea --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/util/HuffmanNode.as @@ -0,0 +1,92 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ +package org.omtk.util { + + public class HuffmanNode { + + private var _parent:HuffmanNode; + + public var _o0:HuffmanNode; + public var _o1:HuffmanNode; + + private var _depth:int; + + public var _value:int; + public var hasValue: Boolean; + private var _full:Boolean = false; + + public function HuffmanNode(parent:HuffmanNode = null, value:int = -1) { + _parent = parent; + if(_parent != null) { + _depth = _parent.depth+1; + } + _value = value; + _full = value >= 0; + hasValue = value >= 0; + } + + public function setNewValue(depth:int, value:uint):Boolean { + if (full) { + return false; + } + if (depth == 1) { + if (_o0 == null) { + _o0 = new HuffmanNode(this, value); + return true; + } else if (_o1 == null) { + _o1 = new HuffmanNode(this, value); + return true; + } else { + return false; + } + } else { + return o0.setNewValue(depth - 1, value) + ? true : o1.setNewValue(depth - 1, value); + } + } + + public function get value():uint { + return _value; + } + + public function get o0():HuffmanNode { + if(_o0 == null) { + _o0 = new HuffmanNode(this); + } + return _o0; + } + + public function get o1():HuffmanNode { + if(_o1 == null) { + _o1 = new HuffmanNode(this); + } + return _o1; + } + + public function get depth():int { + return _depth; + } + + public function get full():Boolean { + return _full ? true + : (_full = (_o0 != null && _o0.full && _o1 != null && _o1.full)); + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as new file mode 100644 index 0000000000..8cec99619e --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/AudioPacket.as @@ -0,0 +1,340 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.utils.getTimer; + import flash.utils.ByteArray; + import org.omtk.ogg.*; + import org.omtk.util.BitByteArray; + + public class AudioPacket { + + private var modeNumber:int; + private var mode:Mode; + private var mapping:Mapping; + private var n:int; + + private var blockFlag:Boolean; + private var previousWindowFlag:Boolean; + private var nextWindowFlag:Boolean; + + private var windowCenter:int; + private var leftWindowStart:int; + private var leftWindowEnd:int; + private var leftN:int; + private var rightWindowStart:int; + private var rightWindowEnd:int; + private var rightN:int; + + private var window:Vector.; + private var freq0:Vector.; + private var freq1:Vector.; + private var pcm0:Vector.; + private var pcm1:Vector.; + + private var channelFloors:Vector.; + private var noResidues:Vector.; + + private var _lastPacket: Boolean; + private var _lastGranulePosition: int; + + public function AudioPacket(vorbis:VorbisStream, packet: OggPacket, currentGranulePosition: int) { + + var source: BitByteArray = packet.data; + _lastPacket = packet.lastPacket; + _lastGranulePosition = packet.lastGranulePosition; + + var i:int; + var j:int; + var k:int; + + var sHeader:SetupHeader = vorbis.setupHeader; + var iHeader:IdentificationHeader = vorbis.identificationHeader; + var modes:Vector. = sHeader.modes; + var mappings:Vector. = sHeader.mappings; + var residues:Vector. = sHeader.residues; + var channels:int = iHeader.channels; + + if (source.readUnsignedBitwiseInt(1) != 0) { + throw new Error("Packet type mismatch when trying to create an audio packet."); + } + + modeNumber = source.readUnsignedBitwiseInt(Util.ilog(modes.length - 1)); + + mode = modes[modeNumber]; + + if(mode == null) { + throw new Error("Reference to invalid mode in audio packet."); + } + + mapping = mappings[mode.mapping]; + + var magnitudes:Vector. = mapping.magnitudes; + var angles:Vector. = mapping.angles; + + blockFlag = mode.blockFlag; + + var blockSize0:int = iHeader.blockSize0; + var blockSize1:int = iHeader.blockSize1; + + n = blockFlag ? blockSize1 : blockSize0; + + if (blockFlag) { + previousWindowFlag = source.readBit(); + nextWindowFlag = source.readBit(); + } + + windowCenter = n / 2; + + if (blockFlag && !previousWindowFlag) { + leftWindowStart = n / 4 - blockSize0 / 4; + leftWindowEnd = n / 4 + blockSize0 / 4; + leftN = blockSize0 / 2; + } else { + leftWindowStart = 0; + leftWindowEnd = n / 2; + leftN = windowCenter; + } + + if (blockFlag && !nextWindowFlag) { + rightWindowStart = n * 3 / 4 - blockSize0 / 4; + rightWindowEnd = n * 3 / 4 + blockSize0 / 4; + rightN = blockSize0 / 2; + } else { + rightWindowStart = windowCenter; + rightWindowEnd = n; + rightN = n / 2; + } + + window = getComputedWindow(vorbis); + + channelFloors = new Vector.(channels, true); + noResidues = new Vector.(channels, true); + + freq0 = new Vector.(n, true); + freq1 = new Vector.(n, true); + pcm0 = new Vector.(n, true); + pcm1 = new Vector.(n, true); + + var allFloorsEmpty: Boolean = true; + var submapNumber: int; + var floorNumber: int; + var decodedFloor: Floor; + + for(i = 0; i < channels; i++) { + submapNumber = mapping.mux[i]; + floorNumber = mapping.submapFloors[submapNumber]; + decodedFloor = sHeader.floors[floorNumber].decodeFloor(vorbis, source); + channelFloors[i] = decodedFloor; + noResidues[i] = decodedFloor == null; + if (decodedFloor != null) { + allFloorsEmpty = false; + } + } + + if(allFloorsEmpty) { + return; + } + + var mag: int; + var ang: int; + + for(i = 0; i < magnitudes.length; i++) { + mag = magnitudes[i]; + ang = angles[i]; + if (!noResidues[mag] || !noResidues[ang]) { + noResidues[mag] = false; + noResidues[ang] = false; + } + } + + var ch: int; + var doNotDecodeFlags: Vector.; + var residue:Residue; + + for(i = 0; i < mapping.submaps; i++) { + + doNotDecodeFlags = new Vector.(); + + for(j = 0; j < channels; j++) { + if(mapping.mux[j] == i) { + doNotDecodeFlags.push(noResidues[j]); + } + } + + residue = residues[mapping.submapResidues[i]]; + + residue.decodeResidue(vorbis, source, mode, ch, doNotDecodeFlags, freq0, freq1); + } + + var a: Number; + var m: Number; + + for(i = mapping.couplingSteps - 1; i >= 0; i--) { + + mag = magnitudes[i]; + ang = angles[i]; + + for (j = 0; j < freq0.length; j++) { + + a = ang == 0 ? freq0[j] : freq1[j]; + m = mag == 0 ? freq0[j] : freq1[j]; + + if(a > 0) { + if(ang == 0) { + freq0[j] = m > 0 ? m - a : m + a; + } + else { + freq1[j] = m > 0 ? m - a : m + a; + } + } + else { + if(mag == 0) { + freq0[j] = m > 0 ? m + a : m - a; + } + else { + freq1[j] = m > 0 ? m + a : m - a; + } + + if(ang == 0) { + freq0[j] = m; + } + else { + freq1[j] = m; + } + } + } + } + + if(channelFloors[0] != null) { + Floor(channelFloors[0]).computeFloor(freq0); + } + + if(channelFloors[1] != null) { + Floor(channelFloors[1]).computeFloor(freq1); + } + + // perform an inverse mdct to all channels + var mdct: Mdct = blockFlag ? iHeader.mdct1 : iHeader.mdct0; + mdct.imdct(freq0, window, pcm0); + mdct.imdct(freq1, window, pcm1); + + if(_lastPacket) { + if(leftWindowEnd - leftWindowStart > _lastGranulePosition - currentGranulePosition) { + leftWindowEnd = leftWindowStart + _lastGranulePosition - currentGranulePosition + } + if(rightWindowStart - leftWindowStart > _lastGranulePosition - currentGranulePosition) { + rightWindowStart = leftWindowStart + _lastGranulePosition - currentGranulePosition + } + } + + } + + private function getComputedWindow(vorbis:VorbisStream):Vector. { + + var i:int; + + var ix:int = (blockFlag ? 4 : 0) + (previousWindowFlag ? 2 : 0) + (nextWindowFlag ? 1 : 0); + var w:Vector. = vorbis.windows[ix]; + + var x:Number; + + if (w == null) { + w = new Vector.(n); + + for(i = 0; i < leftWindowStart; i++) { + w[i] = 0; + } + + for (i = 0; i < leftN; i++) { + x = (i + .5) / leftN * Math.PI / 2.; + x = Math.sin(x); + x *= x; + x *= Math.PI / 2.; + x = Math.sin(x); + w[i + leftWindowStart] = x; + } + + for (i = leftWindowEnd; i < rightWindowStart; i++) { + w[i] = 1; + } + + for (i = 0; i < rightN; i++) { + x = (rightN - i - .5) / rightN * Math.PI / 2.; + x = Math.sin(x); + x *= x; + x *= Math.PI / 2.; + x = Math.sin(x); + w[i + rightWindowStart] = x; + } + + for(i = rightN + rightWindowStart; i < n; i++) { + w[i] = 0; + } + + for(i = 0; i < w.length; i++) { + w[i] *= 0.5; + } + + vorbis.windows[ix] = w; + } + + return w; + } + + + public function readPcm(previousPacket:AudioPacket, target: ByteArray): int { + + var j:int; + var j2:int; + var ppcm0:Vector. = previousPacket.pcm0; + var ppcm1:Vector. = previousPacket.pcm1; + + j2 = previousPacket.rightWindowStart; + + for(j = leftWindowStart; j < leftWindowEnd; j++) { + target.writeFloat(pcm0[j] + ppcm0[j2]); + target.writeFloat(pcm1[j] + ppcm1[j2++]); + } + + for (j = leftWindowEnd; j < rightWindowStart; j++) { + target.writeFloat(pcm0[j]); + target.writeFloat(pcm1[j]); + } + + return numberOfSamples; + + } + + public function get numberOfSamples():int { + return rightWindowStart - leftWindowStart; + } + + public function get lastPacket(): Boolean { + return lastPacket; + } + + public function get lastGranulePosition(): int { + return lastGranulePosition; + } + + } + + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as new file mode 100644 index 0000000000..ed84041e08 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CodeBook.as @@ -0,0 +1,223 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.*; + + public class CodeBook { + + private var entries:uint; + private var entryLengths:Vector.; + private var valueVector:Vector.>; + + private var codeBookLookupType:int = -1; + + public var huffmanRoot:HuffmanNode; + public var dimensions:uint; + + public function CodeBook( source: BitByteArray ) { + + var i:int; + var j:int; + + var syncPattern:uint = source.readUnsignedBitwiseInt(24); + if(syncPattern !=0x564342) { + throw new IllegalOperationError("Illegal codebook sync pattern: "+syncPattern); + } + + dimensions = source.readUnsignedBitwiseInt(16); + entries = source.readUnsignedBitwiseInt(24); + + entryLengths = new Vector.(entries); + + var ordered:Boolean = source.readBit(); + + if(ordered) { + var cl:int = source.readUnsignedBitwiseInt(5)+1; + for(i=0; ientryLengths.length) { + throw new Error("The codebook entry length list is longer than the actual number of entry lengths."); + } + for(j=i; j = new Vector.(codeBookLookupValues); + + for(i=0; i < codeBookMultiplicands.length; i++) { + codeBookMultiplicands[i]=source.readUnsignedBitwiseInt(codeBookValueBits); + } + + valueVector = new Vector.>(entries); + + if(codeBookLookupType==1) { + for(i=0; i(dimensions); + var last:Number = 0.0; + var indexDivisor:uint = 1; + for(j=0; j):Boolean { + + var i:int; + + huffmanRoot = new HuffmanNode(); + for(i=0; i0) { + if(!huffmanRoot.setNewValue(el, i)) { + return false; + } + } + } + return true; + } + + + public function readVvAdd(a0:Vector., a1:Vector., left:Boolean, right:Boolean, source:BitByteArray, offset:int, length:int):void { + + var i:int; + var j:int; + + if (!left && !right) { + return; + } + + // 1 or 2 channels + var ch:int = + left && right ? 2 : 1; + + var lim:int; + var ix:int; + var ve:Vector.; + + if(left && right) { + lim = (offset + length) / 2; + var chptr:int = 0; + for (i = offset / 2; i < lim;) { + ix = source.readUnsignedHuffmanInt(huffmanRoot); + ve = valueVector[ix]; + for (j = 0; j < dimensions; j++) { + if(chptr == 0) { + a0[i] += ve[j]; + } + else { + a1[i] += ve[j]; + } + chptr++; + if(chptr == 2) { + chptr = 0; + i++; + } + } + } + } + else { + var a : Vector. = left ? a0 : a1; + lim = offset + length; + for (i = offset; i < lim;) { + ve = valueVector[source.readUnsignedHuffmanInt(huffmanRoot)]; + for (j = 0; j < dimensions; j++) { + a[i] += ve[j]; + i++; + } + } + } + + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as new file mode 100644 index 0000000000..6cf3bfded5 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/CommentHeader.as @@ -0,0 +1,81 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.utils.ByteArray; + import flash.utils.Endian; + import flash.utils.Dictionary; + import org.omtk.ogg.*; + + public class CommentHeader { + + private var _vendor:String; + private var _comments:Dictionary = new Dictionary(); + + public function CommentHeader(source:ByteArray) + { + init( source ); + } + + private function init( source: ByteArray ): void + { + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + + _vendor = readUtf8String(source); + + var ucLength:int = source.readUnsignedInt(); + + for(var i:int = 0; i < ucLength; i++) { + var comment:String = readUtf8String(source); + var ix:int = comment.indexOf('='); + var key:String = comment.substring(0, ix); + var value:String = comment.substring(ix+1); + _comments[key.toUpperCase()]=value; + } + } + + private function readUtf8String(source:ByteArray):String { + var length:uint = source.readUnsignedInt(); + return source.readUTFBytes(length); + } + + public function get vendor():String { + return _vendor; + } + + public function get comments():Dictionary { + return _comments; + } + + public function get artist():String { + return _comments["ARTIST"]; + } + + public function get title():String { + return _comments["TITLE"]; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as new file mode 100644 index 0000000000..f8eac3ba22 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor.as @@ -0,0 +1,122 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.BitByteArray; + + public class Floor { + + public static const DB_STATIC_TABLE:Vector. = Vector.([ + 1.0649863e-07, 1.1341951e-07, 1.2079015e-07, 1.2863978e-07, + 1.3699951e-07, 1.4590251e-07, 1.5538408e-07, 1.6548181e-07, + 1.7623575e-07, 1.8768855e-07, 1.9988561e-07, 2.128753e-07, + 2.2670913e-07, 2.4144197e-07, 2.5713223e-07, 2.7384213e-07, + 2.9163793e-07, 3.1059021e-07, 3.3077411e-07, 3.5226968e-07, + 3.7516214e-07, 3.9954229e-07, 4.2550680e-07, 4.5315863e-07, + 4.8260743e-07, 5.1396998e-07, 5.4737065e-07, 5.8294187e-07, + 6.2082472e-07, 6.6116941e-07, 7.0413592e-07, 7.4989464e-07, + 7.9862701e-07, 8.5052630e-07, 9.0579828e-07, 9.6466216e-07, + 1.0273513e-06, 1.0941144e-06, 1.1652161e-06, 1.2409384e-06, + 1.3215816e-06, 1.4074654e-06, 1.4989305e-06, 1.5963394e-06, + 1.7000785e-06, 1.8105592e-06, 1.9282195e-06, 2.0535261e-06, + 2.1869758e-06, 2.3290978e-06, 2.4804557e-06, 2.6416497e-06, + 2.8133190e-06, 2.9961443e-06, 3.1908506e-06, 3.3982101e-06, + 3.6190449e-06, 3.8542308e-06, 4.1047004e-06, 4.3714470e-06, + 4.6555282e-06, 4.9580707e-06, 5.2802740e-06, 5.6234160e-06, + 5.9888572e-06, 6.3780469e-06, 6.7925283e-06, 7.2339451e-06, + 7.7040476e-06, 8.2047000e-06, 8.7378876e-06, 9.3057248e-06, + 9.9104632e-06, 1.0554501e-05, 1.1240392e-05, 1.1970856e-05, + 1.2748789e-05, 1.3577278e-05, 1.4459606e-05, 1.5399272e-05, + 1.6400004e-05, 1.7465768e-05, 1.8600792e-05, 1.9809576e-05, + 2.1096914e-05, 2.2467911e-05, 2.3928002e-05, 2.5482978e-05, + 2.7139006e-05, 2.8902651e-05, 3.0780908e-05, 3.2781225e-05, + 3.4911534e-05, 3.7180282e-05, 3.9596466e-05, 4.2169667e-05, + 4.4910090e-05, 4.7828601e-05, 5.0936773e-05, 5.4246931e-05, + 5.7772202e-05, 6.1526565e-05, 6.5524908e-05, 6.9783085e-05, + 7.4317983e-05, 7.9147585e-05, 8.4291040e-05, 8.9768747e-05, + 9.5602426e-05, 0.00010181521, 0.00010843174, 0.00011547824, + 0.00012298267, 0.00013097477, 0.00013948625, 0.00014855085, + 0.00015820453, 0.00016848555, 0.00017943469, 0.00019109536, + 0.00020351382, 0.00021673929, 0.00023082423, 0.00024582449, + 0.00026179955, 0.00027881276, 0.00029693158, 0.00031622787, + 0.00033677814, 0.00035866388, 0.00038197188, 0.00040679456, + 0.00043323036, 0.00046138411, 0.00049136745, 0.00052329927, + 0.00055730621, 0.00059352311, 0.00063209358, 0.00067317058, + 0.00071691700, 0.00076350630, 0.00081312324, 0.00086596457, + 0.00092223983, 0.00098217216, 0.0010459992, 0.0011139742, + 0.0011863665, 0.0012634633, 0.0013455702, 0.0014330129, + 0.0015261382, 0.0016253153, 0.0017309374, 0.0018434235, + 0.0019632195, 0.0020908006, 0.0022266726, 0.0023713743, + 0.0025254795, 0.0026895994, 0.0028643847, 0.0030505286, + 0.0032487691, 0.0034598925, 0.0036847358, 0.0039241906, + 0.0041792066, 0.0044507950, 0.0047400328, 0.0050480668, + 0.0053761186, 0.0057254891, 0.0060975636, 0.0064938176, + 0.0069158225, 0.0073652516, 0.0078438871, 0.0083536271, + 0.0088964928, 0.009474637, 0.010090352, 0.010746080, + 0.011444421, 0.012188144, 0.012980198, 0.013823725, + 0.014722068, 0.015678791, 0.016697687, 0.017782797, + 0.018938423, 0.020169149, 0.021479854, 0.022875735, + 0.024362330, 0.025945531, 0.027631618, 0.029427276, + 0.031339626, 0.033376252, 0.035545228, 0.037855157, + 0.040315199, 0.042935108, 0.045725273, 0.048696758, + 0.051861348, 0.055231591, 0.058820850, 0.062643361, + 0.066714279, 0.071049749, 0.075666962, 0.080584227, + 0.085821044, 0.091398179, 0.097337747, 0.10366330, + 0.11039993, 0.11757434, 0.12521498, 0.13335215, + 0.14201813, 0.15124727, 0.16107617, 0.17154380, + 0.18269168, 0.19456402, 0.20720788, 0.22067342, + 0.23501402, 0.25028656, 0.26655159, 0.28387361, + 0.30232132, 0.32196786, 0.34289114, 0.36517414, + 0.38890521, 0.41417847, 0.44109412, 0.46975890, + 0.50028648, 0.53279791, 0.56742212, 0.60429640, + 0.64356699, 0.68538959, 0.72993007, 0.77736504, + 0.82788260, 0.88168307, 0.9389798, 1.0]); + + public static function createInstance(source:BitByteArray, header:SetupHeader):Floor { + + var type:int = source.readUnsignedBitwiseInt(16); + + switch (type) { + case 0: + return new Floor0(source, header); + case 1: + return new Floor1(source, header); + default: + throw new Error("Floor type " + type + " is not supported."); + } + } + + public function get type():int { + throw new IllegalOperationError("operation not implemented"); + } + + public function decodeFloor(vorbis:VorbisStream, source:BitByteArray):Floor1 { + throw new IllegalOperationError("operation not implemented"); + } + + public function computeFloor(vector:Vector.):void { + throw new IllegalOperationError("operation not implemented"); + } + + + } + + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as new file mode 100644 index 0000000000..3f38dc842f --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor0.as @@ -0,0 +1,56 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.BitByteArray; + + public class Floor0 extends Floor { + + private var order:int; + private var rate:int; + private var barkMapSize:int; + private var amplitudeBits:int; + private var amplitudeOffset:int; + + private var bookList:Vector.; + + public function Floor0(source:BitByteArray, header:SetupHeader) { + + order = source.readUnsignedBitwiseInt(8); + rate = source.readUnsignedBitwiseInt(16); + barkMapSize = source.readUnsignedBitwiseInt(16); + amplitudeBits = source.readUnsignedBitwiseInt(6); + amplitudeOffset = source.readUnsignedBitwiseInt(8); + + var bookCount:uint = source.readUnsignedBitwiseInt(4) + 1; + bookList = new Vector.(bookCount); + + var i:int; + + for (i = 0; i < bookList.length; i++) { + bookList[i] = source.readUnsignedBitwiseInt(8); + if (bookList[i] > header.codeBooks.length) { + throw new Error("A floor0_book_list entry is higher than the code book count."); + } + } + } + + } +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as new file mode 100644 index 0000000000..70621d0a3b --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Floor1.as @@ -0,0 +1,278 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.*; + + public class Floor1 extends Floor { + + private var partitionClassList:Vector.; + private var maximumClass:int; + private var multiplier:int; + private var rangeBits:int; + private var classDimensions:Vector.; + private var classSubclasses:Vector.; + private var classMasterbooks:Vector.; + private var subclassBooks:Vector.>; + private var xList:Vector.; + private var yList:Vector.; + private var lowNeighbours:Vector.; + private var highNeighbours:Vector.; + private static var RANGES:Vector. = Vector.([256, 128, 86, 64]); + + private var xList2:Vector.; + private var step2Flags:Vector.; + + public function Floor1(source:BitByteArray = null, header:SetupHeader = null) { + + if(source==null && header==null) { + return; + } + + var i:int; + var j:int; + + maximumClass = -1; + var partitions:int = source.readUnsignedBitwiseInt(5); + partitionClassList = new Vector.(partitions); + + for (i = 0; i < partitionClassList.length; i++) { + partitionClassList[i] = source.readUnsignedBitwiseInt(4); + if (partitionClassList[i] > maximumClass) { + maximumClass = partitionClassList[i]; + } + } + + classDimensions = new Vector.(maximumClass + 1); + classSubclasses = new Vector.(maximumClass + 1); + classMasterbooks = new Vector.(maximumClass + 1); + subclassBooks = new Vector.>(maximumClass + 1); + + var xListLength:int = 2; + + for (i = 0; i <= maximumClass; i++) { + classDimensions[i] = source.readUnsignedBitwiseInt(3) + 1; + xListLength += classDimensions[i]; + classSubclasses[i] = source.readUnsignedBitwiseInt(2); + + if (classDimensions[i] > header.codeBooks.length || classSubclasses[i] > header.codeBooks.length) { + throw new Error("There is a class dimension or class subclasses entry higher than the number of codebooks in the setup header."); + } + if (classSubclasses[i] != 0) { + classMasterbooks[i] = source.readUnsignedBitwiseInt(8); + } + subclassBooks[i] = new Vector.(1 << classSubclasses[i]); + for (j = 0; j < subclassBooks[i].length; j++) { + subclassBooks[i][j] = source.readUnsignedBitwiseInt(8) - 1; + } + } + + multiplier = source.readUnsignedBitwiseInt(2) + 1; + rangeBits = source.readUnsignedBitwiseInt(4); + + var floorValues:int = 0; + + xList = Vector.([0, 1<(xList.length); + highNeighbours = new Vector.(xList.length); + + for (i = 0; i < xList.length; i++) { + lowNeighbours[i] = Util.lowNeighbour(xList, i); + highNeighbours[i] = Util.highNeighbour(xList, i); + } + + xList2 = new Vector.(xList.length, true); + step2Flags = new Vector.(xList.length, true); + } + + public override function get type():int { + return 1; + } + + public override function decodeFloor(vorbis:VorbisStream, source:BitByteArray):Floor1 { + + var i:int; + var j:int; + var offset:int; + + if (!source.readBit()) { + return null; + } + + var clone:Floor1 = clone(); + + clone.yList = new Vector.(xList.length); + + var range:int = RANGES[multiplier - 1]; + + clone.yList[0] = source.readUnsignedBitwiseInt(Util.ilog(range - 1)); + clone.yList[1] = source.readUnsignedBitwiseInt(Util.ilog(range - 1)); + + offset = 2; + + for (i = 0; i < partitionClassList.length; i++) { + var cls:int = partitionClassList[i]; + var cdim:int = classDimensions[cls]; + var cbits:int = classSubclasses[cls]; + var csub:int = (1 << cbits) - 1; + var cval:int = 0; + if (cbits > 0) { + cval = source.readUnsignedHuffmanInt(vorbis.setupHeader.codeBooks[classMasterbooks[cls]].huffmanRoot); + } + + for (j = 0; j < cdim; j++) { + var book:int = subclassBooks[cls][cval & csub]; + cval >>>= cbits; + if (book >= 0) { + clone.yList[j + offset] = source.readUnsignedHuffmanInt(vorbis.setupHeader.codeBooks[book].huffmanRoot); + } else { + clone.yList[j + offset] = 0; + } + } + offset += cdim; + } + + return clone; + } + + public override function computeFloor(vector:Vector.):void { + + var i:int; + var j:int; + + var n:int = vector.length; + var values:int = xList.length; + //var step2Flags:Vector. = new Vector.(values); + + var range:int = RANGES[multiplier - 1]; + + for (i = 2; i < values; i++) { + + var lowNeighbourOffset:int = lowNeighbours[i]; + var highNeighbourOffset:int = highNeighbours[i]; + + var predicted:int = Util.renderPoint( + xList[lowNeighbourOffset], xList[highNeighbourOffset], + yList[lowNeighbourOffset], yList[highNeighbourOffset], xList[i]); + + var val:int = yList[i]; + var highRoom:int = range - predicted; + var lowRoom:int = predicted; + var room:int = highRoom < lowRoom ? highRoom * 2 : lowRoom * 2; + + if (val != 0) { + step2Flags[lowNeighbourOffset] = true; + step2Flags[highNeighbourOffset] = true; + step2Flags[i] = true; + if (val >= room) { + yList[i] = highRoom > lowRoom ? val - lowRoom + predicted + : -val + highRoom + predicted - 1; + } else { + yList[i] = (val & 1) == 1 ? predicted - ((val + 1) >> 1) + : predicted + (val >> 1); + } + } else { + step2Flags[i] = false; + yList[i] = predicted; + } + } + + for(i=0; i, y:Vector., b:Vector.):void { + var off:int = 0; + var len:int = x.length; + var lim:int = len + off; + var itmp:int; + var btmp:Boolean; + var i:int; + var j:int; + // Insertion sort on smallest arrays + for (i = off; i < lim; i++) { + for (j = i; j > off && x[j - 1] > x[j]; j--) { + itmp = x[j]; + x[j] = x[j - 1]; + x[j - 1] = itmp; + itmp = y[j]; + y[j] = y[j - 1]; + y[j - 1] = itmp; + btmp = b[j]; + b[j] = b[j - 1]; + b[j - 1] = btmp; + } + } + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as new file mode 100644 index 0000000000..c334a11a48 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/IdentificationHeader.as @@ -0,0 +1,87 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.utils.ByteArray; + + public class IdentificationHeader { + + private var _version:uint; + private var _channels:uint; + private var _sampleRate:uint; + private var _bitrateMaximum:int; + private var _bitrateMinimum:int; + private var _bitrateNominal:int; + private var _blockSize0:uint; + private var _blockSize1:uint; + + private var _mdct:Vector.; + + public function IdentificationHeader(source:ByteArray) { + + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + + _version = source.readUnsignedInt(); + _channels = source.readUnsignedByte(); + _sampleRate = source.readUnsignedInt(); + _bitrateMaximum = source.readUnsignedInt(); + _bitrateNominal = source.readUnsignedInt(); + _bitrateMinimum = source.readUnsignedInt(); + var bs:int = source.readUnsignedByte(); + _blockSize0 = 1<<(bs&0xf); + _blockSize1 = 1<<(bs>>4); + + _mdct = new Vector.(2, false); + _mdct[0] = new Mdct(_blockSize0); + _mdct[1] = new Mdct(_blockSize1); + } + + public function get channels():uint { + return _channels; + } + + public function get sampleRate():uint { + return _sampleRate; + } + + public function get blockSize0():uint { + return _blockSize0; + } + + public function get blockSize1():uint { + return _blockSize1; + } + + public function get mdct0():Mdct { + return _mdct[0]; + } + + public function get mdct1():Mdct { + return _mdct[1]; + } + + } + + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as new file mode 100644 index 0000000000..a174a7b456 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Look.as @@ -0,0 +1,136 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import org.omtk.util.BitByteArray; + + public class Look { + + private var _map:int; + private var _parts:int; + private var _stages:int; + private var _fullbooks:Vector.; + private var _phrasebook:CodeBook; + private var _partbooks:Vector.>; + private var _partvals:int; + private var _decodemap:Vector.>; + private var _postbits:int; + private var _phrasebits:int; + private var _frames:int; + + public function Look(source:VorbisStream, residue:Residue, mode:Mode) { + + var i:int; + var j:int; + var k:int; + + var dim:int = 0; + var acc:int = 0; + var maxstage:int = 0; + + _map = mode.mapping; + + _parts = residue.classifications; + _fullbooks = source.setupHeader.codeBooks; + _phrasebook = _fullbooks[residue.classBook]; + dim = _phrasebook.dimensions; + + _partbooks = new Vector.>(_parts); + + for (j = 0; j < _parts; j++) { + var s:int = Util.ilog(residue.cascade[j]); + if (s != 0) { + if (s > maxstage) { + maxstage = s; + } + _partbooks[j] = new Vector.(s); + for (k = 0; k < s; k++) { + if ((residue.cascade[j] & (1 << k)) != 0) { + _partbooks[j][k] = residue.books[j][k]; + } + } + } + } + + _partvals = Math.round(Math.pow(_parts, dim)); + _stages = maxstage; + + _decodemap = new Vector.>(_partvals, true); + + for (j = 0; j < _partvals; j++) { + var val:int = j; + var mult:int = _partvals / _parts; + _decodemap[j] = new Vector.(dim); + + for (k = 0; k < dim; k++) { + var deco:int = val / mult; + val -= deco * mult; + mult /= _parts; + _decodemap[j][k] = deco; + } + } + } + + public function get map():int { + return _map; + } + + public function get parts():int { + return _parts; + } + + public function get stages():int { + return _stages; + } + + public function get fullbooks():Vector. { + return _fullbooks; + } + + public function get phrasebook():CodeBook { + return _phrasebook; + } + + public function get partbooks():Vector.> { + return _partbooks; + } + + public function get partvals():int { + return _partvals; + } + + public function get decodemap():Vector.> { + return _decodemap; + } + + public function get postbits():int { + return _postbits; + } + + public function get phrasebits():int { + return _phrasebits; + } + + public function get frames():int { + return _frames; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as new file mode 100644 index 0000000000..982bec72ba --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping.as @@ -0,0 +1,73 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.BitByteArray; + + public class Mapping { + + public static function createInstance(stream:VorbisStream, source:BitByteArray, header:SetupHeader):Mapping { + + var type:int = source.readUnsignedBitwiseInt(16); + switch (type) { + case 0: + return new Mapping0(stream, source, header); + default: + throw new Error("Mapping type " + type + " is not supported."); + } + + } + + public function get type():int { + throw new IllegalOperationError("not implemented"); + } + + public function get couplingSteps():int { + throw new IllegalOperationError("not implemented"); + } + + public function get submaps():int { + throw new IllegalOperationError("not implemented"); + } + + public function get angles():Vector. { + throw new IllegalOperationError("not implemented"); + } + + public function get magnitudes():Vector. { + throw new IllegalOperationError("not implemented"); + } + + public function get mux():Vector. { + throw new IllegalOperationError("not implemented"); + } + + public function get submapFloors():Vector. { + throw new IllegalOperationError("not implemented"); + } + + public function get submapResidues():Vector. { + throw new IllegalOperationError("not implemented"); + } + + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as new file mode 100644 index 0000000000..547b53363e --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mapping0.as @@ -0,0 +1,136 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import org.omtk.util.BitByteArray; + + public class Mapping0 extends Mapping { + + private var _magnitudes:Vector.; + private var _angles:Vector.; + private var _mux:Vector.; + private var _submapFloors:Vector.; + private var _submapResidues:Vector.; + + public function Mapping0(stream:VorbisStream, source:BitByteArray, header:SetupHeader) { + + var i:int; + var j:int; + + var submaps:int = 1; + + if (source.readBit()) { + submaps = source.readUnsignedBitwiseInt(4) + 1; + } + + var channels:int = stream.identificationHeader.channels; + var ilogChannels:int = Util.ilog(channels - 1); + + if (source.readBit()) { + var couplingSteps:int = source.readUnsignedBitwiseInt(8) + 1; + _magnitudes = new Vector.(couplingSteps); + _angles = new Vector.(couplingSteps); + + for (i = 0; i < couplingSteps; i++) { + magnitudes[i] = source.readUnsignedBitwiseInt(ilogChannels); + angles[i] = source.readUnsignedBitwiseInt(ilogChannels); + if (magnitudes[i] == angles[i] || magnitudes[i] >= channels + || angles[i] >= channels) { + throw new Error("The channel magnitude and/or angle mismatch."); + } + } + } else { + _magnitudes = Vector.([]); + _angles = Vector.([]); + } + + if (source.readUnsignedBitwiseInt(2) != 0) { + throw new Error("A reserved mapping field has an invalid value."); + } + + _mux = new Vector.(channels); + if (submaps > 1) { + for (i = 0; i < channels; i++) { + _mux[i] = source.readUnsignedBitwiseInt(4); + if (_mux[i] > submaps) { + throw new Error("A mapping mux value is higher than the number of submaps"); + } + } + } else { + for (i = 0; i < channels; i++) { + _mux[i] = 0; + } + } + + _submapFloors = new Vector.(submaps); + _submapResidues = new Vector.(submaps); + + var floorCount:int = header.floors.length; + var residueCount:int = header.residues.length; + + for (i = 0; i < submaps; i++) { + source.readUnsignedBitwiseInt(8); // discard time placeholder + _submapFloors[i] = source.readUnsignedBitwiseInt(8); + _submapResidues[i] = source.readUnsignedBitwiseInt(8); + + if (_submapFloors[i] > floorCount) { + throw new Error("A mapping floor value is higher than the number of floors."); + } + + if (_submapResidues[i] > residueCount) { + throw new Error("A mapping residue value is higher than the number of residues."); + } + } + } + + public override function get type():int { + return 0; + } + + public override function get couplingSteps():int { + return _angles.length; + } + + public override function get submaps():int { + return _submapFloors.length; + } + + public override function get angles():Vector. { + return _angles; + } + + public override function get magnitudes():Vector. { + return _magnitudes; + } + + public override function get mux():Vector. { + return _mux; + } + + public override function get submapFloors():Vector. { + return _submapFloors; + } + + public override function get submapResidues():Vector. { + return _submapResidues; + } + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as new file mode 100644 index 0000000000..886deea63f --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mdct.as @@ -0,0 +1,62 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.events.*; + import flash.system.*; + import flash.display.*; + import flash.net.*; + import flash.utils.getTimer; + + /* + * Wrapper for the haXe compiled class org.omtk.vorbis.MdctHX + */ + public class Mdct { + + public static var initialized : Boolean = false; + private static var hxClass : Class; + + public static function initialize() : void { + var ldr:Loader = new Loader(); + var swfUrl:String = "hxmdct.swf"; + var req:URLRequest = new URLRequest(swfUrl); + var ldrContext:LoaderContext = + new LoaderContext(false, ApplicationDomain.currentDomain); + ldr.load(req, ldrContext); + ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, swfLoaded); + + function swfLoaded(e:Event):void { + hxClass = ApplicationDomain.currentDomain.getDefinition("org.omtk.vorbis.MdctHX") as Class; + initialized = true; + } + } + + private var delegate : Object; + + public function Mdct(n:int) { + delegate = new hxClass(n); + } + + public function imdct(frq:Vector., window:Vector., pcm:Vector.):void { + delegate.imdct(frq, window, pcm); + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as new file mode 100644 index 0000000000..cf27af2b3f --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Mode.as @@ -0,0 +1,70 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import flash.utils.Dictionary; + import org.omtk.util.BitByteArray; + + public class Mode + { + private var _blockFlag:Boolean; + private var _windowType:uint; + private var _transformType:uint; + private var _mapping:uint; + + public function Mode(source:BitByteArray, header:SetupHeader) { + + _blockFlag=source.readBit(); + _windowType=source.readUnsignedBitwiseInt(16); + _transformType=source.readUnsignedBitwiseInt(16); + _mapping=source.readUnsignedBitwiseInt(8); + + if(_windowType!=0) { + throw new Error("Window type = "+windowType+", != 0"); + } + + if(_transformType!=0) { + throw new Error("Transform type = "+transformType+", != 0"); + } + + if(_mapping > header.mappings.length) { + throw new Error("Mode mapping number is higher than total number of mappings."); + } + } + + public function get blockFlag():Boolean { + return _blockFlag; + } + + public function get windowType():uint { + return _windowType; + } + + public function get transformType():uint { + return _transformType; + } + + public function get mapping():uint { + return _mapping; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as new file mode 100644 index 0000000000..de9924f7b9 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue.as @@ -0,0 +1,142 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import flash.utils.Dictionary; + import org.omtk.util.BitByteArray; + + public class Residue { + + private var _begin:int; + private var _end:int; + private var _partitionSize:int; + private var _classifications:int; + private var _classBook:int; + private var _cascade:Vector.; + private var _books:Vector.>; + + private var _looks:Dictionary; + + + public function Residue(source:BitByteArray, header:SetupHeader) { + + _begin = source.readUnsignedBitwiseInt(24); + _end = source.readUnsignedBitwiseInt(24); + _partitionSize = source.readUnsignedBitwiseInt(24) + 1; + _classifications = source.readUnsignedBitwiseInt(6) + 1; + _classBook = source.readUnsignedBitwiseInt(8); + + _cascade = new Vector.(classifications); + + var acc:int = 0; + var i:int; + var j:int; + + for (i = 0; i < classifications; i++) { + var highBits:int = 0; + var lowBits:int = 0; + + lowBits = source.readUnsignedBitwiseInt(3); + if (source.readBit()) { + highBits = source.readUnsignedBitwiseInt(5); + } + _cascade[i] = (highBits << 3) | lowBits; + acc += Util.icount(cascade[i]); + } + + _books = new Vector.>(classifications); + + for (i = 0; i < classifications; i++) { + books[i] = new Vector.(8); + for (j = 0; j < 8; j++) { + if ((cascade[i] & (1 << j)) != 0) { + books[i][j] = source.readUnsignedBitwiseInt(8); + if (books[i][j] > header.codeBooks.length) { + throw new Error( + "Reference to invalid codebook entry in residue header."); + } + } + } + } + + _looks = new Dictionary(); + } + + public static function createInstance(source:BitByteArray, header:SetupHeader):Residue { + + var type:int = source.readUnsignedBitwiseInt(16); + switch (type) { + case 2: + return new Residue2(source, header); + default: + throw new Error("Residue type " + type + " is not supported."); + } + } + + public function decodeResidue( + vorbis:VorbisStream, source:BitByteArray, + mode:Mode, ch:int, + doNotDecodeFlags:Vector., vectors0:Vector., vectors1:Vector.):void { + + throw new IllegalOperationError("not implemented"); + } + + + public function getLook(stream:VorbisStream, key:Mode):Look { + var look:Look = _looks[key]; + if (look == null) { + look = new Look(stream, this, key); + _looks[key] = look; + } + return new Look(stream, this, key);//look; + } + + + public function get begin():int { + return _begin; + } + + public function get end():int { + return _end; + } + + public function get partitionSize():int { + return _partitionSize; + } + + public function get classifications():int { + return _classifications; + } + + public function get classBook():int { + return _classBook; + } + + public function get cascade():Vector. { + return _cascade; + } + + public function get books():Vector.> { + return _books; + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as new file mode 100644 index 0000000000..1fdc453fbc --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Residue2.as @@ -0,0 +1,109 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.errors.IllegalOperationError; + import flash.utils.Dictionary; + import org.omtk.util.BitByteArray; + + public class Residue2 extends Residue { + + public function Residue2(source:BitByteArray, header:SetupHeader) { + super(source, header); + } + + public override function decodeResidue( + vorbis:VorbisStream, source:BitByteArray, + mode:Mode, ch:int, + doNotDecodeFlags:Vector., vectors0:Vector., vectors1:Vector.):void { + + var i:int; + var j:int; + var k:int; + var l:int; + var s:int; + var slim:int; + + var look:Look = getLook(vorbis, mode); + + var codeBook:CodeBook = vorbis.setupHeader.codeBooks[classBook]; + + var classvalsPerCodeword:int = codeBook.dimensions; + var nToRead:int = end - begin; + var partitionsToRead:int = nToRead / partitionSize; // partvals + + var samplesPerPartition:int = partitionSize; + var partitionsPerWord:int = look.phrasebook.dimensions; + + var partWords:int = (partitionsToRead + partitionsPerWord - 1) / partitionsPerWord; + + var offset:int; + + var left:Boolean = false; + var right:Boolean = false; + + for (i = 0; i < doNotDecodeFlags.length; i++) { + if (!doNotDecodeFlags[i]) { + if(i==0) { + left = true; + } + else if (i==1) { + right = true; + } + } + } + + var partword:Array = new Array(partWords); + + var pb:int = source.position; + + slim = look.stages; + for (s = 0; s < slim; s++) { + + for (i = 0, l = 0; i < partitionsToRead; l++) { + + if (s == 0) { + var temp:int = source.readUnsignedHuffmanInt(look.phrasebook.huffmanRoot); + if (temp == -1) { + throw new Error("Foo??"); + } + partword[l] = look.decodemap[temp]; + if (partword[l] == null) { + throw new Error("Foo??"); + } + } + + for (k = 0; k < partitionsPerWord && i < partitionsToRead; k++, i++) { + offset = begin + i * samplesPerPartition; + + if ((cascade[partword[l][k]] & (1 << s)) != 0) { + var stagebook:CodeBook = + vorbis.setupHeader.codeBooks[look.partbooks[partword[l][k]][s]]; + if (stagebook != null) { + stagebook.readVvAdd(vectors0, vectors1, left, right, source, offset, samplesPerPartition); + } + } + } + } + } + + } + + } +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as new file mode 100644 index 0000000000..1d1350f9ef --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/SetupHeader.as @@ -0,0 +1,118 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import org.omtk.util.BitByteArray; + + public class SetupHeader { + + private var _codeBooks:Vector.; + private var _floors:Vector.; + private var _residues:Vector.; + private var _mappings:Vector.; + private var _modes:Vector.; + + public function SetupHeader(stream:VorbisStream, source:BitByteArray) { + + var i:int; + + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + source.readByte(); + + var codeBookCount:uint = source.readUnsignedBitwiseInt(8)+1; + _codeBooks = new Vector.(codeBookCount); + + for(i = 0; i < codeBookCount; i++) { + _codeBooks[i] = new CodeBook(source); + } + + // read the time domain transformations, + // these should all be 0 + + var timeCount:int = source.readUnsignedBitwiseInt(6) + 1; + for (i = 0; i < timeCount; i++) { + if (source.readUnsignedBitwiseInt(16) != 0) { + throw new Error( + "Time domain transformation != 0"); + } + } + + // read floor entries + + var floorCount:int = source.readUnsignedBitwiseInt(6) + 1; + _floors = new Vector.(floorCount); + + for (i = 0; i < floorCount; i++) { + _floors[i] = Floor.createInstance(source, this); + } + + var residueCount:int = source.readUnsignedBitwiseInt(6) + 1; + _residues = new Vector.(residueCount); + + for (i = 0; i < residueCount; i++) { + _residues[i] = Residue.createInstance(source, this); + } + + var mappingCount:int = source.readUnsignedBitwiseInt(6) + 1; + _mappings = new Vector.(mappingCount); + + for (i = 0; i < mappingCount; i++) { + _mappings[i] = Mapping.createInstance(stream, source, this); + } + + var modeCount:int = source.readUnsignedBitwiseInt(6) + 1; + _modes = new Vector.(modeCount); + + for (i = 0; i < modeCount; i++) { + _modes[i] = new Mode(source, this); + } + + if (!source.readBit()) { + throw new Error("The setup header framing bit is incorrect."); + } + } + + public function get codeBooks():Vector. { + return _codeBooks; + } + + public function get floors():Vector. { + return _floors; + } + + public function get mappings():Vector. { + return _mappings; + } + + public function get residues():Vector. { + return _residues; + } + + public function get modes():Vector. { + return _modes; + } + + } + + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as new file mode 100644 index 0000000000..f6e7ed18db --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/Util.as @@ -0,0 +1,122 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + public class Util { + + public static function ilog(x:uint):uint { + var res:int = 0; + for(; x>0; x>>=1, res++); + return res; + } + + public static function float32unpack(x:uint):Number { + var mantissa:Number = x&0x1fffff; + var e:Number = (x&0x7fe00000)>>21; + if((x&0x80000000)!=0) { + mantissa=-mantissa; + } + return mantissa*Math.pow(2.0, e-788.0); + } + + public static function lookup1Values(a:int, b:int):uint { + var res:uint = Math.pow(Math.E, Math.log(a)/b); + return intPow(res+1, b)<=a?res+1:res; + } + + public static function intPow(base:uint, e:uint):uint { + var res:uint = 1; + for(; e>0; e--, res*=base); + return res; + } + + public static function isBitSet(value:uint, bit:uint):Boolean { + return (value&(1< 0) { + res += value & 1; + value >>= 1; + } + return res; + } + + public static function lowNeighbour(v:Vector., x:int):int { + + var max:int = -1; + var n:int = 0; + var i:int; + + for (i = 0; i < v.length && i < x; i++) { + if (v[i] > max && v[i] < v[x]) { + max = v[i]; + n = i; + } + } + return n; + } + + public static function highNeighbour(v:Vector., x:int):int { + + var min:int = int.MAX_VALUE; + var n:int = 0; + var i:int; + + for (i = 0; i < v.length && i < x; i++) { + if (v[i] < min && v[i] > v[x]) { + min = v[i]; + n = i; + } + } + return n; + } + + public static function renderPoint(x0:int, x1:int, y0:int, y1:int, x:int):int { + return y0 + int(((y1-y0) * (x - x0)) / (x1 - x0)); + } + + public static function renderLine(x0:int, y0:int, x1:int, y1:int, v:Vector.):void { + + var dy:int = y1 - y0; + var adx:int = x1 - x0; + var b:int = dy / adx; + var sy:int = dy < 0 ? b - 1 : b + 1; + var x:int = x0; + var y:int = y0; + var err:int = 0; + var ady:int = (dy < 0 ? -dy : dy) - (b > 0 ? b * adx : -b * adx); + + v[x] *= Floor.DB_STATIC_TABLE[y]; + for (x = x0 + 1; x < x1; x++) { + err += ady; + if (err >= adx) { + err -= adx; + v[x] *= Floor.DB_STATIC_TABLE[y += sy]; + } else { + v[x] *= Floor.DB_STATIC_TABLE[y += b]; + } + } + + } + + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as new file mode 100644 index 0000000000..c82bb72e7f --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisSound.as @@ -0,0 +1,136 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.net.URLRequest; + import flash.net.URLStream; + import flash.utils.ByteArray; + import flash.utils.Endian; + import flash.events.Event; + import flash.events.ProgressEvent; + import flash.events.SampleDataEvent; + + import flash.external.ExternalInterface; + + import flash.media.Sound; + + import org.omtk.ogg.UncachedUrlStream; + import org.omtk.ogg.EndOfOggStreamError; + import flash.utils.setTimeout; + + public class VorbisSound extends Sound { + + public static var METADATA_UPDATE: String = "metadata_update"; + + private var urlStream: URLStream; + + private var oggStream:UncachedUrlStream; + private var vorbisStream:VorbisStream; + + private var bytesAvailable:int; + + private var initialized:Boolean = false; + private var playing:Boolean = false; + + private var fill1:Boolean = true; + private var fill2:Boolean = true; + + private var stopped: Boolean = false; + private var completeEventDispatched: Boolean = false; + + public function VorbisSound(url: URLRequest ) { + urlStream = new URLStream(); + urlStream.endian = Endian.LITTLE_ENDIAN; + urlStream.load(url); + + Mdct.initialize(); + + oggStream = new UncachedUrlStream(urlStream); + oggStream.addEventListener('progress', progress); + bytesAvailable = oggStream.bytesAvailable; + addEventListener("sampleData", sampleGenerator); + } + + private function initialize():void { + vorbisStream = new VorbisStream(oggStream.getLogicalOggStream()); + setTimeout(dispatchEvent, 100, new Event(METADATA_UPDATE)); + initialized = true; + } + + private var samplesPlayed: int = 0; + + private function sampleGenerator(event:SampleDataEvent):void { + + if(stopped) { + return; + } + + if(Mdct.initialized && !initialized && bytesAvailable > 64*1024) { + initialize(); + } + + if(initialized && bytesAvailable > 16*1024 && !vorbisStream.finished) { + var cnt: int; + cnt = vorbisStream.readPcm(event.data); + samplesPlayed += cnt; + if(cnt < 2048 && oggStream.bytesAvailable > 0) { + vorbisStream = new VorbisStream(oggStream.getLogicalOggStream()); + setTimeout(dispatchEvent, 100, new Event(METADATA_UPDATE)); + samplesPlayed += vorbisStream.readPcm(event.data); + } + } + else if(vorbisStream == null || !vorbisStream.finished) { + for(var c:int=0; c<2048; c++) { + event.data.writeFloat(0); + event.data.writeFloat(0); + } + } + + if(initialized && vorbisStream.finished && oggStream.bytesAvailable == 0 && !completeEventDispatched) { + dispatchEvent(new Event(Event.COMPLETE)); + completeEventDispatched = true; + } + + //trace("samples played: " + samplesPlayed + "/" + oggStream.bytesAvailable); + + } + + public function stop(): void { + stopped = true; + } + + public function progress(event:ProgressEvent):void { + bytesAvailable = oggStream.bytesAvailable; + } + + public function get position(): int { + return samplesPlayed * 1000 / 44100; + } + + public function getMetaData(key: String):String { + if(vorbisStream != null) { + return vorbisStream.commentHeader.comments[key]; + } + else { + return null; + } + } + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as new file mode 100644 index 0000000000..0c37fa1b18 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/as/org/omtk/vorbis/VorbisStream.as @@ -0,0 +1,130 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis { + + import flash.events.SampleDataEvent; + import flash.utils.ByteArray; + import flash.utils.Endian; + import org.omtk.util.*; + import org.omtk.ogg.*; + + public class VorbisStream { + + private const IDENTIFICATION_HEADER:int = 1; + private const COMMENT_HEADER:int = 3; + private const SETUP_HEADER:int = 5; + + private var source:LogicalOggStream; + + private var _identificationHeader:IdentificationHeader; + private var _commentHeader:CommentHeader; + private var _setupHeader:SetupHeader; + + private var _lastAudioPacket:AudioPacket; + + private var _currentGranulePosition:int=0; + private var packetCounter:int; + + private var _finished: Boolean = false; + + public var windows:Vector.> = new Vector.>(8); + + public function VorbisStream(source:LogicalOggStream) { + + this.source = source; + + for (var i:int = 0; i < 3; i++) { + + var data:BitByteArray = source.getNextOggPacket().data; + var headerType:int = data.readUnsignedByte(); + + switch(headerType) { + case IDENTIFICATION_HEADER: + _identificationHeader = new IdentificationHeader(data); + break; + case COMMENT_HEADER: + _commentHeader = new CommentHeader(data); + break; + case SETUP_HEADER: + _setupHeader = new SetupHeader(this, data); + break; + } + } + + } + + public function get identificationHeader():IdentificationHeader { + return _identificationHeader; + } + + public function get commentHeader():CommentHeader { + return _commentHeader; + } + + public function get setupHeader():SetupHeader { + return _setupHeader; + } + + public function readPcm(data:ByteArray): int { + + var total:int; + var i:int; + + if(_lastAudioPacket == null) { + _lastAudioPacket = getNextAudioPacket(); + } + + total = 0; + + while(total < 2048 && !_finished) { + try { + var ap:AudioPacket = getNextAudioPacket(); + total += ap.readPcm(_lastAudioPacket, data); + _lastAudioPacket = ap; + } + catch(e: EndOfOggStreamError) { + // ok, stream finished + _finished = true; + } + } + + return total; + } + + private function getNextAudioPacket():AudioPacket { + packetCounter++; + var packet:OggPacket = source.getNextOggPacket(); + var res:AudioPacket = new AudioPacket(this, packet, _currentGranulePosition); + if(_lastAudioPacket != null) { + // don't count the first packet, since it doesn't contain any "real" samples + _currentGranulePosition += res.numberOfSamples; + } + return res; + } + + public function get finished() : Boolean { + return _finished; + } + + public function get currentGranulePosition(): int { + return _currentGranulePosition; + } + } + +} \ No newline at end of file diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/build.hxml b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/build.hxml new file mode 100644 index 0000000000..be51ca9dc9 --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/build.hxml @@ -0,0 +1,3 @@ +-main org.omtk.vorbis.MdctHX +-swf-version 10 +-swf hxmdct.swf diff --git a/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx new file mode 100644 index 0000000000..4461c32dae --- /dev/null +++ b/js2/mwEmbed/libEmbedVideo/binPlayers/omtk-fx/src/haXe/org/omtk/vorbis/MdctHX.hx @@ -0,0 +1,337 @@ +/* + +Copyright 2008 Tor-Einar Jarnbjo + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +package org.omtk.vorbis; + +import flash.Vector; + +class MdctHX { + + private static var cPI1_8:Float = 0.92387953251128675613; + private static var cPI2_8:Float = 0.70710678118654752441; + private static var cPI3_8:Float = 0.38268343236508977175; + + private var n:Int; + private var log2n:Int; + private var trig:Vector; + private var bitrev:Vector; + + private var dtmp1:Float; + private var dtmp2:Float; + private var dtmp3:Float; + private var dtmp4:Float; + + private var x:Vector; + private var w:Vector; + + public function new(n:Int) { + this.n = n; + + var i:Int; + var j:Int; + + bitrev = new Vector(); + trig = new Vector(Std.int(n+n/4), true); + + for(i in 0...Std.int(n+n/4)) { + trig[i] = 0; + } + + x = new Vector(Std.int(n/2), true); + w = new Vector(Std.int(n/2), true); + + for(i in 0...Std.int(n/2)) { + x[i] = 0; + w[i] = 0; + } + + var n2:Int = n >>> 1; + log2n = Math.round(Math.log(n) / Math.log(2)); + + var AE:Int = 0; + var AO:Int = 1; + var BE:Int = Std.int(AE + n / 2); + var BO:Int = BE + 1; + var CE:Int = Std.int(BE + n / 2); + var CO:Int = CE + 1; + + for (i in 0...Std.int(n/4)) { + trig[AE + i * 2] = Math.cos((Math.PI / n) * (4 * i)); + trig[AO + i * 2] = -Math.sin((Math.PI / n) * (4 * i)); + trig[BE + i * 2] = Math.cos((Math.PI / (2 * n)) * (2 * i + 1)); + trig[BO + i * 2] = Math.sin((Math.PI / (2 * n)) * (2 * i + 1)); + } + + for (i in 0...Std.int(n/8)) { + trig[CE + i * 2] = Math.cos((Math.PI / n) * (4 * i + 2)); + trig[CO + i * 2] = -Math.sin((Math.PI / n) * (4 * i + 2)); + } + + var mask:Int = (1 << (log2n - 1)) - 1; + var msb:Int = 1 << (log2n - 2); + + for (i in 0...Std.int(n/8)) { + var acc:Int = 0; + j = 0; + while(msb>>>j!=0) { + if (((msb >>> j) & i) != 0) { + acc |= 1 << j; + } + j++; + } + bitrev[i * 2] = ((~acc) & mask); + bitrev[i * 2 + 1] = acc; + } + + } + + public function imdct(frq:Vector, window:Vector, pcm:Vector):Void { + + var i:Int; + + var n2:Int; + var n4:Int; + var n8:Int; + + var inO:Int; + var xO:Int; + var A:Int; + + var temp1:Float; + var temp2:Float; + + var B:Int; + var o1:Int; + var o2:Int; + var o3:Int; + var o4:Int; + + var xx:Int; + var xxx:Vector; + + n2 = n >> 1; + n4 = n >> 2; + n8 = n >> 3; + + inO = -1; + xO = 0; + A = n2; + + temp1 = 0.0; + temp2 = 0.0; + + for (i in 0...n8) { + dtmp1 = frq[inO += 2]; + dtmp2 = frq[inO += 2]; + dtmp3 = trig[--A]; + dtmp4 = trig[--A]; + x[xO++] = -dtmp2 * dtmp3 - dtmp1 * dtmp4; + x[xO++] = dtmp1 * dtmp3 - dtmp2 * dtmp4; + } + + inO = n2; + + for(i in 0...n8) { + dtmp1 = frq[inO -= 2]; + dtmp2 = frq[inO -= 2]; + dtmp3 = trig[--A]; + dtmp4 = trig[--A]; + x[xO++] = dtmp2 * dtmp3 + dtmp1 * dtmp4; + x[xO++] = dtmp2 * dtmp4 - dtmp1 * dtmp3; + } + + xxx = kernel(x, w, n, n2, n4, n8); + xx = 0; + + B = n2; + o1 = n4; + o2 = o1 - 1; + o3 = n4 + n2; + o4 = o3 - 1; + + for (i in 0...n4) { + dtmp1 = xxx[xx++]; + dtmp2 = xxx[xx++]; + dtmp3 = trig[B++]; + dtmp4 = trig[B++]; + + temp1 = (dtmp1 * dtmp4 - dtmp2 * dtmp3); + temp2 = -(dtmp1 * dtmp3 + dtmp2 * dtmp4); + + pcm[o1] = -temp1 * window[o1]; + pcm[o2] = temp1 * window[o2]; + pcm[o3] = temp2 * window[o3]; + pcm[o4] = temp2 * window[o4]; + + o1++; + o2--; + o3++; + o4--; + } + + } + + private inline function kernel(x:Vector, w:Vector, n:Int, n2:Int, n4:Int, n8:Int):Vector { + + var i:Int; + var r:Int; + var s:Int; + var rlim:Int; + var slim:Int; + + var xA:Int = n4; + var xB:Int = 0; + var w1:Int = 0; + var w2:Int = n4; + var A:Int = n2; + + var x0:Float; + var x1:Float; + var wA:Float; + var wB:Float; + var wC:Float; + var wD:Float; + var k0:Int; + var k1:Int; + var t1:Int; + var t2:Int; + + var wbase:Int; + var temp:Vector; + + var wACE:Float; + var wBCE:Float; + var wACO:Float; + var wBCO:Float; + + var AEv:Float; + var AOv:Float; + + i=0; + while(i < n4) { + x0 = x[xA] - x[xB]; + + w[w2 + i] = x[xA++] + x[xB++]; + + x1 = x[xA] - x[xB]; + A -= 4; + + w[i++] = x0 * trig[A] + x1 * trig[A + 1]; + w[i] = x1 * trig[A] - x0 * trig[A + 1]; + + w[w2 + i] = x[xA++] + x[xB++]; + i++; + } + + for (i in 0...log2n-3) { + k0 = n >>> (i + 2); + k1 = 1 << (i + 3); + wbase = n2 - 2; + + A = 0; + + rlim = k0 >>> 2; + for (r in 0...rlim) { + + w1 = wbase; + w2 = w1 - (k0 >> 1); + AEv = trig[A]; + AOv = trig[A + 1]; + wbase -= 2; + + k0++; + + slim = 2 << i; + for (s in 0...slim) { + dtmp1 = w[w1]; + dtmp2 = w[w2]; + wB = dtmp1 - dtmp2; + x[w1] = dtmp1 + dtmp2; + dtmp1 = w[++w1]; + dtmp2 = w[++w2]; + wA = dtmp1 - dtmp2; + x[w1] = dtmp1 + dtmp2; + x[w2] = wA * AEv - wB * AOv; + x[w2-1] = wB * AEv + wA * AOv; + w1 -= k0; + w2 -= k0; + } + k0--; + A += k1; + } + + temp = w; + w = x; + x = temp; + } + + + var C:Int = n; + var bit:Int = 0; + var xx1:Int = 0; + var xx2:Int = n2 - 1; + + var wt1: Float; + var wt2: Float; + var wt12: Float; + var wt21: Float; + var trigV: Float; + + for (i in 0...n8) { + t1 = bitrev[bit++]; + t2 = bitrev[bit++]; + + wt1 = w[t1]; + wt2 = w[t2]; + wt12 = w[t1-1]; + wt21 = w[t2+1]; + + wA = wt1 - wt21; + wB = wt12 + wt2; + wC = wt1 + wt21; + wD = wt12 - wt2; + + trigV = trig[C]; + + wACE = wA * trigV; + wBCE = wB * trigV; + + trigV = trig[++C]; + + wACO = wA * trigV; + wBCO = wB * trigV; + + ++C; + + x[xx1++] = (wC + wACO + wBCE); + x[xx2--] = (-wD + wBCO - wACE); + x[xx1++] = (wD + wBCO - wACE); + x[xx2--] = (wC - wACO - wBCE); + } + + return x; + } + + /* + * Dummy function required for the haXe compiler to build this to + * a .SWF file. + */ + public static function main() : Void { + } + +} diff --git a/js2/mwEmbed/libEmbedVideo/flowplayerEmbed.js b/js2/mwEmbed/libEmbedVideo/flowplayerEmbed.js index 56f719aa01..d2cecd0569 100644 --- a/js2/mwEmbed/libEmbedVideo/flowplayerEmbed.js +++ b/js2/mwEmbed/libEmbedVideo/flowplayerEmbed.js @@ -1472,7 +1472,7 @@ var flowplayerEmbed = { postEmbedJS: function() { var _this = this; - js_log( 'embedFlow: uri:' + this.getSrc() + "\n" + mv_embed_path + 'binPlayers/flowplayer/flowplayer-3.0.1.swf' ) ; + js_log( 'embedFlow: uri:' + this.getSrc() + "\n" + mv_embed_path + 'libEmbedVideo/binPlayers/flowplayer/flowplayer-3.0.1.swf' ) ; var flowConfig = { clip: { url: this.getSrc(), diff --git a/js2/mwEmbed/libEmbedVideo/javaEmbed.js b/js2/mwEmbed/libEmbedVideo/javaEmbed.js index ea85a8cbda..e696b8ea95 100644 --- a/js2/mwEmbed/libEmbedVideo/javaEmbed.js +++ b/js2/mwEmbed/libEmbedVideo/javaEmbed.js @@ -40,7 +40,7 @@ var javaEmbed = { } } else { // should be identical to cortado.jar - applet_loc = mv_embed_path + 'binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar'; + applet_loc = mv_embed_path + 'libEmbedVideo/binPlayers/cortado/cortado-ovt-stripped-0.5.0.jar'; } // load directly in the page.. // (media must be on the same server or applet must be signed) diff --git a/js2/mwEmbed/libEmbedVideo/kplayerEmbed.js b/js2/mwEmbed/libEmbedVideo/kplayerEmbed.js index f3c81a11bc..d61161bf6a 100644 --- a/js2/mwEmbed/libEmbedVideo/kplayerEmbed.js +++ b/js2/mwEmbed/libEmbedVideo/kplayerEmbed.js @@ -20,7 +20,7 @@ var kplayerEmbed = { return this.wrapEmebedContainer( embed_code ); }, getEmbedObj:function() { - var player_path = mv_embed_path + 'binPlayers/kaltura-player'; + var player_path = mv_embed_path + 'libEmbedVideo/binPlayers/kaltura-player'; return '' +