- 25 Mar, 2013 4 commits
-
-
Timothy B. Terriberry authored
When we decode using libopus's fixed-point APIs, libopus internally applies soft clipping prevention. When we decode using libopus's floating-point APIs, this behavior is disabled. If we're ultimately planning to output the data to the user in fixed-point, we need to apply the clipping prevention ourselves.
-
Timothy B. Terriberry authored
The caller can switch between the fixed/float APIs and the stereo/multichannel APIs on every call. Detect this and reset the dither state to avoid potentially injecting noise from a very out-of-date state when switching from fixed to float back to fixed, or from the wrong channels when switching between stereo and multichannel. Normal applications won't do this stuff, but we should be well-behaved if they do.
-
Timothy B. Terriberry authored
-
Timothy B. Terriberry authored
For multichannel files, this potentially caused writes beyond the end of the output buffer provided by the user.
-
- 01 Mar, 2013 5 commits
-
-
Ralph Giles authored
-
Ralph Giles authored
-
Ralph Giles authored
Reduces cruft on 'make clean'. I've rearranged some of the non-functional self-test targets, but not really fixed them.
-
Timothy B. Terriberry authored
The old ones gave a different warning on Apple's clang 4.2.
-
Ralph Giles authored
This is required by the xmingw build.
-
- 28 Feb, 2013 13 commits
-
-
Timothy B. Terriberry authored
Just normalizing coding style.
-
-
OpenSSL on Windows does not pull certificates from any well-known location (in fact most binaries continue to use the default Unix path, which usually doesn't even exist). We could ship our own set of certificates (e.g., cloned from the Mozilla root list), but I don't want to be responsible for releasing libopusfile updates when things like DigiNotar fiasco [1] happen. That approach also means that we would need to load, parse, and keep a copy of every certificate in the system for every SSL session. OpenSSL has had patches sitting in their bugtracker which load certificates from the Crypto API's system certificate store. However, those patches have been sitting around for several years, so movement on that front in the near future seems unlikely. We don't care about using OpenSSL's builtin CAPI engine, though, so we can do the same thing with less than 200 lines of code. This puts the maintenance burden on Windows Update, which will be far more timely and effective than getting people to upgrade libopusfile, and gets us on-demand loading of just the certificates we need. [1] <https://bugzilla.mozilla.org/show_bug.cgi?id=682927>
-
-
Apparently Vista includes more things in its Winsock implementation and errno.h than earlier versions of Windows.
-
This keeps differences which can be cleanly abstracted away clean (closesocket, ioctlsocket, getsockopt, setsockopt), and makes differences which cannot be cleanly abstracted explicit (SOCKET, INVALID_SOCKET, WSAGetLastError/WSASetLastError). It also gets rid of wsockwrapper.[ch], since it contained just a single function. This can successfully pass the seeking_example tests on big.chained.blob over https when built with i686-w64-mingw32 and run under wine. It does not solve the certificate distribution problems with using OpenSSL on a real Windows system.
-
It turns out i686-pc-mingw32 does define these functions, and they are always available (unlike _fseeki64/_ftelli64). This means we can build and link without requiring i686-w64-mingw32. The resulting binary still doesn't run in wine for me, but that may be a personal problem.
-
This allows an i686-pc-mingw32 build to use getaddrinfo/ freeaddrinfo correctly. It's not needed for an i686-w64-mingw32 build, but it doesn't hurt to leave it in here. i686-pc-mingw32 still won't work correctly, because it does not support fseeko/ftello, nor (unless using MSVCRT 8.0 or later) _fseeki64/_ftelli64. We could define __MSVCRT_VERSION__ to 0x800 to get the latter, but this would require different MSVCRT versions than libogg and libopus are built with by default, which makes a bit of a mess.
-
Properly check for HTTP support and handle the case where it's disabled. Also fixes the include paths broken by 3e7f0ddc.
-
The former is too generic.
-
-
-
Some tweak might be still needed to take care of OPENSSL_AppLink to get https support working. In win32, user application of openssl is required to include openssl/applink.c or something, when openssl is compiled with OPENSSL_USE_APPLINK. I don't know how it should be taken care of, from the library point of view (it must be done by user of libopusfile, since openssl always searches that function in executable module). Posted to the hydrogenaudio format 2012 November 19. http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=97856&view=findpost&p=814582
-
- 12 Feb, 2013 1 commit
-
-
Timothy B. Terriberry authored
Fixes Coverity #980717, #980718, #980719.
-
- 10 Feb, 2013 1 commit
-
-
Timothy B. Terriberry authored
This lets us seek forward by small amounts (currently less than 90 ms) by decoding forward instead of actually seeking. This is often a good idea, since we would have to decode at least 80 ms of pre-roll anyway. This optimization also handles the case of seeking to what is already the current position cheaply. This became relatively easy after we dropped op_pcm_seek_page() from the public API. However, because others may look to libopusfile's seeking code as a model, we've added an OP_SMALL_FOOTPRINT #define to cordon off some of these complex sections of code that are deeply specific to libopusfile's design, ancillary to the main seeking algorithm, and relatively unimportant to overall seeking performance.
-
- 27 Jan, 2013 1 commit
-
-
Timothy B. Terriberry authored
We should copy the minimum of the buffer size and the remaining bytes, not the maximum. Fixes #1927.
-
- 10 Jan, 2013 3 commits
-
-
Timothy B. Terriberry authored
This makes it more likely the WAV file header matches the amount of data actually written if we run out of space. This is easier than making the accounting better.
-
Timothy B. Terriberry authored
-
Timothy B. Terriberry authored
-
- 23 Dec, 2012 2 commits
-
-
Timothy B. Terriberry authored
-
Timothy B. Terriberry authored
Thanks to e98 for the report.
-
- 04 Dec, 2012 1 commit
-
-
Ralph Giles authored
-
- 28 Nov, 2012 1 commit
-
-
Timothy B. Terriberry authored
Add the step to the release procedure.
-
- 19 Nov, 2012 1 commit
-
-
Timothy B. Terriberry authored
The assert might also be helpful for static analysis.
-
- 14 Nov, 2012 1 commit
-
-
Ralph Giles authored
These are useful alternatives to the autoconf build, since we're maintaining them we should include them in release packages.
-
- 13 Nov, 2012 5 commits
-
-
Ralph Giles authored
This was needed in the opus Makefile.am to pass the results to submakefiles. Since we build everything from the top-level Makefile, we don't need this for opusfile.
-
Ralph Giles authored
-
Timothy B. Terriberry authored
I don't think it actually breaks anything if we don't (seeking will fail, but it will fail cleanly). However, it _is_ an indication that the file data changed out from under us (or of another library bug), so we should fail fast.
-
Timothy B. Terriberry authored
Using op_get_prev_page_serial() meant if there were valid pages from another stream, we would re-scan them all repeatedly until we managed to back up, a page at a time, to a chunk with a page from the preferred stream with a valid granule position. Breaking this case into its own function means we can guarantee we only scan each page once, and that we can stop as soon as we hit a page from a different link (in the unlikely event that the stream has no pages with valid timestamps).
-
Timothy B. Terriberry authored
Be more specific about which RFC we're quoting in the SSL hostname verification.
-
- 12 Nov, 2012 1 commit
-
-
Ron authored
Adding AM_MAINTAINER_MODE([enable]) preserves the current behaviour of rebuilding the autotools support by default if anything changed to make it out of date -- which is desirable for people building from git to avoid "Why is the build broken? Oh I forgot to rerun autogen.sh", which is an all too frequent FAQ. But it also allows it to be disabled, which is mostly useful for things like distro package builds where the files should be preserved in their original form, and configure shouldn't be run twice on the first build if the timestamps were not strictly preserved for these files. Signed-off-by:
Ralph Giles <giles@mozilla.com>
-