├── .classpath ├── .gitignore ├── .project ├── AndroidManifest.xml ├── INSTALL ├── LICENSE ├── README ├── TODO ├── build.xml ├── default.properties ├── jni ├── Android.mk ├── Application.mk └── resample │ ├── Android.mk │ ├── resample-interface.c │ ├── resample-interface.h │ ├── resample.c │ └── resample.h ├── proguard.cfg ├── res └── values │ └── strings.xml └── src └── net └── sourceforge └── resample └── Resample.java /.classpath: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | bin/* 2 | gen/* 3 | libs/armeabi* 4 | obj/* 5 | keys 6 | market/* 7 | *.apk 8 | *.iws 9 | *.ipr 10 | *.iml 11 | local.properties 12 | -------------------------------------------------------------------------------- /.project: -------------------------------------------------------------------------------- 1 | 2 | 3 | libresample 4 | 5 | 6 | 7 | 8 | 9 | com.android.ide.eclipse.adt.ResourceManagerBuilder 10 | 11 | 12 | 13 | 14 | com.android.ide.eclipse.adt.PreCompilerBuilder 15 | 16 | 17 | 18 | 19 | org.eclipse.jdt.core.javabuilder 20 | 21 | 22 | 23 | 24 | com.android.ide.eclipse.adt.ApkBuilder 25 | 26 | 27 | 28 | 29 | 30 | com.android.ide.eclipse.adt.AndroidNature 31 | org.eclipse.jdt.core.javanature 32 | 33 | 34 | -------------------------------------------------------------------------------- /AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /INSTALL: -------------------------------------------------------------------------------- 1 | This project requires: 2 | Android SDK 3 | Android NDK 4 | 5 | This project does not contain the shared libraries for LAME. 6 | In order to build them, you must first install the Android NDK from: 7 | http://developer.android.com/sdk/ndk/index.html 8 | Installing the Android NDK is beyond the scope of this INSTALL file. 9 | 10 | To build the libraries you must go to /path/to/libresample and issue the command: 11 | /path/to/ndk-build 12 | 13 | The NDK builder will compile the shared libraries and place them in the 14 | libresample/libs directory for use by other dependant projects. 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | GNU LESSER GENERAL PUBLIC LICENSE 3 | Version 2.1, February 1999 4 | 5 | Copyright (C) 1991, 1999 Free Software Foundation, Inc. 6 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 7 | Everyone is permitted to copy and distribute verbatim copies 8 | of this license document, but changing it is not allowed. 9 | 10 | [This is the first released version of the Lesser GPL. It also counts 11 | as the successor of the GNU Library Public License, version 2, hence 12 | the version number 2.1.] 13 | 14 | Preamble 15 | 16 | The licenses for most software are designed to take away your 17 | freedom to share and change it. By contrast, the GNU General Public 18 | Licenses are intended to guarantee your freedom to share and change 19 | free software--to make sure the software is free for all its users. 20 | 21 | This license, the Lesser General Public License, applies to some 22 | specially designated software packages--typically libraries--of the 23 | Free Software Foundation and other authors who decide to use it. You 24 | can use it too, but we suggest you first think carefully about whether 25 | this license or the ordinary General Public License is the better 26 | strategy to use in any particular case, based on the explanations 27 | below. 28 | 29 | When we speak of free software, we are referring to freedom of use, 30 | not price. Our General Public Licenses are designed to make sure that 31 | you have the freedom to distribute copies of free software (and charge 32 | for this service if you wish); that you receive source code or can get 33 | it if you want it; that you can change the software and use pieces of 34 | it in new free programs; and that you are informed that you can do 35 | these things. 36 | 37 | To protect your rights, we need to make restrictions that forbid 38 | distributors to deny you these rights or to ask you to surrender these 39 | rights. These restrictions translate to certain responsibilities for 40 | you if you distribute copies of the library or if you modify it. 41 | 42 | For example, if you distribute copies of the library, whether gratis 43 | or for a fee, you must give the recipients all the rights that we gave 44 | you. You must make sure that they, too, receive or can get the source 45 | code. If you link other code with the library, you must provide 46 | complete object files to the recipients, so that they can relink them 47 | with the library after making changes to the library and recompiling 48 | it. And you must show them these terms so they know their rights. 49 | 50 | We protect your rights with a two-step method: (1) we copyright the 51 | library, and (2) we offer you this license, which gives you legal 52 | permission to copy, distribute and/or modify the library. 53 | 54 | To protect each distributor, we want to make it very clear that 55 | there is no warranty for the free library. Also, if the library is 56 | modified by someone else and passed on, the recipients should know 57 | that what they have is not the original version, so that the original 58 | author's reputation will not be affected by problems that might be 59 | introduced by others. 60 | 61 | Finally, software patents pose a constant threat to the existence of 62 | any free program. We wish to make sure that a company cannot 63 | effectively restrict the users of a free program by obtaining a 64 | restrictive license from a patent holder. Therefore, we insist that 65 | any patent license obtained for a version of the library must be 66 | consistent with the full freedom of use specified in this license. 67 | 68 | Most GNU software, including some libraries, is covered by the 69 | ordinary GNU General Public License. This license, the GNU Lesser 70 | General Public License, applies to certain designated libraries, and 71 | is quite different from the ordinary General Public License. We use 72 | this license for certain libraries in order to permit linking those 73 | libraries into non-free programs. 74 | 75 | When a program is linked with a library, whether statically or using 76 | a shared library, the combination of the two is legally speaking a 77 | combined work, a derivative of the original library. The ordinary 78 | General Public License therefore permits such linking only if the 79 | entire combination fits its criteria of freedom. The Lesser General 80 | Public License permits more lax criteria for linking other code with 81 | the library. 82 | 83 | We call this license the "Lesser" General Public License because it 84 | does Less to protect the user's freedom than the ordinary General 85 | Public License. It also provides other free software developers Less 86 | of an advantage over competing non-free programs. These disadvantages 87 | are the reason we use the ordinary General Public License for many 88 | libraries. However, the Lesser license provides advantages in certain 89 | special circumstances. 90 | 91 | For example, on rare occasions, there may be a special need to 92 | encourage the widest possible use of a certain library, so that it becomes 93 | a de-facto standard. To achieve this, non-free programs must be 94 | allowed to use the library. A more frequent case is that a free 95 | library does the same job as widely used non-free libraries. In this 96 | case, there is little to gain by limiting the free library to free 97 | software only, so we use the Lesser General Public License. 98 | 99 | In other cases, permission to use a particular library in non-free 100 | programs enables a greater number of people to use a large body of 101 | free software. For example, permission to use the GNU C Library in 102 | non-free programs enables many more people to use the whole GNU 103 | operating system, as well as its variant, the GNU/Linux operating 104 | system. 105 | 106 | Although the Lesser General Public License is Less protective of the 107 | users' freedom, it does ensure that the user of a program that is 108 | linked with the Library has the freedom and the wherewithal to run 109 | that program using a modified version of the Library. 110 | 111 | The precise terms and conditions for copying, distribution and 112 | modification follow. Pay close attention to the difference between a 113 | "work based on the library" and a "work that uses the library". The 114 | former contains code derived from the library, whereas the latter must 115 | be combined with the library in order to run. 116 | 117 | GNU LESSER GENERAL PUBLIC LICENSE 118 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 119 | 120 | 0. This License Agreement applies to any software library or other 121 | program which contains a notice placed by the copyright holder or 122 | other authorized party saying it may be distributed under the terms of 123 | this Lesser General Public License (also called "this License"). 124 | Each licensee is addressed as "you". 125 | 126 | A "library" means a collection of software functions and/or data 127 | prepared so as to be conveniently linked with application programs 128 | (which use some of those functions and data) to form executables. 129 | 130 | The "Library", below, refers to any such software library or work 131 | which has been distributed under these terms. A "work based on the 132 | Library" means either the Library or any derivative work under 133 | copyright law: that is to say, a work containing the Library or a 134 | portion of it, either verbatim or with modifications and/or translated 135 | straightforwardly into another language. (Hereinafter, translation is 136 | included without limitation in the term "modification".) 137 | 138 | "Source code" for a work means the preferred form of the work for 139 | making modifications to it. For a library, complete source code means 140 | all the source code for all modules it contains, plus any associated 141 | interface definition files, plus the scripts used to control 142 | compilation 143 | and installation of the library. 144 | 145 | Activities other than copying, distribution and modification are not 146 | covered by this License; they are outside its scope. The act of 147 | running a program using the Library is not restricted, and output from 148 | such a program is covered only if its contents constitute a work based 149 | on the Library (independent of the use of the Library in a tool for 150 | writing it). Whether that is true depends on what the Library does 151 | and what the program that uses the Library does. 152 | 153 | 1. You may copy and distribute verbatim copies of the Library's 154 | complete source code as you receive it, in any medium, provided that 155 | you conspicuously and appropriately publish on each copy an 156 | appropriate copyright notice and disclaimer of warranty; keep intact 157 | all the notices that refer to this License and to the absence of any 158 | warranty; and distribute a copy of this License along with the 159 | Library. 160 | 161 | You may charge a fee for the physical act of transferring a copy, 162 | and you may at your option offer warranty protection in exchange for a 163 | fee. 164 | 165 | 2. You may modify your copy or copies of the Library or any portion 166 | of it, thus forming a work based on the Library, and copy and 167 | distribute such modifications or work under the terms of Section 1 168 | above, provided that you also meet all of these conditions: 169 | 170 | a) The modified work must itself be a software library. 171 | 172 | b) You must cause the files modified to carry prominent notices 173 | stating that you changed the files and the date of any change. 174 | 175 | c) You must cause the whole of the work to be licensed at no 176 | charge to all third parties under the terms of this License. 177 | 178 | d) If a facility in the modified Library refers to a function or a 179 | table of data to be supplied by an application program that uses 180 | the facility, other than as an argument passed when the facility 181 | is invoked, then you must make a good faith effort to ensure that, 182 | in the event an application does not supply such function or 183 | table, the facility still operates, and performs whatever part of 184 | its purpose remains meaningful. 185 | 186 | (For example, a function in a library to compute square roots has 187 | a purpose that is entirely well-defined independent of the 188 | application. Therefore, Subsection 2d requires that any 189 | application-supplied function or table used by this function must 190 | be optional: if the application does not supply it, the square 191 | root function must still compute square roots.) 192 | 193 | These requirements apply to the modified work as a whole. If 194 | identifiable sections of that work are not derived from the Library, 195 | and can be reasonably considered independent and separate works in 196 | themselves, then this License, and its terms, do not apply to those 197 | sections when you distribute them as separate works. But when you 198 | distribute the same sections as part of a whole which is a work based 199 | on the Library, the distribution of the whole must be on the terms of 200 | this License, whose permissions for other licensees extend to the 201 | entire whole, and thus to each and every part regardless of who wrote 202 | it. 203 | 204 | Thus, it is not the intent of this section to claim rights or contest 205 | your rights to work written entirely by you; rather, the intent is to 206 | exercise the right to control the distribution of derivative or 207 | collective works based on the Library. 208 | 209 | In addition, mere aggregation of another work not based on the Library 210 | with the Library (or with a work based on the Library) on a volume of 211 | a storage or distribution medium does not bring the other work under 212 | the scope of this License. 213 | 214 | 3. You may opt to apply the terms of the ordinary GNU General Public 215 | License instead of this License to a given copy of the Library. To do 216 | this, you must alter all the notices that refer to this License, so 217 | that they refer to the ordinary GNU General Public License, version 2, 218 | instead of to this License. (If a newer version than version 2 of the 219 | ordinary GNU General Public License has appeared, then you can specify 220 | that version instead if you wish.) Do not make any other change in 221 | these notices. 222 | 223 | Once this change is made in a given copy, it is irreversible for 224 | that copy, so the ordinary GNU General Public License applies to all 225 | subsequent copies and derivative works made from that copy. 226 | 227 | This option is useful when you wish to copy part of the code of 228 | the Library into a program that is not a library. 229 | 230 | 4. You may copy and distribute the Library (or a portion or 231 | derivative of it, under Section 2) in object code or executable form 232 | under the terms of Sections 1 and 2 above provided that you accompany 233 | it with the complete corresponding machine-readable source code, which 234 | must be distributed under the terms of Sections 1 and 2 above on a 235 | medium customarily used for software interchange. 236 | 237 | If distribution of object code is made by offering access to copy 238 | from a designated place, then offering equivalent access to copy the 239 | source code from the same place satisfies the requirement to 240 | distribute the source code, even though third parties are not 241 | compelled to copy the source along with the object code. 242 | 243 | 5. A program that contains no derivative of any portion of the 244 | Library, but is designed to work with the Library by being compiled or 245 | linked with it, is called a "work that uses the Library". Such a 246 | work, in isolation, is not a derivative work of the Library, and 247 | therefore falls outside the scope of this License. 248 | 249 | However, linking a "work that uses the Library" with the Library 250 | creates an executable that is a derivative of the Library (because it 251 | contains portions of the Library), rather than a "work that uses the 252 | library". The executable is therefore covered by this License. 253 | Section 6 states terms for distribution of such executables. 254 | 255 | When a "work that uses the Library" uses material from a header file 256 | that is part of the Library, the object code for the work may be a 257 | derivative work of the Library even though the source code is not. 258 | Whether this is true is especially significant if the work can be 259 | linked without the Library, or if the work is itself a library. The 260 | threshold for this to be true is not precisely defined by law. 261 | 262 | If such an object file uses only numerical parameters, data 263 | structure layouts and accessors, and small macros and small inline 264 | functions (ten lines or less in length), then the use of the object 265 | file is unrestricted, regardless of whether it is legally a derivative 266 | work. (Executables containing this object code plus portions of the 267 | Library will still fall under Section 6.) 268 | 269 | Otherwise, if the work is a derivative of the Library, you may 270 | distribute the object code for the work under the terms of Section 6. 271 | Any executables containing that work also fall under Section 6, 272 | whether or not they are linked directly with the Library itself. 273 | 274 | 6. As an exception to the Sections above, you may also combine or 275 | link a "work that uses the Library" with the Library to produce a 276 | work containing portions of the Library, and distribute that work 277 | under terms of your choice, provided that the terms permit 278 | modification of the work for the customer's own use and reverse 279 | engineering for debugging such modifications. 280 | 281 | You must give prominent notice with each copy of the work that the 282 | Library is used in it and that the Library and its use are covered by 283 | this License. You must supply a copy of this License. If the work 284 | during execution displays copyright notices, you must include the 285 | copyright notice for the Library among them, as well as a reference 286 | directing the user to the copy of this License. Also, you must do one 287 | of these things: 288 | 289 | a) Accompany the work with the complete corresponding 290 | machine-readable source code for the Library including whatever 291 | changes were used in the work (which must be distributed under 292 | Sections 1 and 2 above); and, if the work is an executable linked 293 | with the Library, with the complete machine-readable "work that 294 | uses the Library", as object code and/or source code, so that the 295 | user can modify the Library and then relink to produce a modified 296 | executable containing the modified Library. (It is understood 297 | that the user who changes the contents of definitions files in the 298 | Library will not necessarily be able to recompile the application 299 | to use the modified definitions.) 300 | 301 | b) Use a suitable shared library mechanism for linking with the 302 | Library. A suitable mechanism is one that (1) uses at run time a 303 | copy of the library already present on the user's computer system, 304 | rather than copying library functions into the executable, and (2) 305 | will operate properly with a modified version of the library, if 306 | the user installs one, as long as the modified version is 307 | interface-compatible with the version that the work was made with. 308 | 309 | c) Accompany the work with a written offer, valid for at 310 | least three years, to give the same user the materials 311 | specified in Subsection 6a, above, for a charge no more 312 | than the cost of performing this distribution. 313 | 314 | d) If distribution of the work is made by offering access to copy 315 | from a designated place, offer equivalent access to copy the above 316 | specified materials from the same place. 317 | 318 | e) Verify that the user has already received a copy of these 319 | materials or that you have already sent this user a copy. 320 | 321 | For an executable, the required form of the "work that uses the 322 | Library" must include any data and utility programs needed for 323 | reproducing the executable from it. However, as a special exception, 324 | the materials to be distributed need not include anything that is 325 | normally distributed (in either source or binary form) with the major 326 | components (compiler, kernel, and so on) of the operating system on 327 | which the executable runs, unless that component itself accompanies 328 | the executable. 329 | 330 | It may happen that this requirement contradicts the license 331 | restrictions of other proprietary libraries that do not normally 332 | accompany the operating system. Such a contradiction means you cannot 333 | use both them and the Library together in an executable that you 334 | distribute. 335 | 336 | 7. You may place library facilities that are a work based on the 337 | Library side-by-side in a single library together with other library 338 | facilities not covered by this License, and distribute such a combined 339 | library, provided that the separate distribution of the work based on 340 | the Library and of the other library facilities is otherwise 341 | permitted, and provided that you do these two things: 342 | 343 | a) Accompany the combined library with a copy of the same work 344 | based on the Library, uncombined with any other library 345 | facilities. This must be distributed under the terms of the 346 | Sections above. 347 | 348 | b) Give prominent notice with the combined library of the fact 349 | that part of it is a work based on the Library, and explaining 350 | where to find the accompanying uncombined form of the same work. 351 | 352 | 8. You may not copy, modify, sublicense, link with, or distribute 353 | the Library except as expressly provided under this License. Any 354 | attempt otherwise to copy, modify, sublicense, link with, or 355 | distribute the Library is void, and will automatically terminate your 356 | rights under this License. However, parties who have received copies, 357 | or rights, from you under this License will not have their licenses 358 | terminated so long as such parties remain in full compliance. 359 | 360 | 9. You are not required to accept this License, since you have not 361 | signed it. However, nothing else grants you permission to modify or 362 | distribute the Library or its derivative works. These actions are 363 | prohibited by law if you do not accept this License. Therefore, by 364 | modifying or distributing the Library (or any work based on the 365 | Library), you indicate your acceptance of this License to do so, and 366 | all its terms and conditions for copying, distributing or modifying 367 | the Library or works based on it. 368 | 369 | 10. Each time you redistribute the Library (or any work based on the 370 | Library), the recipient automatically receives a license from the 371 | original licensor to copy, distribute, link with or modify the Library 372 | subject to these terms and conditions. You may not impose any further 373 | restrictions on the recipients' exercise of the rights granted herein. 374 | You are not responsible for enforcing compliance by third parties with 375 | this License. 376 | 377 | 11. If, as a consequence of a court judgment or allegation of patent 378 | infringement or for any other reason (not limited to patent issues), 379 | conditions are imposed on you (whether by court order, agreement or 380 | otherwise) that contradict the conditions of this License, they do not 381 | excuse you from the conditions of this License. If you cannot 382 | distribute so as to satisfy simultaneously your obligations under this 383 | License and any other pertinent obligations, then as a consequence you 384 | may not distribute the Library at all. For example, if a patent 385 | license would not permit royalty-free redistribution of the Library by 386 | all those who receive copies directly or indirectly through you, then 387 | the only way you could satisfy both it and this License would be to 388 | refrain entirely from distribution of the Library. 389 | 390 | If any portion of this section is held invalid or unenforceable under 391 | any particular circumstance, the balance of the section is intended to 392 | apply, and the section as a whole is intended to apply in other 393 | circumstances. 394 | 395 | It is not the purpose of this section to induce you to infringe any 396 | patents or other property right claims or to contest validity of any 397 | such claims; this section has the sole purpose of protecting the 398 | integrity of the free software distribution system which is 399 | implemented by public license practices. Many people have made 400 | generous contributions to the wide range of software distributed 401 | through that system in reliance on consistent application of that 402 | system; it is up to the author/donor to decide if he or she is willing 403 | to distribute software through any other system and a licensee cannot 404 | impose that choice. 405 | 406 | This section is intended to make thoroughly clear what is believed to 407 | be a consequence of the rest of this License. 408 | 409 | 12. If the distribution and/or use of the Library is restricted in 410 | certain countries either by patents or by copyrighted interfaces, the 411 | original copyright holder who places the Library under this License 412 | may add an explicit geographical distribution limitation excluding those 413 | countries, so that distribution is permitted only in or among 414 | countries not thus excluded. In such case, this License incorporates 415 | the limitation as if written in the body of this License. 416 | 417 | 13. The Free Software Foundation may publish revised and/or new 418 | versions of the Lesser General Public License from time to time. 419 | Such new versions will be similar in spirit to the present version, 420 | but may differ in detail to address new problems or concerns. 421 | 422 | Each version is given a distinguishing version number. If the Library 423 | specifies a version number of this License which applies to it and 424 | "any later version", you have the option of following the terms and 425 | conditions either of that version or of any later version published by 426 | the Free Software Foundation. If the Library does not specify a 427 | license version number, you may choose any version ever published by 428 | the Free Software Foundation. 429 | 430 | 14. If you wish to incorporate parts of the Library into other free 431 | programs whose distribution conditions are incompatible with these, 432 | write to the author to ask for permission. For software which is 433 | copyrighted by the Free Software Foundation, write to the Free 434 | Software Foundation; we sometimes make exceptions for this. Our 435 | decision will be guided by the two goals of preserving the free status 436 | of all derivatives of our free software and of promoting the sharing 437 | and reuse of software generally. 438 | 439 | NO WARRANTY 440 | 441 | 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO 442 | WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. 443 | EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR 444 | OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY 445 | KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE 446 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 447 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE 448 | LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME 449 | THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 450 | 451 | 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN 452 | WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY 453 | AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU 454 | FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR 455 | CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE 456 | LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING 457 | RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A 458 | FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF 459 | SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH 460 | DAMAGES. 461 | 462 | END OF TERMS AND CONDITIONS 463 | 464 | -------------------------------------------------------------------------------- /README: -------------------------------------------------------------------------------- 1 | This project is licensed under LGPLv2.1, for further licensing information see 2 | the LICENSE file. 3 | 4 | Build Instructions: 5 | For help building the native resample library, please consult the INSTALL file. 6 | 7 | Known Issues: 8 | 9 | This project is based off libresample and resample available from: 10 | https://ccrma.stanford.edu/~jos/resample/Free_Resampling_Software.html 11 | -------------------------------------------------------------------------------- /TODO: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/intervigilium/libresample/804018847a4eecc400a7c31a10f6b510abcbedff/TODO -------------------------------------------------------------------------------- /build.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 | 27 | 28 | 29 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 43 | 44 | 45 | 46 | 47 | 48 | 58 | 59 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /default.properties: -------------------------------------------------------------------------------- 1 | # This file is automatically generated by Android Tools. 2 | # Do not modify this file -- YOUR CHANGES WILL BE ERASED! 3 | # 4 | # This file must be checked in Version Control Systems. 5 | # 6 | # To customize properties used by the Ant build system use, 7 | # "build.properties", and override values to adapt the script to your 8 | # project structure. 9 | 10 | # Project target. 11 | target=android-10 12 | android.library=true 13 | -------------------------------------------------------------------------------- /jni/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | include $(call all-subdir-makefiles) 4 | -------------------------------------------------------------------------------- /jni/Application.mk: -------------------------------------------------------------------------------- 1 | APP_ABI := armeabi armeabi-v7a 2 | APP_MODULES := resample 3 | -------------------------------------------------------------------------------- /jni/resample/Android.mk: -------------------------------------------------------------------------------- 1 | LOCAL_PATH := $(call my-dir) 2 | 3 | include $(CLEAR_VARS) 4 | 5 | LOCAL_MODULE := resample 6 | LOCAL_SRC_FILES := resample.c resample-interface.c 7 | LOCAL_C_INCLUDES := resample.h resample-interface.h 8 | LOCAL_LDLIBS := -llog 9 | 10 | include $(BUILD_SHARED_LIBRARY) 11 | -------------------------------------------------------------------------------- /jni/resample/resample-interface.c: -------------------------------------------------------------------------------- 1 | /* resample.c - sampling rate conversion subroutines 2 | * 3 | * Original version available at the 4 | * Digital Audio Resampling Home Page located at 5 | * http://ccrma.stanford.edu/~jos/resample/. 6 | * 7 | * Modified for use on Android by Ethan Chen 8 | * 9 | * This library is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2 of the License, or (at your option) any later version. 13 | * 14 | * This library is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with this library; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 | */ 23 | 24 | #include "resample-interface.h" 25 | #include "resample.h" 26 | #include 27 | #include 28 | #include 29 | 30 | static int num_channels; 31 | static struct rs_data **rs; 32 | 33 | static void downMix(short *out, short *pcm_left, short *pcm_right, int len) 34 | { 35 | int i; 36 | for (i = 0; i < len; i++) { 37 | out[i] = (pcm_left[i] / 2 + pcm_right[i] / 2); 38 | } 39 | } 40 | 41 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_downmix 42 | (JNIEnv * env, jclass class, jshortArray outputBuffer, 43 | jshortArray inputLeft, jshortArray inputRight, jint numSamples) { 44 | short *input_left, *input_right, *output_buf; 45 | 46 | output_buf = 47 | (short *)(*env)->GetPrimitiveArrayCritical(env, outputBuffer, 0); 48 | input_left = 49 | (short *)(*env)->GetPrimitiveArrayCritical(env, inputLeft, 0); 50 | input_right = 51 | (short *)(*env)->GetPrimitiveArrayCritical(env, inputRight, 0); 52 | 53 | downMix(output_buf, input_left, input_right, numSamples); 54 | 55 | /* dont bother updating left/right buffers */ 56 | (*env)->ReleasePrimitiveArrayCritical(env, inputLeft, input_left, 57 | JNI_ABORT); 58 | (*env)->ReleasePrimitiveArrayCritical(env, inputRight, input_right, 59 | JNI_ABORT); 60 | /* update the output buffer */ 61 | (*env)->ReleasePrimitiveArrayCritical(env, outputBuffer, output_buf, 0); 62 | } 63 | 64 | JNIEXPORT jint JNICALL Java_net_sourceforge_resample_Resample_resample 65 | (JNIEnv *env, jclass class, jdouble factor, jshortArray inputBuffer, jshortArray outputBuffer, jint numSamples) 66 | { 67 | int num; 68 | short *in_buf, *out_buf; 69 | 70 | in_buf = (short *)(*env)->GetPrimitiveArrayCritical(env, inputBuffer, 0); 71 | out_buf = (short *)(*env)->GetPrimitiveArrayCritical(env, outputBuffer, 0); 72 | 73 | num = resample_simple(factor, in_buf, out_buf, numSamples); 74 | 75 | (*env)->ReleasePrimitiveArrayCritical(env, inputBuffer, in_buf, JNI_ABORT); 76 | (*env)->ReleasePrimitiveArrayCritical(env, outputBuffer, out_buf, 0); 77 | 78 | return num; 79 | } 80 | 81 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_initialize 82 | (JNIEnv * env, jclass class, jint inputRate, jint outputRate, 83 | jint bufferSize, jint channels) { 84 | int i; 85 | if (!rs) { 86 | num_channels = channels; 87 | rs = calloc(num_channels, sizeof(struct rs_data *)); 88 | for (i = 0; i < num_channels; i++) { 89 | rs[i] = 90 | resample_init(inputRate, outputRate, bufferSize); 91 | } 92 | } else { 93 | __android_log_print(ANDROID_LOG_DEBUG, "libresample.so", 94 | "Unable to initialize libresample"); 95 | } 96 | } 97 | 98 | JNIEXPORT jdouble JNICALL Java_net_sourceforge_resample_Resample_getFactor 99 | (JNIEnv * env, jclass class) { 100 | return rs[net_sourceforge_resample_Resample_CHANNEL_MONO]->factor; 101 | } 102 | 103 | JNIEXPORT jint JNICALL Java_net_sourceforge_resample_Resample_process 104 | (JNIEnv * env, jclass class, jshortArray inputBuffer, 105 | jshortArray outputBuffer, jint channel, jboolean isLast) { 106 | int i, in_len, out_len, res; 107 | short *in_buf, *out_buf; 108 | 109 | if (!rs) { 110 | __android_log_print(ANDROID_LOG_DEBUG, "libresample.so", 111 | "No suitable resample instance found!"); 112 | return -1; 113 | } 114 | 115 | if (channel >= net_sourceforge_resample_Resample_MAX_CHANNELS) { 116 | __android_log_print(ANDROID_LOG_DEBUG, "libresample.so", 117 | "Resample supports stereo, mono only!"); 118 | return -1; 119 | } 120 | 121 | in_len = (*env)->GetArrayLength(env, inputBuffer); 122 | out_len = (*env)->GetArrayLength(env, outputBuffer); 123 | in_buf = 124 | (short *)(*env)->GetPrimitiveArrayCritical(env, inputBuffer, 0); 125 | out_buf = 126 | (short *)(*env)->GetPrimitiveArrayCritical(env, outputBuffer, 0); 127 | 128 | res = resample(rs[channel], in_buf, in_len, out_buf, out_len, isLast); 129 | /* don't bother updating input buffer */ 130 | (*env)->ReleasePrimitiveArrayCritical(env, inputBuffer, in_buf, 131 | JNI_ABORT); 132 | /* do update the output buffer */ 133 | (*env)->ReleasePrimitiveArrayCritical(env, outputBuffer, in_buf, 0); 134 | 135 | return res; 136 | } 137 | 138 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_close 139 | (JNIEnv * env, jclass class) { 140 | int i; 141 | if (rs) { 142 | for (i = 0; i < num_channels; i++) { 143 | resample_close(rs[i]); 144 | } 145 | free(rs); 146 | rs = NULL; 147 | num_channels = 0; 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /jni/resample/resample-interface.h: -------------------------------------------------------------------------------- 1 | /* DO NOT EDIT THIS FILE - it is machine generated */ 2 | #include 3 | /* Header for class net_sourceforge_resample_Resample */ 4 | 5 | #ifndef _Included_net_sourceforge_resample_Resample 6 | #define _Included_net_sourceforge_resample_Resample 7 | #ifdef __cplusplus 8 | extern "C" { 9 | #endif 10 | #undef net_sourceforge_resample_Resample_DEFAULT_BUFFER_SIZE 11 | #define net_sourceforge_resample_Resample_DEFAULT_BUFFER_SIZE 4096L 12 | #undef net_sourceforge_resample_Resample_MAX_CHANNELS 13 | #define net_sourceforge_resample_Resample_MAX_CHANNELS 2L 14 | #undef net_sourceforge_resample_Resample_CHANNEL_MONO 15 | #define net_sourceforge_resample_Resample_CHANNEL_MONO 0L 16 | #undef net_sourceforge_resample_Resample_CHANNEL_LEFT 17 | #define net_sourceforge_resample_Resample_CHANNEL_LEFT 0L 18 | #undef net_sourceforge_resample_Resample_CHANNEL_RIGHT 19 | #define net_sourceforge_resample_Resample_CHANNEL_RIGHT 1L 20 | /* 21 | * Class: net_sourceforge_resample_Resample 22 | * Method: downmix 23 | * Signature: ([S[S[SI)V 24 | */ 25 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_downmix 26 | (JNIEnv *, jclass, jshortArray, jshortArray, jshortArray, jint); 27 | 28 | /* 29 | * Class: net_sourceforge_resample_Resample 30 | * Method: resample 31 | * Signature: (D[S[SI)I 32 | */ 33 | JNIEXPORT jint JNICALL Java_net_sourceforge_resample_Resample_resample 34 | (JNIEnv *, jclass, jdouble, jshortArray, jshortArray, jint); 35 | 36 | /* 37 | * Class: net_sourceforge_resample_Resample 38 | * Method: initialize 39 | * Signature: (IIII)V 40 | */ 41 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_initialize 42 | (JNIEnv *, jclass, jint, jint, jint, jint); 43 | 44 | /* 45 | * Class: net_sourceforge_resample_Resample 46 | * Method: getFactor 47 | * Signature: ()D 48 | */ 49 | JNIEXPORT jdouble JNICALL Java_net_sourceforge_resample_Resample_getFactor 50 | (JNIEnv *, jclass); 51 | 52 | /* 53 | * Class: net_sourceforge_resample_Resample 54 | * Method: process 55 | * Signature: ([S[SIZ)I 56 | */ 57 | JNIEXPORT jint JNICALL Java_net_sourceforge_resample_Resample_process 58 | (JNIEnv *, jclass, jshortArray, jshortArray, jint, jboolean); 59 | 60 | /* 61 | * Class: net_sourceforge_resample_Resample 62 | * Method: close 63 | * Signature: ()V 64 | */ 65 | JNIEXPORT void JNICALL Java_net_sourceforge_resample_Resample_close 66 | (JNIEnv *, jclass); 67 | 68 | #ifdef __cplusplus 69 | } 70 | #endif 71 | #endif 72 | -------------------------------------------------------------------------------- /jni/resample/resample.c: -------------------------------------------------------------------------------- 1 | /* resample.c - sampling rate conversion subroutines 2 | * 3 | * Original version available at the 4 | * Digital Audio Resampling Home Page located at 5 | * http://ccrma.stanford.edu/~jos/resample/. 6 | * 7 | * Modified for use on Android by Ethan Chen 8 | * 9 | * This library is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2 of the License, or (at your option) any later version. 13 | * 14 | * This library is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with this library; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 | */ 23 | 24 | #include 25 | #include 26 | #include 27 | #include 28 | #include "resample.h" 29 | 30 | #define IBUFFSIZE 4096 /* default input buffer size */ 31 | 32 | static inline short WordToHword(int v, int scl) 33 | { 34 | short out; 35 | int llsb = (1 << (scl - 1)); 36 | v += llsb; /* round */ 37 | v >>= scl; 38 | if (v > MAX_HWORD) { 39 | v = MIN_HWORD; 40 | } 41 | out = (short)v; 42 | return out; 43 | } 44 | 45 | /* Sampling rate conversion using linear interpolation for maximum speed. */ 46 | static int SrcLinear(short X[], short Y[], double factor, unsigned int *Time, 47 | unsigned short Nx) 48 | { 49 | short iconst; 50 | short *Xp, *Ystart; 51 | int v, x1, x2; 52 | 53 | unsigned int dt; /* Step through input signal */ 54 | unsigned int endTime; 55 | 56 | factor = 1.0 / factor; 57 | dt = factor * FP_FACTOR + 0.5; /* Output sampling period */ 58 | 59 | Ystart = Y; 60 | endTime = *Time + FP_FACTOR * (int)Nx; 61 | while (*Time < endTime) { 62 | iconst = (*Time) & FP_MASK; /* mask off lower 16 bits of time */ 63 | Xp = &X[(*Time) >> FP_DIGITS]; /* Ptr to current input sample is top 16 bits */ 64 | x1 = *Xp++; 65 | x2 = *Xp; 66 | x1 *= FP_FACTOR - iconst; 67 | x2 *= iconst; 68 | v = x1 + x2; 69 | *Y++ = WordToHword(v, FP_DIGITS); /* Deposit output */ 70 | *Time += dt; /* Move to next sample by time increment */ 71 | } 72 | return (Y - Ystart); /* Return number of output samples */ 73 | } 74 | 75 | int 76 | resample_simple(double factor, short *in_buf, short *out_buf, int buffer_size) 77 | { 78 | int num; 79 | int time; 80 | 81 | time = (10 << FP_DIGITS); 82 | num = SrcLinear(in_buf, out_buf, factor, &time, buffer_size); 83 | 84 | return num; 85 | } 86 | 87 | struct rs_data *resample_init(int in_rate, int out_rate, int buffer_size) 88 | { 89 | struct rs_data *rs; 90 | 91 | rs = (struct rs_data *)calloc(sizeof(struct rs_data), 1); 92 | if (!rs) { 93 | return NULL; 94 | } 95 | if (out_rate <= 0 || in_rate <= 0) { 96 | return NULL; 97 | } 98 | 99 | rs->factor = out_rate / (double)in_rate; 100 | rs->in_buf_offset = 10; 101 | rs->in_buf_ptr = rs->in_buf_offset; 102 | rs->in_buf_read = rs->in_buf_offset; 103 | rs->time = (rs->in_buf_offset << FP_DIGITS); 104 | 105 | rs->in_buf_size = buffer_size; 106 | rs->out_buf_size = 107 | (int)(((double)(rs->in_buf_size)) * rs->factor + 2.0); 108 | 109 | rs->in_buf = 110 | (short *)calloc(sizeof(short), rs->in_buf_size + rs->in_buf_offset); 111 | rs->out_buf = (short *)calloc(sizeof(short), rs->out_buf_size); 112 | if (!rs->in_buf || !rs->out_buf) { 113 | resample_close(rs); 114 | return NULL; 115 | } 116 | memset(rs->in_buf, 0, sizeof(short) * rs->in_buf_offset); 117 | return rs; 118 | } 119 | 120 | int 121 | resample(struct rs_data *rs, short *in_buf, int in_buf_size, short *out_buf, 122 | int out_buf_size, int last) 123 | { 124 | int i, len; 125 | int num_in; /* number of samples from previous buffer */ 126 | int num_out; /* number of samples resampled by SrcLinear */ 127 | int num_reuse; /* number of samples to re-use in next buffer */ 128 | int num_creep; /* number of samples of time accumulation */ 129 | int out_total_samples; 130 | 131 | if (!rs) { 132 | return -1; 133 | } 134 | 135 | rs->in_buf_used = 0; 136 | out_total_samples = 0; 137 | 138 | if (rs->out_buf_ptr) { 139 | len = MIN(out_buf_size, rs->out_buf_ptr); 140 | /* copy leftover samples to the output */ 141 | for (i = 0; i < len; i++) { 142 | out_buf[out_total_samples + i] = rs->out_buf[i]; 143 | } 144 | out_total_samples += len; 145 | /* shift remaining samples in output buffer to beginning */ 146 | for (i = 0; i < rs->out_buf_ptr - len; i++) { 147 | rs->out_buf[i] = rs->out_buf[len + i]; 148 | } 149 | rs->out_buf_ptr -= len; 150 | 151 | return out_total_samples; 152 | } 153 | 154 | for (;;) { 155 | /* grab input samples from buffer */ 156 | len = rs->in_buf_size - rs->in_buf_read; 157 | if (len >= in_buf_size - rs->in_buf_used) { 158 | len = in_buf_size - rs->in_buf_used; 159 | } 160 | for (i = 0; i < len; i++) { 161 | rs->in_buf[rs->in_buf_read + i] = 162 | in_buf[rs->in_buf_used + i]; 163 | } 164 | rs->in_buf_used += len; 165 | rs->in_buf_read += len; 166 | 167 | if (last && (rs->in_buf_used == in_buf_size)) { 168 | /* pad buffer with zero if no more data */ 169 | num_in = rs->in_buf_read - rs->in_buf_offset; 170 | for (i = 0; i < rs->in_buf_offset; i++) { 171 | rs->in_buf[rs->in_buf_read + i] = 0; 172 | } 173 | } else { 174 | num_in = rs->in_buf_read - 2 * rs->in_buf_offset; 175 | } 176 | 177 | if (num_in <= 0) { 178 | break; 179 | } 180 | 181 | /* do linear interpolation */ 182 | num_out = 183 | SrcLinear(rs->in_buf, rs->out_buf, rs->factor, 184 | &rs->time, num_in); 185 | 186 | /* move time back num_in samples back */ 187 | rs->time -= (num_in << FP_DIGITS); 188 | rs->in_buf_ptr += num_in; 189 | 190 | /* remove time accumulation */ 191 | num_creep = (rs->time >> FP_DIGITS) - rs->in_buf_offset; 192 | if (num_creep) { 193 | rs->time -= (num_creep << FP_DIGITS); 194 | rs->in_buf_ptr += num_creep; 195 | } 196 | 197 | /* copy input signal that needs to be reused */ 198 | num_reuse = 199 | rs->in_buf_read - (rs->in_buf_ptr - rs->in_buf_offset); 200 | for (i = 0; i < num_reuse; i++) { 201 | rs->in_buf[i] = 202 | rs->in_buf[(rs->in_buf_ptr - rs->in_buf_offset) + 203 | i]; 204 | } 205 | rs->in_buf_read = num_reuse; 206 | rs->in_buf_ptr = rs->in_buf_offset; 207 | 208 | /* copy samples to output buffer */ 209 | rs->out_buf_ptr = num_out; 210 | if (rs->out_buf_ptr && (out_buf_size - out_total_samples > 0)) { 211 | len = 212 | MIN(out_buf_size - out_total_samples, 213 | rs->out_buf_ptr); 214 | for (i = 0; i < len; i++) { 215 | out_buf[out_total_samples + i] = rs->out_buf[i]; 216 | } 217 | out_total_samples += len; 218 | /* store uncopied output buffer */ 219 | for (i = 0; i < rs->out_buf_ptr - len; i++) { 220 | rs->out_buf[i] = rs->out_buf[len + i]; 221 | } 222 | rs->out_buf_ptr -= len; 223 | } 224 | if (rs->out_buf_ptr) { 225 | break; 226 | } 227 | } 228 | 229 | return out_total_samples; 230 | } 231 | 232 | void resample_close(struct rs_data *rs) 233 | { 234 | if (rs) { 235 | free(rs->in_buf); 236 | free(rs->out_buf); 237 | free(rs); 238 | rs = NULL; 239 | } 240 | } 241 | -------------------------------------------------------------------------------- /jni/resample/resample.h: -------------------------------------------------------------------------------- 1 | /* resample.h - sampling rate conversion subroutines 2 | * 3 | * Original version available at the 4 | * Digital Audio Resampling Home Page located at 5 | * http://ccrma.stanford.edu/~jos/resample/. 6 | * 7 | * Modified for use on Android by Ethan Chen 8 | * 9 | * This library is free software; you can redistribute it and/or 10 | * modify it under the terms of the GNU Lesser General Public 11 | * License as published by the Free Software Foundation; either 12 | * version 2 of the License, or (at your option) any later version. 13 | * 14 | * This library is distributed in the hope that it will be useful, 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | * Lesser General Public License for more details. 18 | * 19 | * You should have received a copy of the GNU Lesser General Public 20 | * License along with this library; if not, write to the Free Software 21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 22 | */ 23 | 24 | #define FP_DIGITS 15 25 | #define FP_FACTOR (1 << FP_DIGITS) 26 | #define FP_MASK (FP_FACTOR - 1) 27 | 28 | #define MAX_HWORD (32767) 29 | #define MIN_HWORD (-32768) 30 | 31 | #ifndef MAX 32 | #define MAX(x,y) ((x)>(y) ?(x):(y)) 33 | #endif 34 | #ifndef MIN 35 | #define MIN(x,y) ((x)<(y) ?(x):(y)) 36 | #endif 37 | 38 | struct rs_data { 39 | double factor; 40 | /* time is 32-bit fixed-point using 2^FP_FACTOR as factor */ 41 | unsigned int time; 42 | int in_buf_ptr; 43 | int out_buf_ptr; 44 | int in_buf_read; 45 | int in_buf_offset; 46 | int in_buf_used; 47 | int in_buf_size; 48 | int out_buf_size; 49 | short *in_buf; 50 | short *out_buf; 51 | }; 52 | 53 | int resample_simple(double factor, short *in_buf, short *out_buf, int buffer_size); 54 | 55 | struct rs_data *resample_init(int in_rate, int out_rate, int buffer_size); 56 | 57 | int resample(struct rs_data *rs, short *in_buf, int in_buf_size, short *out_buf, 58 | int out_buf_size, int last); 59 | 60 | void resample_close(struct rs_data *rs); 61 | -------------------------------------------------------------------------------- /proguard.cfg: -------------------------------------------------------------------------------- 1 | -optimizationpasses 5 2 | -dontusemixedcaseclassnames 3 | -dontskipnonpubliclibraryclasses 4 | -dontpreverify 5 | -verbose 6 | -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* 7 | 8 | -keep public class * extends android.app.Activity 9 | -keep public class * extends android.app.Application 10 | -keep public class * extends android.app.Service 11 | -keep public class * extends android.content.BroadcastReceiver 12 | -keep public class * extends android.content.ContentProvider 13 | -keep public class * extends android.app.backup.BackupAgentHelper 14 | -keep public class * extends android.preference.Preference 15 | -keep public class com.android.vending.licensing.ILicensingService 16 | 17 | -keepclasseswithmembernames class * { 18 | native ; 19 | } 20 | 21 | -keepclasseswithmembernames class * { 22 | public (android.content.Context, android.util.AttributeSet); 23 | } 24 | 25 | -keepclasseswithmembernames class * { 26 | public (android.content.Context, android.util.AttributeSet, int); 27 | } 28 | 29 | -keepclassmembers enum * { 30 | public static **[] values(); 31 | public static ** valueOf(java.lang.String); 32 | } 33 | 34 | -keep class * implements android.os.Parcelable { 35 | public static final android.os.Parcelable$Creator *; 36 | } 37 | -------------------------------------------------------------------------------- /res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Hello World! 4 | libresample 5 | 6 | -------------------------------------------------------------------------------- /src/net/sourceforge/resample/Resample.java: -------------------------------------------------------------------------------- 1 | package net.sourceforge.resample; 2 | 3 | public class Resample { 4 | 5 | public static final int DEFAULT_BUFFER_SIZE = 4096; 6 | public static final int MAX_CHANNELS = 2; 7 | public static final int CHANNEL_MONO = 0; 8 | public static final int CHANNEL_LEFT = 0; 9 | public static final int CHANNEL_RIGHT = 1; 10 | 11 | private static final String RESAMPLE_LIB = "resample"; 12 | 13 | static { 14 | System.loadLibrary(RESAMPLE_LIB); 15 | } 16 | 17 | public static native void downmix(short outputBuffer[], short inputLeft[], short inputRight[], int numSamples); 18 | 19 | public static native int resample(double factor, short inputBuffer[], short outputBuffer[], int numSamples); 20 | 21 | public static native void initialize(int inputRate, int outputRate, int bufferSize, int channels); 22 | 23 | public static native double getFactor(); 24 | 25 | public static native int process(short inputBuffer[], short outputBuffer[], int channel, boolean isLast); 26 | 27 | public static native void close(); 28 | } --------------------------------------------------------------------------------