1. 25 Mar, 2013 4 commits
    • Timothy B. Terriberry's avatar
      Use clipping prevention on 16-bit decode paths. · bf06c4f2
      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's avatar
      Reset dither state when API path changes. · f8222c99
      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's avatar
      Minor comment fix. · 94b0c98a
      Timothy B. Terriberry authored
    • Timothy B. Terriberry's avatar
      Fix a buffer overflow in op_read_stereo(). · 81002442
      Timothy B. Terriberry authored
      For multichannel files, this potentially caused writes beyond the
       end of the output buffer provided by the user.
  2. 01 Mar, 2013 5 commits
  3. 28 Feb, 2013 13 commits
    • Timothy B. Terriberry's avatar
      More minor win32 cleanups. · 27c8948a
      Timothy B. Terriberry authored
      Just normalizing coding style.
    • Ralph Giles's avatar
      Add nu774 to the authors list. · 50ee9e30
      Ralph Giles authored and Ralph Giles's avatar Ralph Giles committed
    • Timothy B. Terriberry's avatar
      Support the Windows system certificate store. · 9a866b18
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      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
      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>
    • Timothy B. Terriberry's avatar
      Fix typo in 714d83c8. · e4217fbe
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
    • Timothy B. Terriberry's avatar
      Fix warnings when compiling with a recent MSVC. · 4ce926cb
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      Apparently Vista includes more things in its Winsock implementation
       and errno.h than earlier versions of Windows.
    • Timothy B. Terriberry's avatar
      Clean up winsock usage. · 25477092
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      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.
    • Timothy B. Terriberry's avatar
      Use fseeko64/ftello64 for mingw32. · d7591578
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      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
      The resulting binary still doesn't run in wine for me, but that may
       be a personal problem.
    • Timothy B. Terriberry's avatar
      Require WindowsXP for mingw32. · cc5f107c
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      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)
      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.
    • Timothy B. Terriberry's avatar
      Clean up mingw32 configuruation. · 1e9d7d85
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      Properly check for HTTP support and handle the case where it's
      Also fixes the include paths broken by 3e7f0ddc.
    • Timothy B. Terriberry's avatar
      s/OS_WIN32/OP_WIN32/ · 100027a3
      Timothy B. Terriberry authored and Ralph Giles's avatar Ralph Giles committed
      The former is too generic.
    • Ralph Giles's avatar
      Merge two OS_WIN32 conditionals. · 383dfbb4
      Ralph Giles authored and Ralph Giles's avatar Ralph Giles committed
    • Ralph Giles's avatar
      Move win32 source files up a level. · 4a5c89ad
      Ralph Giles authored and Ralph Giles's avatar Ralph Giles committed
    • Ralph Giles's avatar
      Initial winsock support patch from nu774. · 9c097eee
      Ralph Giles authored and Ralph Giles's avatar Ralph Giles committed
      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.
  4. 12 Feb, 2013 1 commit
  5. 10 Feb, 2013 1 commit
    • Timothy B. Terriberry's avatar
      Allow decoding forward instead of seeking. · 3cc27477
      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.
  6. 27 Jan, 2013 1 commit
  7. 10 Jan, 2013 3 commits
  8. 23 Dec, 2012 2 commits
  9. 04 Dec, 2012 1 commit
  10. 28 Nov, 2012 1 commit
  11. 19 Nov, 2012 1 commit
  12. 14 Nov, 2012 1 commit
  13. 13 Nov, 2012 5 commits
    • Ralph Giles's avatar
      Remove 'export' from the NO_DOXYGEN Makefile variable. · d0a4b9bb
      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's avatar
      Bump soname version for the v0.2 release. · 036328d4
      Ralph Giles authored
    • Timothy B. Terriberry's avatar
      Check for end_offset < data_offset. · 15193c53
      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's avatar
      Add op_get_last_page() for calculating duration. · 4dcf9b0d
      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's avatar
      Some minor comment updates. · 99c3c5e9
      Timothy B. Terriberry authored
      Be more specific about which RFC we're quoting in the SSL hostname
  14. 12 Nov, 2012 1 commit
    • Ron's avatar
      Support --disable-maintainer-mode · ac0af36f
      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: default avatarRalph Giles <giles@mozilla.com>