4 years agoMerge branch 'master' into mingw mingw
Ralph Giles [Thu, 9 Jan 2014 20:03:00 +0000 (12:03 -0800)]
Merge branch 'master' into mingw

4 years agoBump soname version for v0.5.
Ralph Giles [Thu, 9 Jan 2014 19:59:02 +0000 (11:59 -0800)]
Bump soname version for v0.5.

We've added tag copy/compare, server_info, decode_cb, set_dither.
Constification is backward-compatible.

4 years agoMake subdir-objects the default.
Ralph Giles [Wed, 8 Jan 2014 00:32:45 +0000 (16:32 -0800)]
Make subdir-objects the default.

Automake 1.14.1 warns that this will become the default in the future
and advises enabling this, I assume to catch conflicts. We already
use this option in the opus library.

4 years agoClean up some bare malloc/free calls.
Timothy B. Terriberry [Wed, 8 Jan 2014 00:10:22 +0000 (16:10 -0800)]
Clean up some bare malloc/free calls.

These should use the same macros as the rest of the code.

4 years agoMove a misplaced #endif.
Timothy B. Terriberry [Wed, 8 Jan 2014 00:09:27 +0000 (16:09 -0800)]
Move a misplaced #endif.

This was meant to affect file opening only, not stream info

4 years agoMerge branch 'master' into mingw
Ralph Giles [Thu, 5 Dec 2013 16:49:13 +0000 (08:49 -0800)]
Merge branch 'master' into mingw

4 years agoRevert "Pass --always to 'git describe'."
Ron [Thu, 5 Dec 2013 06:50:19 +0000 (17:20 +1030)]
Revert "Pass --always to 'git describe'."

This reverts commit 8638d78c76ab7689666ccacb615d1ac399961f2d.
Since it doesn't actually fix the original problem with shallow clones,
it returns just a hash, not something we (currently) can extract as a
version string in the form things are expecting.  Which means the .pc
version checks for things using the library at least will still fail.

4 years agoUpdate IPv4/IPv6 dual stack to RFC 6555.
Timothy B. Terriberry [Tue, 19 Nov 2013 23:24:44 +0000 (15:24 -0800)]
Update IPv4/IPv6 dual stack to RFC 6555.

RFC 6555 "Happy Eyeballs" has a few recommendations for
 implementing dual requests to hosts with both IPv4 and IPv6 DNS
 entries that differ slightly from how we used to do it.
This commit updates things to follow those recommendations.

4 years agoReset buffer before building a CONNECT request.
Timothy B. Terriberry [Tue, 19 Nov 2013 23:17:55 +0000 (15:17 -0800)]
Reset buffer before building a CONNECT request.

Otherwise redirects we'll stuff two requests into the same buffer
 if there's a redirect to another https URL via a proxy.

4 years agoRework pipelining logic.
Timothy B. Terriberry [Tue, 19 Nov 2013 23:13:22 +0000 (15:13 -0800)]
Rework pipelining logic.

This separates the state for whether pipelining might be supported
 (HTTP 1.1 responses with a Server header) and for whether it's
 been explicitly disabled (Server headers from known-bad servers).
This does a better job with repeated (and possibly contradictory)

4 years agoDocument some string buffer function usage.
Timothy B. Terriberry [Tue, 19 Nov 2013 23:01:40 +0000 (15:01 -0800)]
Document some string buffer function usage.

4 years agoPass --always to 'git describe'.
Ralph Giles [Tue, 1 Oct 2013 21:44:29 +0000 (14:44 -0700)]
Pass --always to 'git describe'.

This provides a fallback commit id if no tags are available,
for example when doing a shallow clone.

5 years agoFix a parentheses error in op_utf8_to_utf16().
Timothy B. Terriberry [Tue, 3 Sep 2013 21:59:26 +0000 (14:59 -0700)]
Fix a parentheses error in op_utf8_to_utf16().

For many Latin1 characters this still worked correctly by pure luck.
Unfortunately, that included my test case.

5 years agoFix a granpos calculation we assumed couldn't fail.
Timothy B. Terriberry [Tue, 3 Sep 2013 00:23:58 +0000 (17:23 -0700)]
Fix a granpos calculation we assumed couldn't fail.

It was only guaranteed to work in the seekable case.
Thanks to Radio Stadtfilter 96.3Mhz for sending a stream which
 triggered this failure.

5 years ago%s/op_read_native_filter/op_filter_read_native/g
Timothy B. Terriberry [Fri, 30 Aug 2013 01:48:13 +0000 (18:48 -0700)]

All the actual filters are named op_foo_filter(), so
 op_read_native_filter() looked like another one.
Changing the word order should remove the ambiguity.

5 years agoMark more internal pointers const.
Timothy B. Terriberry [Fri, 30 Aug 2013 01:46:12 +0000 (18:46 -0700)]
Mark more internal pointers const.

Don't know if this actually leads to any better code generation,
 but it may make the code a little clearer.

5 years agoMark a bunch of API functions const.
Timothy B. Terriberry [Thu, 29 Aug 2013 08:05:46 +0000 (01:05 -0700)]
Mark a bunch of API functions const.

This makes it clear they don't modify the state, which is a useful
 indicator of what is safe to call from the application decode

5 years agoDocument that we will always have at least 1 link.
Timothy B. Terriberry [Thu, 29 Aug 2013 07:59:23 +0000 (00:59 -0700)]
Document that we will always have at least 1 link.

Otherwise we would have failed to open the stream.

5 years agoMinor simplification to end-trimming logic.
Timothy B. Terriberry [Thu, 29 Aug 2013 07:55:49 +0000 (00:55 -0700)]
Minor simplification to end-trimming logic.

This is a little easier to read, and allows us to save some
 subtractions and a comparison.

5 years agoGet rid of the op_float2short_filter() wrapper.
Timothy B. Terriberry [Thu, 29 Aug 2013 07:47:59 +0000 (00:47 -0700)]
Get rid of the op_float2short_filter() wrapper.

The increasingly-inaccurately named op_shaped_dither16() can serve
 this role instead, without much additional complexity (perhaps
 less, once you consider the required shuffling around of the
 function parameters).

5 years agoAdd an API to disable dithering.
Timothy B. Terriberry [Thu, 29 Aug 2013 07:36:13 +0000 (00:36 -0700)]
Add an API to disable dithering.

This is to correspond to the feature in opus-tools's opusdec.
opusdec itself probably won't be able to use it, because it still
 wants to do dithering after resampling, but the motivation for the
 feature is the same.

5 years agoAvoid clipping in short->float stereo downmixing.
Timothy B. Terriberry [Thu, 29 Aug 2013 07:09:44 +0000 (00:09 -0700)]
Avoid clipping in short->float stereo downmixing.

Previously I'd said this would require a large stack buffer, which
 was true if you simply wanted to re-use the existing
 op_short2float_filter() and floating-point op_stereo_filter().
But the latter is not normally compiled for fixed-point anyway, so
 we can instead write new code that doesn't need the stack buffer
 without harming anything.

5 years agoRemove some OP_UNLIKELY macros.
Timothy B. Terriberry [Thu, 29 Aug 2013 06:58:40 +0000 (23:58 -0700)]
Remove some OP_UNLIKELY macros.

These were unlikely when I originally expected applications to
 normally provide a decode buffer in the right format of sufficient
However, the decode filter API works by asking to decode into a
 0-byte buffer, which will trigger both of these tests on every
Since this is how three of the four decoding APIs are implemented,
 this is not really that unlikely anymore.

5 years agoMark op_set_gain_offset() as not taking NULL.
Timothy B. Terriberry [Thu, 29 Aug 2013 06:56:16 +0000 (23:56 -0700)]
Mark op_set_gain_offset() as not taking NULL.

5 years agoMinor decode control flow updates.
Timothy B. Terriberry [Thu, 29 Aug 2013 06:47:54 +0000 (23:47 -0700)]
Minor decode control flow updates.

This makes op_fetch_and_process_page() always try to fetch another
 page, like it used to (and like its name implies).
There was only one place where we needed the early return for
 unprocessed packets, and getting rid of that actually simplifies
 the logic there (replacing a conditional continue with an
 unconditional one in a slightly different location).

5 years agoAdd an application decoding callback API.
Timothy B. Terriberry [Thu, 29 Aug 2013 06:37:31 +0000 (23:37 -0700)]
Add an application decoding callback API.

This is needed to allow advanced usage, like that of opusdec in
 opus-tools, which can simulate packet loss or save the range coder
 state for decoder verification.
It could also be used in a pinch to use libopusfile for access to
 the raw Ogg packets, though this is somewhat of a hack.

5 years agoDocument that we don't support IRIs.
Timothy B. Terriberry [Mon, 26 Aug 2013 18:37:01 +0000 (11:37 -0700)]
Document that we don't support IRIs.

5 years agoAdd an opus_tags_copy() API.
Timothy B. Terriberry [Sun, 25 Aug 2013 07:54:43 +0000 (00:54 -0700)]
Add an opus_tags_copy() API.

Also refactor the other tag functions to centralize the memory
 allocation logic, plus a few other minor cleanups.

5 years agoExpose tag comparison functions.
Timothy B. Terriberry [Sat, 24 Aug 2013 19:05:38 +0000 (12:05 -0700)]
Expose tag comparison functions.

It seems somewhat silly to have to write your own strcasecmp to
 satisfy the usage pattern found in opusfile_example: scanning the
 whole tags list and handling certain tags specially (as opposed to
 searching for specific tags, as opus_tags_query() does).
Given that we were already using an equivalent function internally
 to implement opus_tags_query, just expose it directly.

5 years agoReplace 0x7FFFFFFF by new OP_INT32_MAX.
Timothy B. Terriberry [Sat, 24 Aug 2013 17:55:07 +0000 (10:55 -0700)]
Replace 0x7FFFFFFF by new OP_INT32_MAX.

OP_INT32_MIN and OP_INT32_MAX were added in commit 97917914.
This fixes at least one bug, since one of the (extremely unlikely)
 overflow checks had an extra F in it.

5 years agoA bunch of documentation clean-up.
Timothy B. Terriberry [Sat, 24 Aug 2013 04:50:47 +0000 (21:50 -0700)]
A bunch of documentation clean-up.

Mostly minor stuff.

5 years agoAdd API to report information from server headers.
Timothy B. Terriberry [Fri, 23 Aug 2013 20:27:11 +0000 (13:27 -0700)]
Add API to report information from server headers.

This allows the application to report details about the server for
 HTTP[S] streams.
For all HTTP[S], this includes the server software, content-type,
 and whether or not it's using HTTPS.
For live streams, it also includes the station name, description,
 genre, homepage, nominal bitrate, and whether or not it's publicly

5 years agoFix backwards HTTP Server header test.
Timothy B. Terriberry [Fri, 23 Aug 2013 20:24:36 +0000 (13:24 -0700)]
Fix backwards HTTP Server header test.

This was treating every unknown header as a Server header.
Good thing this was last!
The only damage was that we might have enabled pipelining even on
 known-bad servers.

5 years agoFix C&P error in proxy user/password macros.
Timothy B. Terriberry [Fri, 23 Aug 2013 20:21:26 +0000 (13:21 -0700)]
Fix C&P error in proxy user/password macros.

I guess no one was using these.
Clearly we need to test this more often, but this is a pain without
 a reliable public proxy, or a local proxy server setup.

5 years agoBuild downloaded dependencies and link against them.
Ralph Giles [Wed, 21 Aug 2013 18:27:58 +0000 (11:27 -0700)]
Build downloaded dependencies and link against them.

5 years agoMark some functions static.
Timothy B. Terriberry [Wed, 21 Aug 2013 04:19:52 +0000 (21:19 -0700)]
Mark some functions static.

These were only non-static because of oversight.

5 years agoMerge branch 'master' into mingw
Ralph Giles [Tue, 20 Aug 2013 23:10:12 +0000 (16:10 -0700)]
Merge branch 'master' into mingw

5 years agoRelease checklist updates.
Ralph Giles [Tue, 20 Aug 2013 21:54:16 +0000 (14:54 -0700)]
Release checklist updates.

Finally managed to cross-compile a shared version of openssl
so I can use the autotools opusfile build.

5 years agoAdd winerrno.h to the distribution.
Ralph Giles [Tue, 20 Aug 2013 20:22:08 +0000 (13:22 -0700)]
Add winerrno.h to the distribution.

5 years agoBump soname version for v0.4. v0.4
Ralph Giles [Tue, 20 Aug 2013 19:42:12 +0000 (12:42 -0700)]
Bump soname version for v0.4.

We've added opus_picture_tag.

5 years agoAdd win32utf8.c to the source file VS2010 source file listings.
Ralph Giles [Tue, 20 Aug 2013 17:45:06 +0000 (10:45 -0700)]
Add win32utf8.c to the source file VS2010 source file listings.

5 years agoFix typo in LibraryPath directives.
Ralph Giles [Tue, 20 Aug 2013 00:18:43 +0000 (17:18 -0700)]
Fix typo in LibraryPath directives.

5 years agoUse the default MSVC LibraryPath.
Ralph Giles [Tue, 20 Aug 2013 00:14:01 +0000 (17:14 -0700)]
Use the default MSVC LibraryPath.

This lets us pick up runtime library path changes when the project
files are updated to newer versions on Visual Studio. This fixes
a link error with VS2012, but I still get one from VS2010.

5 years agoBump overall copyright year.
Ralph Giles [Thu, 8 Aug 2013 18:38:17 +0000 (11:38 -0700)]
Bump overall copyright year.

5 years agoCreate zip archives for distribution.
Ralph Giles [Thu, 8 Aug 2013 18:26:19 +0000 (11:26 -0700)]
Create zip archives for distribution.

Windows still doesn't support tar.gz out of the box. If we're
bothering with project files we might as well make it easy
to get the source releases.

5 years agoFix an uninitialized variable.
Timothy B. Terriberry [Mon, 12 Aug 2013 16:54:41 +0000 (09:54 -0700)]
Fix an uninitialized variable.

Surprisingly, the actual initial value of this variable is
 irrelevant, since we always insert 24 bits of data into and then
 read only those bits out.
However, fixing this still removes undefined behavior and removes
 extraneous register dependencies.

5 years agoMinor UTF-8/UTF-16 cleanups.
Timothy B. Terriberry [Mon, 12 Aug 2013 16:48:32 +0000 (09:48 -0700)]
Minor UTF-8/UTF-16 cleanups.

- Reject 'not a character' values 0xFFFE and 0xFFFF.
- Remove some unnecessary string length checks.

5 years agoAdd an API to parse picture tags.
Timothy B. Terriberry [Sat, 10 Aug 2013 18:19:33 +0000 (11:19 -0700)]
Add an API to parse picture tags.

This makes it easier for applications to support album art.
This is still relatively untested.

5 years agoTurn off incremental linking in all configurations. r=Garf
Ralph Giles [Thu, 8 Aug 2013 18:22:18 +0000 (11:22 -0700)]
Turn off incremental linking in all configurations. r=Garf

Incremental linking fails on my unpatched VS2010 compiler
with "failure during conversion to COFF: file invalid or corrupt".
Other than testing both configurations there's no particular
reason to use the option here.

5 years agoAdd VS2010 project files to the distribution.
Ralph Giles [Thu, 8 Aug 2013 18:07:47 +0000 (11:07 -0700)]
Add VS2010 project files to the distribution.

5 years agoAdd win32utf8.h to the source lists so it's distributed.
Ralph Giles [Thu, 8 Aug 2013 18:06:36 +0000 (11:06 -0700)]
Add win32utf8.h to the source lists so it's distributed.

5 years agoBump the soname versioning for v0.3. v0.3
Ralph Giles [Thu, 8 Aug 2013 00:02:57 +0000 (17:02 -0700)]
Bump the soname versioning for v0.3.

5 years agoAdd WIP makefile for mingw cross builds.
Ralph Giles [Wed, 7 Aug 2013 22:47:32 +0000 (15:47 -0700)]
Add WIP makefile for mingw cross builds.

5 years agoMerge remote-tracking branch 'origin' into mingw
Ralph Giles [Wed, 7 Aug 2013 22:46:22 +0000 (15:46 -0700)]
Merge remote-tracking branch 'origin' into mingw


5 years agoAdd a magic vpath to the unix makefile.
Ralph Giles [Tue, 6 Aug 2013 23:28:31 +0000 (16:28 -0700)]
Add a magic vpath to the unix makefile.

This satisfies the Makefile's dependency on itself when buiding
in a parallel directory, like I use for the mingw builds, without
having to 'touch Makefile' as a work-around.

5 years agoAdd win32utf8 code to the unix makefile for mingw builds.
Ralph Giles [Tue, 6 Aug 2013 23:13:04 +0000 (16:13 -0700)]
Add win32utf8 code to the unix makefile for mingw builds.

5 years agoMinor comment updates.
Timothy B. Terriberry [Tue, 6 Aug 2013 20:56:30 +0000 (13:56 -0700)]
Minor comment updates.

We've been able to differentiate between a read error and EOF since

5 years agoAdd MSVC project files for library and examples.
Gian-Carlo Pascutto [Tue, 6 Aug 2013 19:39:21 +0000 (12:39 -0700)]
Add MSVC project files for library and examples.

This is a big squashed commit of Garf's add_msvc_projects branch.
It currently does not include HTTP[S] support, as no one has sat
 down and worked out the best way to link against OpenSSL.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoRelax MSVCRT requirements.
Timothy B. Terriberry [Sat, 13 Jul 2013 20:41:23 +0000 (13:41 -0700)]
Relax MSVCRT requirements.

Previously we used _fseeki64() and _ftelli64() for 64-bit file
 access on Windows, but this requires MSVCRT80 (which requires MSVC
 2005 and is not shipped on XP by default).
Reimplement these functions using the C89 fgetpos() and fsetpos(),
 relying on the MSVCRT/minw32-specific definition of fpos_t.

5 years agoAdd UTF-8 filename support to Windows.
Timothy B. Terriberry [Tue, 6 Aug 2013 18:56:30 +0000 (11:56 -0700)]
Add UTF-8 filename support to Windows.

As requested here:

5 years agoAdd a gain control API.
Timothy B. Terriberry [Mon, 15 Jul 2013 00:13:55 +0000 (17:13 -0700)]
Add a gain control API.

A new op_set_gain_offset() allows the application to provide its own
 offset to the current decoder gain setting, as well as specify what
 offsets should be applied.
The header gain alone is still the default, but the application may
 also request that the track gain be applied, or that neither be

In addition, an op_get_track_gain() function can parse the track
 gain out of a set of comment tags.
This is mainly provided as a convenience for applications that need
 this information, so they don't have to write their own parser.

5 years agoAPI documentation updates.
Timothy B. Terriberry [Sat, 13 Jul 2013 20:47:19 +0000 (13:47 -0700)]
API documentation updates.

- Provide an Overview section which describes some of the general
   design decisions of the libopusfile API.
- Explicitly state that we always decode at 48 kHz.
- Make it clearer that we always apply the header gain.
- Document the automatic soft-clipping support.
- Document that stream open failure does not close the source.
- Other minor fixes.

Thanks to tangobravo and siriusbtx for asking the questions which
 prompted this update.

5 years agoPlug possible memory leak on stream open failure.
Timothy B. Terriberry [Sat, 13 Jul 2013 20:41:23 +0000 (13:41 -0700)]
Plug possible memory leak on stream open failure.

Not all the failure paths cleaned up after themselves properly.
Thanks to tangobravo for complaining about similar issues in
 libvorbisfile, which prompted me to audit this code.

5 years agoAvoid using a long-long literal for OP_INT64_MAX.
Timothy B. Terriberry [Sat, 13 Jul 2013 20:40:08 +0000 (13:40 -0700)]
Avoid using a long-long literal for OP_INT64_MAX.

The LL suffix isn't C89, so it may not work everywhere.

5 years agoTypo fix.
Timothy B. Terriberry [Sat, 13 Jul 2013 20:38:36 +0000 (13:38 -0700)]
Typo fix.

5 years agoAlways try to update the version when autogen.sh is run
Ron [Tue, 2 Jul 2013 06:05:30 +0000 (15:35 +0930)]
Always try to update the version when autogen.sh is run

This avoids at least one case where ./autogen.sh && ./configure && make
will re-run configure because the makefile rules updated something that
it depends upon. Pulling a new version from git will change the version
so we should update that at the first step rather than iterating after
the last one.

5 years agoSwitch to using config.h for configuration options
Ron [Fri, 28 Jun 2013 20:58:43 +0000 (06:28 +0930)]
Switch to using config.h for configuration options

The main motivation for this is it ensures the files will actually be
rebuilt if the configuration options are changed.

5 years agoMore autoconf housekeeping
Ron [Fri, 28 Jun 2013 20:21:40 +0000 (05:51 +0930)]
More autoconf housekeeping

Don't let AC_SEARCH_LIBS([lrintf]) add -lm to LIBS, otherwise we'll
unconditionally link everything with it.

Correctly handle the third possibility of AC_SEARCH_LIBS, that no
library at all was found.

Link libopusfile with $lrintf_lib, it uses it and will otherwise fail
with linkers that use --no-add-needed / --no-copy-dt-needed-entries.

Don't bother to test for doxygen if using it is --disable'd.

5 years agoUse m4_esyscmd instead of m4_esyscmd_s
Ron [Sat, 18 May 2013 06:52:02 +0000 (16:22 +0930)]
Use m4_esyscmd instead of m4_esyscmd_s

We shouldn't ever have any trailing newlines that need trimming here,
and the _s version wasn't added to m4sugar.m4 until autoconf 2.63b,
so this will let it work with 2.13 again.

5 years agoAdd internal.c to unix Makefile's libopusurl.
Timothy B. Terriberry [Wed, 15 May 2013 04:26:01 +0000 (21:26 -0700)]
Add internal.c to unix Makefile's libopusurl.

This shouldn't really be necessary when static linking, but would
 be if someone wanted chang the Makefile to build shared libraries.

5 years agoTypo fix
Ron [Mon, 13 May 2013 11:51:05 +0000 (21:21 +0930)]
Typo fix

5 years agoDrop the x's from shell tests
Ron [Mon, 13 May 2013 11:09:00 +0000 (20:39 +0930)]
Drop the x's from shell tests

Partly just to give us an extra commit to test the versioning,
but they really aren't needed in any of those cases, and now
we're consistent about not using them everywhere.

5 years agoFully automate version updating
Ron [Mon, 13 May 2013 11:02:13 +0000 (20:32 +0930)]
Fully automate version updating

This one meets or exceeds the following requirements:

 - Version is checked/updated for every build action when in the git repo.
   Does not require the user to re- ./configure to get the correct version.

 - Version is not updated automatically when using exported tarball source.
   Avoids accidentally getting a wrong version from some other git repo in
   a parent directory of the source, and allows setting the correct version
   for distro package exports.

 - Automatic updating can be manually suppressed.
   For developers doing lots of change/rebuild cycles they don't plan to
   release, when they don't want a full rebuild triggered for every commit,
   and again for every change made immediately after a commit.
   The version will still always be updated if they do a `make dist`.

 - Does not require any manual updating of versions in the mainline git
   repo for each release aside from normal tagging.  The version is
   recorded in one file only, that is automatically generated and will
   never need to be committed.

 - Does not require gnu-make features for the autoconf builds.

It does not currently:

 - Keep a checksum of every source file in tarball releases to mangle the
   version if people modify the tarball source.  Responsible people can
   manually update the version easily though in such cases.

5 years agoMore gitignorance
Ron [Mon, 13 May 2013 10:58:09 +0000 (20:28 +0930)]
More gitignorance

5 years agoDon't repeatedly install the doc dir for every file
Ron [Mon, 13 May 2013 08:11:51 +0000 (17:41 +0930)]
Don't repeatedly install the doc dir for every file

5 years agoRevert "Allow the examples to build with --disable-http"
Ron [Mon, 13 May 2013 08:05:41 +0000 (17:35 +0930)]
Revert "Allow the examples to build with --disable-http"

This reverts commit 4e06a90ef61ad34d9812fb4578a4c640f868ad00.
We don't need this if we always build libopusurl.

5 years agoAlways build libopusurl
Ron [Mon, 13 May 2013 08:02:05 +0000 (17:32 +0930)]
Always build libopusurl

If --disable-http is used it will just only have file URL support.

5 years agoAllow the examples to build with --disable-http
Ron [Mon, 13 May 2013 03:43:26 +0000 (13:13 +0930)]
Allow the examples to build with --disable-http

5 years agoAutoconf and pkg-config support for libopusurl
Ron [Mon, 13 May 2013 03:42:23 +0000 (13:12 +0930)]
Autoconf and pkg-config support for libopusurl

5 years agoMove last few URL functions into http.c
Timothy B. Terriberry [Mon, 13 May 2013 01:53:27 +0000 (18:53 -0700)]
Move last few URL functions into http.c

This makes it easier to split http.c and friends into their own
This allows distributions to ship a libopusfile with generic Opus
 parsing support, and a libopusurl with http/https support.
Keeping the latter in a separate library means that GPL
 applications don't have to link against the GPL-incompatible
 openssl, and distributions don't have to disable http support to
 allow GPL applications to use libopusfile.

5 years agoFix 255 packet assertion.
Timothy B. Terriberry [Wed, 8 May 2013 03:20:44 +0000 (20:20 -0700)]
Fix 255 packet assertion.

If we actually have 255 packets on a page, this assertion always
 triggers, because ogg_stream_packetout doesn't fail until we ask
 for the _next_ packet.

5 years agoFix seeking near the start of saved live streams.
Timothy B. Terriberry [Tue, 7 May 2013 03:07:48 +0000 (20:07 -0700)]
Fix seeking near the start of saved live streams.

If a stream starts with a non-zero granpos, we would subtract 80 ms
 from the target time, and then report failure when the best page
 we could find (the first page in the link) had a granpos larger
 than that.
This worked for normal streams because the subtraction would fail
 (granpos can't wrap past -1) and we checked for that.

5 years agoAdd <sys/types.h> for off_t.
Timothy B. Terriberry [Wed, 1 May 2013 13:25:26 +0000 (06:25 -0700)]
Add <sys/types.h> for off_t.

This shouldn't be necessary, but apparently on OS X 10.4 fseeko()
 takes fpos_t instead of off_t, and thus doesn't guarantee that
 off_t is defined.

5 years agoAdd docs to the website when releasing.
Timothy B. Terriberry [Tue, 30 Apr 2013 16:04:19 +0000 (09:04 -0700)]
Add docs to the website when releasing.

5 years agoAdd casts to remove clang warnings.
Matthew Chung [Fri, 8 Mar 2013 18:49:41 +0000 (10:49 -0800)]
Add casts to remove clang warnings.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoFix pkg-config file to avoid overlinking
Ulrich Klauer [Mon, 29 Apr 2013 22:17:15 +0000 (00:17 +0200)]
Fix pkg-config file to avoid overlinking

Libraries that are used internally by opusfile but are not part of
 its API should be listed in pkg-config "private" clauses.
Otherwise executables that are linked dynamically against opusfile
 will have unneeded direct dependencies (overlinking).

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoUpdate opusfile.pc description line.
Ulrich Klauer [Mon, 29 Apr 2013 22:11:03 +0000 (00:11 +0200)]
Update opusfile.pc description line.

The library does not actually do any playback, as it does no sound

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoAdd some files to .gitignore
Ulrich Klauer [Sun, 10 Mar 2013 03:44:50 +0000 (04:44 +0100)]
Add some files to .gitignore

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoHandle AC_SEARCH_LIBS special result value.
Ulrich Klauer [Sun, 10 Mar 2013 03:02:49 +0000 (04:02 +0100)]
Handle AC_SEARCH_LIBS special result value.

AC_SEARCH_LIBS will give a result of "none required" if the relevant
 function is available without any special libraries.
This is the case for lrintf on MinGW.
Make sure this special value isn't put verbatim into the pkg-config
 files, as it would cause the linker to search for files named
 "none" and "required", and fail.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
5 years agoFix Base64 encoding for HTTP's basic auth.
Timothy B. Terriberry [Sun, 28 Apr 2013 06:33:11 +0000 (23:33 -0700)]
Fix Base64 encoding for HTTP's basic auth.

I thought I had tested this before, but it was sufficiently broken
 that clearly I had not.

5 years agoSmall public header clean-up.
Timothy B. Terriberry [Sat, 6 Apr 2013 04:09:21 +0000 (21:09 -0700)]
Small public header clean-up.

stdarg.h should've been inside the include guard.

5 years agoSmall cleanups of the soft clipping code.
Timothy B. Terriberry [Sat, 6 Apr 2013 04:06:28 +0000 (21:06 -0700)]
Small cleanups of the soft clipping code.

- Made OP_SOFT_CLIP defined only when using floating point (libopus
   handles clipping when using the fixed-point API).
- Struct rearrangement for theoretically better packing on some
- Reset the state tracking channel count when re-initializing a
   decoder (and not the dither mute, because that gets reset for

5 years agoUse clipping prevention on 16-bit decode paths.
Timothy B. Terriberry [Mon, 25 Mar 2013 19:16:47 +0000 (12:16 -0700)]
Use clipping prevention on 16-bit decode paths.

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.

5 years agoReset dither state when API path changes.
Timothy B. Terriberry [Mon, 25 Mar 2013 19:06:55 +0000 (12:06 -0700)]
Reset dither state when API path changes.

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.

5 years agoMinor comment fix.
Timothy B. Terriberry [Mon, 25 Mar 2013 19:00:05 +0000 (12:00 -0700)]
Minor comment fix.

5 years agoFix a buffer overflow in op_read_stereo().
Timothy B. Terriberry [Mon, 25 Mar 2013 18:57:38 +0000 (11:57 -0700)]
Fix a buffer overflow in op_read_stereo().

For multichannel files, this potentially caused writes beyond the
 end of the output buffer provided by the user.

5 years agoAdd an exe extension variable and use it in the mingw build.
Ralph Giles [Fri, 1 Mar 2013 22:17:41 +0000 (14:17 -0800)]
Add an exe extension variable and use it in the mingw build.

5 years agoAdd conditional source and libraries for mingw build.
Ralph Giles [Fri, 1 Mar 2013 21:50:21 +0000 (13:50 -0800)]
Add conditional source and libraries for mingw build.

5 years agoDon't remove unused test directories.
Ralph Giles [Fri, 1 Mar 2013 21:37:36 +0000 (13:37 -0800)]
Don't remove unused test directories.

Reduces cruft on 'make clean'. I've rearranged some of the
non-functional self-test targets, but not really fixed them.

5 years agoBetter suppression of unused parameter warnings.
Timothy B. Terriberry [Fri, 1 Mar 2013 19:07:44 +0000 (11:07 -0800)]
Better suppression of unused parameter warnings.

The old ones gave a different warning on Apple's clang 4.2.