opusfile.git
15 months agoFix typo in release checklist. v0.8
Ralph Giles [Wed, 6 Jul 2016 17:29:12 +0000 (10:29 -0700)]
Fix typo in release checklist.

15 months agoBump soname for v0.8.
Ralph Giles [Wed, 6 Jul 2016 17:21:04 +0000 (10:21 -0700)]
Bump soname for v0.8.

No public API changes.

15 months agoAdd support for OpenSSL 1.1.x.
Timothy B. Terriberry [Wed, 6 Jul 2016 16:36:16 +0000 (09:36 -0700)]
Add support for OpenSSL 1.1.x.

The API and ABI is not backwards-compatible.
This is based on the prerelease version 1.1.0-pre5.
It should continue to work with older versions of OpenSSL.

Thanks to Ron Lee and the Debian project for reporting the build
 errors and testing the patch.

15 months agoAdd comment explaining fix in 72f4f8a6c2c3.
Timothy B. Terriberry [Mon, 4 Jul 2016 02:12:49 +0000 (19:12 -0700)]
Add comment explaining fix in 72f4f8a6c2c3.

15 months agoFix free with uninitialized data in opus_tags_parse().
Timothy B. Terriberry [Mon, 4 Jul 2016 02:03:18 +0000 (19:03 -0700)]
Fix free with uninitialized data in opus_tags_parse().

If the parsing fails before all comments are filled in, we will
 attempt to free any binary metadata at the position one past the
 last comment, which will be uninitialized.
Introduced in commit 0221ca95fc58.

15 months agoAdd missing NULL check to opus_tags_parse().
Timothy B. Terriberry [Mon, 4 Jul 2016 01:50:09 +0000 (18:50 -0700)]
Add missing NULL check to opus_tags_parse().

According to the API, you can pass in a NULL OpusTags object to
 simply check if the comment packet is valid, without storing the
 parsed results.
However, the additions to store binary metadata in commit
 0221ca95fc58 did not check for this.

Fixes Coverity CID 149873.

15 months agoFix NULL check in opus_tags_add_comment().
Timothy B. Terriberry [Mon, 4 Jul 2016 01:43:26 +0000 (18:43 -0700)]
Fix NULL check in opus_tags_add_comment().

In 0221ca95fc58 the allocation result went from being stored
 directly in "_tags->user_comments[ncomments]" to being stored in
 the temporary "comment".
However, the NULL check for allocation failure was not updated to
 match.
This meant this function would almost always fail, unless you had
 added binary metadata first.

Fixes Coverity CID 149874.

15 months agoFix skipping logic for multiplexed non-Opus pages.
Timothy B. Terriberry [Mon, 4 Jul 2016 01:21:58 +0000 (18:21 -0700)]
Fix skipping logic for multiplexed non-Opus pages.

This bug appears to have been present since the original code
 import.
This was a "clever" rearrangement of the control flow from the
 _fetch_and_process_packet() in vorbisfile to use a do ... while(0)
 instead of a "while(1)".
However, this also makes "continue" equivalent to "break": it does
 not actually go back to the top of the loop, because the loop
 condition is false.

This bug was harmless, because ogg_stream_pagein() then refuses to
 ingest a page with the wrong serialno, but we can simplify things
 by fixing it.
The "not strictly necessary" loop is now completely unnecessary.
The extra checks that existed in vorbisfile have all been moved to
 later in the main loop, so we can just continue that one directly,
 with no wasted work, instead of embedding a smaller loop inside.

Fixes Coverity CID 149875.

15 months agoNote small inaccuracy in bitrate tracking.
Timothy B. Terriberry [Mon, 4 Jul 2016 01:10:16 +0000 (18:10 -0700)]
Note small inaccuracy in bitrate tracking.

In the non-seekable case, we'll undercount some bytes at the start
 of a new link.
Still thinking about the best way to address this, but leaving a
 comment so I don't forget.

15 months agoShould a BOS page with no packets be an error?
Timothy B. Terriberry [Mon, 4 Jul 2016 00:46:26 +0000 (17:46 -0700)]
Should a BOS page with no packets be an error?

Going with "no" for now, but leave a reminder in the source code
 that this is a debatable question.

15 months agoMinor comment typo fix.
Timothy B. Terriberry [Sun, 26 Jun 2016 22:04:07 +0000 (15:04 -0700)]
Minor comment typo fix.

15 months agoMinor comment typo fixes.
Timothy B. Terriberry [Sun, 19 Jun 2016 15:37:09 +0000 (08:37 -0700)]
Minor comment typo fixes.

16 months agoRemove readp argument to op_fetch_and_process_page().
Timothy B. Terriberry [Thu, 16 Jun 2016 03:50:26 +0000 (20:50 -0700)]
Remove readp argument to op_fetch_and_process_page().

This was set to 1 by all callers, so we can simplify logic by just
 removing it.
This appears to have already been true in the libvorbisfile code
 from which this was adapted.

16 months agoMinor documentation updates.
Timothy B. Terriberry [Thu, 16 Jun 2016 03:34:35 +0000 (20:34 -0700)]
Minor documentation updates.

Just improving the clarity in some places.

16 months agoIgnore documentation output directories.
Ralph Giles [Wed, 1 Jun 2016 00:46:48 +0000 (17:46 -0700)]
Ignore documentation output directories.

16 months agoMention attaching tarballs to github.
Ralph Giles [Wed, 1 Jun 2016 00:44:34 +0000 (17:44 -0700)]
Mention attaching tarballs to github.

Github offers the `git archive` output of each tag as a
"release tarball", bypassing the `make dist` process and
confusing people who find those download artifacts. Better
to at least offer the official releases alongside those.

21 months agoAdd release checksums for opusfile 0.7.
Ralph Giles [Wed, 6 Jan 2016 01:47:55 +0000 (17:47 -0800)]
Add release checksums for opusfile 0.7.

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

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

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

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

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

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

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

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

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

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

21 months 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
http://downloads.xiph.org/releases/opus/SHA256SUMS.txt

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

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

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

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

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

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

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

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

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

21 months 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
 error).
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.

21 months 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
 <https://tools.ietf.org/html/draft-ietf-codec-oggopus-05>.
It also allows the data to be set and preserves the data when
 doing deep copies.

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

22 months 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
 ogg_stream_state.
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.

22 months 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
 it.

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

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

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

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

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

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

Add some newer generated files.

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

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

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

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

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

3 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().

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

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

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

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

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

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

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

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

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

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

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

3 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)
 headers.

3 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)]
%s/op_read_native_filter/op_filter_read_native/g

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

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
 size.
However, the decode filter API works by asking to decode into a
 0-byte buffer, which will trigger both of these tests on every
 packet.
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
 listed.

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.

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

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

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

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

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