2 years agoMerge the generic bits of the release notes into the readme. v0.7
Ralph Giles [Tue, 5 Jan 2016 00:17:24 +0000 (16:17 -0800)]
Merge the generic bits of the release notes into the readme.

Also switch to markdown-style headings to the benefit of github.

2 years agomingw: Bump docker base to Fedora 23.
Ralph Giles [Tue, 5 Jan 2016 00:07:17 +0000 (16:07 -0800)]
mingw: Bump docker base to Fedora 23.

This build works as well. I'm not sure what's wrong with my
local environment.

2 years agomingw: Building on Fedora 22 works as well.
Ralph Giles [Fri, 1 Jan 2016 02:07:21 +0000 (18:07 -0800)]
mingw: Building on Fedora 22 works as well.

2 years agomingw: Add a package target.
Ralph Giles [Fri, 1 Jan 2016 01:45:46 +0000 (17:45 -0800)]
mingw: Add a package target.

This does the basics to build the win32 binary release zipfile
for testing. Doesn't sign or version it properly.

2 years agomingw: Build just deps by default, not that static opusfile.
Ralph Giles [Fri, 1 Jan 2016 01:44:22 +0000 (17:44 -0800)]
mingw: Build just deps by default, not that static opusfile.

2 years agomingw: Bump docker build to Fedora 21.
Ralph Giles [Fri, 1 Jan 2016 01:26:39 +0000 (17:26 -0800)]
mingw: Bump docker build to Fedora 21.

The version of mingw in Fedora 21 works as well.
This is the first version to depend on libwinpthread.

Also add an autogen.sh invocation which caused the previous
build to fail after the 'make check' barrier was removed.

2 years agomingw: remove 'make check' steps.
Ralph Giles [Fri, 1 Jan 2016 00:10:30 +0000 (16:10 -0800)]
mingw: remove 'make check' steps.

This requires wine to run the windows executables, which is a
pretty heavy dependency. Better to do without for now.

2 years agomingw: Add a Dockerfile describing cross build.
Ralph Giles [Fri, 1 Jan 2016 00:07:56 +0000 (16:07 -0800)]
mingw: Add a Dockerfile describing cross build.

For some reason, when I cross-compile opusfile on Fedora 23,
I get example binaries with exit immediately without error.

Building them on Fedora 20 (in a docker container) produced
working binaries. Until we figure out what the bug is, include
this for convenience.

The build doesn't actually work because of the 'make check'
steps in the Makefile, which require wine.

2 years agoFix typo.
Ralph Giles [Fri, 1 Jan 2016 00:07:36 +0000 (16:07 -0800)]
Fix typo.

2 years agoAdd release checksums for win32 binary builds.
Ralph Giles [Thu, 31 Dec 2015 21:14:31 +0000 (13:14 -0800)]
Add release checksums for win32 binary builds.

Verified against archive.mozilla.org and the original builds
on my machine.

2 years agoAdd release checksums.
Ralph Giles [Thu, 31 Dec 2015 21:08:46 +0000 (13:08 -0800)]
Add release checksums.

Keep a copy of the release tarball SHA-256 checksums in the
repository for reference. Having a copy with the code in
distributed version control adds a verification path.

This should match the opusfile checksums in
https://archive.mozilla.org/pub/opus/SHA256SUMS.txt and

2 years agomingw: Add fetch and realclean targets for downloading dependencies.
Ralph Giles [Thu, 31 Dec 2015 10:04:18 +0000 (02:04 -0800)]
mingw: Add fetch and realclean targets for downloading dependencies.

For those who would like network access to be a separate step.

2 years agomingw: Fix clean target.
Ralph Giles [Thu, 31 Dec 2015 09:58:51 +0000 (01:58 -0800)]
mingw: Fix clean target.

2 years agomingw: Use $(CURDIR) instead of ${PWD}.
Ralph Giles [Thu, 31 Dec 2015 09:57:11 +0000 (01:57 -0800)]
mingw: Use $(CURDIR) instead of ${PWD}.

This doesn't work in a normal shell, but enables 'make -C mingw'
which is convenient.

Thanks to ron for the suggestion.

2 years agoFix typo.
Ralph Giles [Thu, 31 Dec 2015 09:34:54 +0000 (01:34 -0800)]
Fix typo.

2 years agoUpdate release instructions.
Ralph Giles [Thu, 31 Dec 2015 09:16:10 +0000 (01:16 -0800)]
Update release instructions.

These may not be final since the mingw build wasn't successful
but includes updates from following the process today.

2 years agoBump soname for v0.7.
Ralph Giles [Thu, 31 Dec 2015 00:16:47 +0000 (16:16 -0800)]
Bump soname for v0.7.

We have added new public interfaces, but are still backward
compatible with clients built against older releases.

2 years agoUpdate release instructions for mingw makefile.
Ralph Giles [Wed, 30 Dec 2015 23:58:56 +0000 (15:58 -0800)]
Update release instructions for mingw makefile.

Have successfully automated the build, but packaging
is still manual.

2 years agoUpdate release instructions for new archive locations.
Ralph Giles [Wed, 30 Dec 2015 23:58:12 +0000 (15:58 -0800)]
Update release instructions for new archive locations.

ftp.mozilla.org is now s3-backed archive.mozilla.org.
Old urls should redirect.

2 years agoAdd a makefile for cross-compiling on mingw.
Ralph Giles [Wed, 30 Dec 2015 22:25:55 +0000 (14:25 -0800)]
Add a makefile for cross-compiling on mingw.

This builds win32 versions of the library and examples
on linux using the mingw-gcc cross toolchain and wine.

It also automates downloading and building the
required dependencies. Update the _URL and _SHA
variables to build against newer upstream releases.

Thanks to Ron and Mark Harris for help with the makefile.

2 years agoFix potential memory leaks with OpusServerInfo.
Timothy B. Terriberry [Wed, 30 Dec 2015 13:23:32 +0000 (05:23 -0800)]
Fix potential memory leaks with OpusServerInfo.

In op_[v]open_url() and op_[v]test_url(), if we successfully
 connected to the URL but fail to parse it as an Opus stream, then
 we would return to the calling application without clearing any
 OpusServerInfo we might have filled in when connecting.
This contradicts the general contract for user output buffers in
 our APIs, which is that they do not need to be initialized prior
 to a call and that their contents are untouched if a function
 fails (so that an application need do no additional clean-up on
It would have been possible for an application to avoid these leaks
 by always calling opus_server_info_init() before a call to
 op_[v]open_url() or op_[v]test_url() and always calling
 opus_server_info_clear() afterwards (even on failure), but our
 examples don't do this and no other API of ours requires it.

Fix the potential leaks by wrapping the implementation of
 op_url_stream_vcreate() so we can a) tell if the information was
 requested and b) store it in a separate, local buffer and delay
 copying it to the application until we know we've succeeded.

2 years agoAdd API to access and preserve binary metadata.
Timothy B. Terriberry [Wed, 30 Dec 2015 02:10:07 +0000 (18:10 -0800)]
Add API to access and preserve binary metadata.

This adds support for accessing any binary metadata at the end of
 the comment header, as first specified in
It also allows the data to be set and preserves the data when
 doing deep copies.

2 years agoAdd support for R128_ALBUM_GAIN tag.
Timothy B. Terriberry [Tue, 29 Dec 2015 22:36:25 +0000 (14:36 -0800)]
Add support for R128_ALBUM_GAIN tag.

This includes convenience routines specifying the album gain should
 be applied and for parsing the tag.

2 years agoBuffer continued packet data to reduce seeking.
Timothy B. Terriberry [Tue, 15 Dec 2015 21:56:34 +0000 (13:56 -0800)]
Buffer continued packet data to reduce seeking.

In commit 41c29626afbd I claimed that it was not worth the
 machinery to buffer an extra page to avoid a seek when we have
 continued packet data.
That was a little unsatisfying, considering how much effort we make
 to avoid unnecessary seeking elsewhere, but in the general case,
 we might have to buffer an arbitrary number of pages, since a
 packet can span several.
However, we already have the mechanism to do this buffering: the
There are a number of potentially nasty corner-cases, but libogg's
 page sequence number tracking prevents us from accidentally gluing
 extraneous packet data onto some other unsuspecting packet, so I
 believe the chance of introducing new bugs here is manageable.

This reduces the number of seeks in Simon Jackson's continued-page
 test case by over 23%.

This also means we can handle pages without useful timestamps
 (including those multiplexed from another stream) between the last
 timestamped page at or before our target and the first timestamped
 page after our target without any additional seeks.
Previously we would scan all of this data, see that the
 'page_offset' of the most recent page we read was way beyond
 'best' (the end of the last timestamped page before our target),
 and then seek back and scan it all again.
This should greatly reduce the number of seeks we need in
 multiplexed streams, even if there are no continued packets.

2 years agoFix timestamp check for seek-free seek.
Timothy B. Terriberry [Tue, 15 Dec 2015 02:38:26 +0000 (18:38 -0800)]
Fix timestamp check for seek-free seek.

We avoid seeking when the seek target lies within the packets
 buffered from the current page.
However, the calculation of the page start time was _adding_ the
 first packet's duration to its end time, instead of subtracting

2 years agoFix set-but-not-used variable warning.
Timothy B. Terriberry [Mon, 7 Dec 2015 01:02:39 +0000 (17:02 -0800)]
Fix set-but-not-used variable warning.

When assertions are disabled, nothing else uses header_len.

2 years agoHandle continued packets in bisection search.
Timothy B. Terriberry [Sun, 6 Dec 2015 23:29:21 +0000 (15:29 -0800)]
Handle continued packets in bisection search.

If the packet where we wanted to start decoding was continued from
 a previous page, and _other_ packets ended on that previous page,
 we wouldn't feed the previous page to the ogg_stream_state.
That meant we wouldn't get the packet we wanted, and would fail with
 OP_EBADLINK (because the starting PCM offset of the first packet we
 did decode would already be after the one we wanted).

Instead, check for continued packet data and feed in an extra page
 to prime the stream state.

Thanks to Simon Jackson for the report and the excellent test case.

2 years agoBetter overflow check for serialno allocation.
Timothy B. Terriberry [Sun, 6 Dec 2015 23:22:10 +0000 (15:22 -0800)]
Better overflow check for serialno allocation.

2 years agoRemove spurious ACLOCAL_FLAGS variable from autogen.sh.
Ralph Giles [Sat, 26 Sep 2015 01:08:26 +0000 (18:08 -0700)]
Remove spurious ACLOCAL_FLAGS variable from autogen.sh.

autoreconf looks for ACLOCAL_*FLAGS in Makefile.am and will
pass that on when it invokes aclocal. Furthermore, setting
a local like this doesn't make it available to subcommands,
so the line has no effect.

3 years agoRegularize wording for --disable-examples.
Ralph Giles [Wed, 27 May 2015 17:34:46 +0000 (10:34 -0700)]
Regularize wording for --disable-examples.

3 years agoAdd configure option to stop examples being built, --disable-examples.
Simon Jackson [Wed, 27 May 2015 15:19:02 +0000 (16:19 +0100)]
Add configure option to stop examples being built, --disable-examples.

- Added new configure option --disable-examples which can be used to
  stop the example programs being built. This can be useful in some
  situations, such as when cross compiling static libraries.

- Examples are still built by default, --disable-examples must be passed
  explicitly to stop them being built.

Signed-off-by: Ralph Giles <giles@thaumas.net>
3 years agoBroaden the test for AI_NUMERICSERV.
Timothy B. Terriberry [Fri, 27 Feb 2015 18:59:51 +0000 (10:59 -0800)]
Broaden the test for AI_NUMERICSERV.

OS X 10.5.8 does not define AI_NUMIERCSERV either, so instead of
 trying to enumerate the platforms that don't, just test for the
 value itself.
Patch by Dave Evans at MacPorts.

Fixes #2172

4 years agoUpdate gitignore.
Ralph Giles [Fri, 4 Jul 2014 18:24:37 +0000 (11:24 -0700)]
Update gitignore.

Add some newer generated files.

4 years agoBump soname for v0.6. v0.6
Ralph Giles [Wed, 11 Jun 2014 17:06:31 +0000 (10:06 -0700)]
Bump soname for v0.6.

No ABI changes. Error behaviour has changed, but that falls
under 'compatible'.

4 years agoLook for ftime() in libcompat.
Thomas Klausner [Sat, 12 Apr 2014 16:10:59 +0000 (18:10 +0200)]
Look for ftime() in libcompat.

Needed at least on NetBSD.

Signed-off-by: Thomas Klausner <wiz@NetBSD.org>
4 years agoDocument that op_bitrate() is for all streams.
Timothy B. Terriberry [Sun, 30 Mar 2014 18:48:57 +0000 (11:48 -0700)]
Document that op_bitrate() is for all streams.

If an Opus stream is currently multiplexed with other streams, we
 would have to scan the whole file to identify the pages that
 belong to just the stream we play back.
That's probably not what the user wants, and if it is, they have a
 way to do that (using op_bitrate_instant()).
Document this so as not to surprise developers.

Thanks to Lithopsian for the report.

4 years agoMinor cleanups.
Timothy B. Terriberry [Wed, 26 Mar 2014 23:44:28 +0000 (16:44 -0700)]
Minor cleanups.

Makes style slightly more consistent.
Also fixes the return code of op_fetch_headers() to make it
 consistently return OP_EBADHEADER if the stream runs out of pages
 after a valid OpusHead packet is found.
Previously, if a valid OpusHead was found, it would return
 OP_ENOTFORMAT if it ran out of pages before finding one without
 its BOS flag set, and OP_EBADHEADER if it ran out of pages after
 finding one without its BOS flag set.

4 years agoFix METADATA_BLOCK_PICTURE check for all-0 params.
Timothy B. Terriberry [Tue, 25 Mar 2014 23:33:42 +0000 (16:33 -0700)]
Fix METADATA_BLOCK_PICTURE check for all-0 params.

width=height=depth=colors=0 should be allowed, but wasn't thanks to
 some missing parentheses.
Thanks to Lithopsian for the report.

4 years agoFix header reading for non-Opus streams.
Timothy B. Terriberry [Sun, 16 Mar 2014 17:24:33 +0000 (10:24 -0700)]
Fix header reading for non-Opus streams.

We were skipping the BOS page for non-Opus streams, but never read
 in the next page, causing setup to fail with a duplicate serial
 number validation error.
Thanks to Lithopsian for the report.

4 years agoMinor simplification to op_fetch_headers_impl().
Timothy B. Terriberry [Wed, 12 Mar 2014 03:25:10 +0000 (20:25 -0700)]
Minor simplification to op_fetch_headers_impl().

4 years agoFix opus_tags_add() and opus_tags_add_comment().
Timothy B. Terriberry [Mon, 3 Mar 2014 17:06:58 +0000 (09:06 -0800)]
Fix opus_tags_add() and opus_tags_add_comment().

It helps to increment the comment count.
Thanks to lithopsian for the report.

4 years agoFix an llvm signed overflow warning.
Timothy B. Terriberry [Sat, 11 Jan 2014 00:43:20 +0000 (16:43 -0800)]
Fix an llvm signed overflow warning.

Thanks to gmaxwell for the report.

4 years agoFix up release checklist based on the v0.5 experience.
Ralph Giles [Fri, 10 Jan 2014 22:13:04 +0000 (14:13 -0800)]
Fix up release checklist based on the v0.5 experience.

4 years agoFix typo in release checklist. v0.5
Ralph Giles [Thu, 9 Jan 2014 22:06:19 +0000 (14:06 -0800)]
Fix typo in release checklist.

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 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.

4 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.

4 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.

4 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.

4 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.

4 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

4 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.

4 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.

4 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).

4 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.

4 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.

4 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.

4 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.

4 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).

4 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.

4 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.

4 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.

4 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.

4 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.

4 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.

4 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

4 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.

4 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.

4 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.

4 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 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.