4 months agohttp: use new API with LibreSSL >=2.7.0 master
Stefan Strogin [Wed, 3 Oct 2018 03:33:45 +0000 (06:33 +0300)]
http: use new API with LibreSSL >=2.7.0

LibreSSL is not yet fully API compatible with OpenSSL 1.0.2 and later,
However many APIs from OpenSSL 1.0.2 and 1.1 are already implemented in
LibreSSL 2.7.0 and later. Old approach works in newer LibreSSL version
as well, but it's not nice to force deprecated functions on LibreSSL

Add additional conditionals for new LibreSSL versions to use the
available new APIs.

Signed-off-by: Ralph Giles <giles@thaumas.net>
5 months agohttp: fix compilation with LibreSSL
Stefan Strogin [Thu, 27 Sep 2018 01:53:29 +0000 (04:53 +0300)]
http: fix compilation with LibreSSL

LibreSSL defines OPENSSL_VERSION_NUMBER to 0x20000000L, but its API is
compatible with OpenSSL 1.0.1.
Therefore redefine OPENSSL_VERSION_NUMBER to 0x1000115fL (1.0.1u) if
LibreSSL is used.

Fixes: #2327

6 months agoDocument Doxygen failure in release notes.
Timothy B. Terriberry [Wed, 19 Sep 2018 01:26:58 +0000 (18:26 -0700)]
Document Doxygen failure in release notes.

I'm sure we'll run into this again.

6 months agomingw: Update to libopus 1.3-rc2
Timothy B. Terriberry [Wed, 19 Sep 2018 01:23:17 +0000 (18:23 -0700)]
mingw: Update to libopus 1.3-rc2

New upstream release (soon to be final).

6 months agoRelease process document improvements.
Timothy B. Terriberry [Wed, 19 Sep 2018 01:21:27 +0000 (18:21 -0700)]
Release process document improvements.

Fleshed out/clarified some steps from the experience of making the
 0.11 release.

6 months agoUpdate soname revision for the 0.11 release. v0.11
Jean-Marc Valin [Tue, 18 Sep 2018 19:18:20 +0000 (15:18 -0400)]
Update soname revision for the 0.11 release.

6 months agomingw: Update docker base to Fedora 28.
Ralph Giles [Mon, 20 Aug 2018 16:56:36 +0000 (09:56 -0700)]
mingw: Update docker base to Fedora 28.

This is the current stable release. The fedora:25 image is no longer
receiving updates.

6 months agomingw: Update to openssl 1.0.2p.
Ralph Giles [Mon, 20 Aug 2018 16:55:49 +0000 (09:55 -0700)]
mingw: Update to openssl 1.0.2p.

New upstream release.

6 months agomingw: Update to libogg 1.3.3.
Ralph Giles [Mon, 20 Aug 2018 16:54:28 +0000 (09:54 -0700)]
mingw: Update to libogg 1.3.3.

New upstream release some time ago.

9 months agohttp: silence gcc 8 -Wimplicit-fallthrough warning
Mark Harris [Mon, 11 Jun 2018 06:49:01 +0000 (23:49 -0700)]
http: silence gcc 8 -Wimplicit-fallthrough warning

The comment must be just before the label to suppress the warning.

9 months agoop_tags_ensure_capacity: delete useless statement
Mark Harris [Mon, 11 Jun 2018 06:48:35 +0000 (23:48 -0700)]
op_tags_ensure_capacity: delete useless statement

Silence warning: Value stored to 'comment_lengths' is never read

9 months agoopus_tags_copy: return OP_EFAULT on failure
Mark Harris [Mon, 11 Jun 2018 06:47:59 +0000 (23:47 -0700)]
opus_tags_copy: return OP_EFAULT on failure

14 months agoappveyor: use opus artifacts instead of compiling it
Ricardo Constantino [Wed, 3 Jan 2018 22:53:49 +0000 (22:53 +0000)]
appveyor: use opus artifacts instead of compiling it

14 months agoappveyor: pack openssl artifacts with opusfile's
Ricardo Constantino [Wed, 3 Jan 2018 22:42:19 +0000 (22:42 +0000)]
appveyor: pack openssl artifacts with opusfile's

Will be useful for opus-tools

14 months agoappveyor: enable nasm for openssl
Ricardo Constantino [Wed, 3 Jan 2018 14:06:36 +0000 (14:06 +0000)]
appveyor: enable nasm for openssl

14 months agoappveyor: rename to dotfile
Ricardo Constantino [Mon, 1 Jan 2018 22:11:25 +0000 (22:11 +0000)]
appveyor: rename to dotfile

14 months agoRelax JPEG check to allow EXIF metadata
Mark Harris [Fri, 29 Dec 2017 18:36:27 +0000 (10:36 -0800)]
Relax JPEG check to allow EXIF metadata

15 months agoop_fetch_and_process_page: Fix int64 overflow
James Zern [Thu, 7 Dec 2017 23:25:28 +0000 (15:25 -0800)]
op_fetch_and_process_page: Fix int64 overflow

Check for overflow with a negative diff.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
15 months agoop_pcm_seek: Fix int64 overflow
James Zern [Thu, 7 Dec 2017 23:24:48 +0000 (15:24 -0800)]
op_pcm_seek: Fix int64 overflow

Calculate discard_count directly with op_granpos_diff. this works
because _pcm_offset == (target_gp - pcm_start) and diff == (gp -

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
16 months agoUpdate soname revision for the 0.10 release. v0.10
Ralph Giles [Tue, 14 Nov 2017 18:29:39 +0000 (10:29 -0800)]
Update soname revision for the 0.10 release.

16 months agoForce crlf line endings for VS2015 project files.
Pavel P [Sat, 12 Aug 2017 20:02:11 +0000 (13:02 -0700)]
Force crlf line endings for VS2015 project files.

Signed-off-by: Ralph Giles <giles@thaumas.net>
16 months agoAdd macOS and clang builds to the travis config.
Stephen [Mon, 30 Oct 2017 21:53:25 +0000 (14:53 -0700)]
Add macOS and clang builds to the travis config.

Improve coverage by building more variants in integration

There's no equivalent of the apt addon for macOS builds, so
we put dependencies in Brewfile and call `brew bundle` to
install them. This works better than calling `brew install`
directly since the later will error if a package is already
installed, and even if the error is ignored it won't update
to the latest version available, resulting in binaried built
against e.g. vulnerable versions of openssl.

To avoid conflicts with Apple's deprecated openssl package,
homebrew doesn't install its openssl package in the default
search path, so we need to manually append the its location
to PKG_CONFIG_PATH. We cannot build against Apple's package
because while it provides libraries and an openssl.pc file,
no headers are available.

Signed-off-by: Ralph Giles <giles@thaumas.net>
16 months agoRemove unneeded travis lines.
Stephen [Mon, 30 Oct 2017 21:48:00 +0000 (14:48 -0700)]
Remove unneeded travis lines.

Ubuntu 14.04 (trusty) is the current default, so we don't need to specify.

Using the apt addon means we no longer need sudo access.

Signed-off-by: Ralph Giles <giles@thaumas.net>
18 months agoFix out-of-bounds read in serialno matching logic
Timothy B. Terriberry [Tue, 12 Sep 2017 21:29:25 +0000 (14:29 -0700)]
Fix out-of-bounds read in serialno matching logic

We very carefully ensured _cur_link + 1 was in bounds, and then
 dereferenced nlinks + 1 (guaranteed to be out of bounds) instead.
Introduced in commit f83675ebbd79.

Thanks to the Google Autfuzz project for the report.

Fixes #2326

19 months agomingw: Update to opus 1.2.1. v0.9
Ralph Giles [Wed, 2 Aug 2017 23:40:17 +0000 (16:40 -0700)]
mingw: Update to opus 1.2.1.

New release of the codec reference implementation.

19 months agoMinor win32 warning fix.
Timothy B. Terriberry [Wed, 2 Aug 2017 21:49:56 +0000 (14:49 -0700)]
Minor win32 warning fix.

op_fopen() and op_freopen() declare these arguments as non-NULL,
 so when building with mingw, the compiler reasonably complains
 when we check to see if they're NULL.
We could remove the OP_ARG_NONNULL tags, but the behavior of
 _wopen/_wfreopen appears to be to crash on NULL for either
On Linux, the behavior appears to be to handle a NULL path (fopen
 returns NULL with errno set to EFAULT, and freopen returns the
 passed FILE * with errno set to EFAULT), but crash on a NULL mode.
Keeping the OP_ARG_NONNULL tags promises that passing NULL results
 in undefined behavior, which is at least consistent with the
 behavior being different on different platforms.
It's also consistent with the ABI promises of previous releases,
 which compilers linking against libopusfile might have taken
 advantage of.

19 months agoUpdate soname for the opusfile 0.9 release.
Ralph Giles [Wed, 2 Aug 2017 21:38:51 +0000 (14:38 -0700)]
Update soname for the opusfile 0.9 release.

The return type of op_serialno changed from ogg_uint32
to opus_uint32, but those types should be abi compatible.

19 months agomingw: Update to opus 1.2.
Ralph Giles [Wed, 2 Aug 2017 21:38:10 +0000 (14:38 -0700)]
mingw: Update to opus 1.2.

New release of the codec reference implementation.

19 months agomingw: Use an https url for downloading libogg.
Ralph Giles [Wed, 2 Aug 2017 21:37:14 +0000 (14:37 -0700)]
mingw: Use an https url for downloading libogg.

downloads.xiph.org recently got https support.

19 months agoFix a formatting nit.
Ralph Giles [Wed, 2 Aug 2017 21:07:10 +0000 (14:07 -0700)]
Fix a formatting nit.

19 months agoDisable building latex documentation on ci.
Thomas Daede [Wed, 2 Aug 2017 00:27:04 +0000 (17:27 -0700)]
Disable building latex documentation on ci.

The documentation currently fails to build on Jenkins due to
hyperref and doxygen not playing nicely with each other on
Debian Stretch.

19 months agoPrint a useful error when pkg-config is missing
Timothy B. Terriberry [Tue, 1 Aug 2017 23:49:32 +0000 (16:49 -0700)]
Print a useful error when pkg-config is missing

Without this check, the PKG_CHECK_MODULES() macro remains
unexpanded, which gives a syntax error when the shell reaches that
point in the configure script, even for checks which are disabled
(e.g., the OpenSSL check when using --disable-http).

Instead, explicitly check for pkg-config and give the user useful
advice on how to solve the problem if it's not found.

Thanks to eXpl0it3r for reporting a problem for which installing
pkg-config turned out to be the solution.

20 months agoImprove source/stream terminology consistency
Timothy B. Terriberry [Fri, 7 Jul 2017 21:36:18 +0000 (14:36 -0700)]
Improve source/stream terminology consistency

We inherited the term "source" from vorbisfile's "datasource", but
 were using it interchangeably with stream.
At least one user did not even realize the that the _source
 parameter passed to op_open_callbacks() was the same as the
 _stream parameter taken by those callbacks, which is reasonable
 because we never said so.
Consistently use "stream" instead of "source" in both the
 documentation and the code.

20 months agoMinor documentation cross-reference.
Timothy B. Terriberry [Fri, 7 Jul 2017 21:14:25 +0000 (14:14 -0700)]
Minor documentation cross-reference.

Let people reading about the output_gain field know how to change
 the way it gets applied.

21 months agohttp: Fix assertion broken for IPv6 addresses.
Timothy B. Terriberry [Sat, 17 Jun 2017 19:16:59 +0000 (12:16 -0700)]
http: Fix assertion broken for IPv6 addresses.

These two asserts used to be in separate branches, but the code was
 consolidated into a single branch by e63503349f3f.
However, the asserts were not updated at the same time.
With an IPv6 address, the sockaddr_in assert would always fail.

21 months agoPropogate openssl CFLAGS to the opusurl build.
Ralph Giles [Wed, 7 Jun 2017 18:25:58 +0000 (11:25 -0700)]
Propogate openssl CFLAGS to the opusurl build.

We added DEPS_CFLAGS to the general build, but opusurl
has an additional dependency on openssl. If the headers
were outside the normal search path, configure could
succeed but then the build would fail on http.c.

We need to add URL_DEPS_CFLAGS to that specific target.

21 months agomingw: Drop fedora from dist version.
Ralph Giles [Wed, 7 Jun 2017 16:47:29 +0000 (09:47 -0700)]
mingw: Drop fedora from dist version.

I think it's less confusing for most users to omit this. I added
it so I could distinguish the docker-hosted cross package from
others, but it's a distraction for people trying to use the
resulting binaries.

21 months agomingw: Query git for dist version.
Ralph Giles [Wed, 7 Jun 2017 14:55:25 +0000 (07:55 -0700)]
mingw: Query git for dist version.

We build from a git repo, so we can call `git describe` to
generate a version number. When building from a tag, this
should give us a clean release-versioned filename.

21 months agomingw: Bump docker base image to fedora:25.
Ralph Giles [Tue, 6 Jun 2017 21:11:30 +0000 (14:11 -0700)]
mingw: Bump docker base image to fedora:25.

fedora:24 will be end-of-life soon.

21 months agoUpdate mingw dependencies.
Ralph Giles [Fri, 26 May 2017 19:19:21 +0000 (12:19 -0700)]
Update mingw dependencies.

opus 1.1.5
openssl 1.0.2l

There's a newer branch (openssl 1.1.x) availabe now, but the
build script needs changes to make it work. Stay on 1.0.2 for now.

21 months agoFix two compiler warnings.
Timothy B. Terriberry [Wed, 24 May 2017 20:08:44 +0000 (13:08 -0700)]
Fix two compiler warnings.

Thanks to Mark Harris for the report.

21 months agoFix uninitialized free in tag parsing.
Timothy B. Terriberry [Tue, 23 May 2017 22:48:40 +0000 (15:48 -0700)]
Fix uninitialized free in tag parsing.

The tags have two possible representations of the binary suffix
An implicit one: if comment_lengths and user_comments are NULL,
 then the length of the binary suffix data is 0 and the pointer to
 that data is also implicitly taken to be NULL.
And an explicit one: if comment_lengths and user_comments are
 non-NULL, then comment_lengths[comments] and
 user_comments[comments] contains the length and pointer to the
 binary suffix data (where "comments" is the number of user

The implicit one allows us to initialize a tags struct without
 doing any allocations, which ensures it always succeeds.
op_tags_ensure_capacity() may upgrade the implicit representation
 to the explicit representation.
However, when doing so, it stores the implicit (0, NULL) values
 in their new explicit locations at the end of the array assuming
 the requested capacity will become the new size.
If the caller of op_tags_ensure_capacity() then fails before
 enlarging the array to that size, then comment_lengths and
 user_comments will be non-NULL, but the explicit locations for the
 binary suffix data for the _old_ size may not have been

In particular, in opus_tags_parse_impl(), if there was exactly one
 comment, and any of the three checks at the start of the main loop
 failed, then the explicit locations for the binary suffix data
 would remain uninitialized, and the call to opus_tags_clear() in
 the caller would attempt to free them.
For counts larger than 1, the extra line marked "Needed by
 opus_tags_clear()" will update the explicit location as the array
 grows, but with a count of 1 this line never gets a chance to run.

This patch fixes the problem by making op_tags_ensure_capacity()
 promote the implicit representation to explicit at _both_ the old
 and new array sizes.
We could have fixed up opus_tags_parse_impl() to do this instead,
 as suggested in the original bug reports, but doing it this way
 ensures that the tags are always in a valid state when
 op_tags_ensure_capacity() returns.

Thanks to the Google AutoFuzz Team for the report.

Fixes #2324
Fixes #2325

22 months agoMinor documentation fix.
Timothy B. Terriberry [Sat, 13 May 2017 05:23:30 +0000 (22:23 -0700)]
Minor documentation fix.

Clarify that the value returned by op_current_link() is strictly
 less than the value returned by op_link_count() for seekable

22 months agoHarmonize op_raw_total() and op_raw_seek()
Timothy B. Terriberry [Sat, 13 May 2017 04:58:46 +0000 (21:58 -0700)]
Harmonize op_raw_total() and op_raw_seek()

op_raw_seek() will fail if you try to seek to a byte position
 beyond the end of the file.
However, the "end" is defined in terms of _of->end, which is
 specifically the end of the last Ogg page found in the underlying
 source (excluding any trailing non-Ogg data).
op_raw_total(_of,-1) returns the total size of the stream by using
 _of->end, but it was also subtracting the offset of the first Opus
 page in the first link.
Since there might have been other Ogg streams concurrently
 multiplexed with the first Opus stream whose BOS pages appear
 first, or there might simply be non-Ogg junk at the start, that
 left the caller with no way to determine the valid range of byte
 offsets that could be passed to op_raw_seek().

Instead, make op_raw_total() pretend the first link starts at
 offset 0, and explicitly document that it's what defines the range
 of valid values to op_raw_seek().
This is how our own seeking_example.c was using it, anyway.

22 months agoImprove handling of holes (corrupt pages).
Timothy B. Terriberry [Sat, 13 May 2017 00:49:53 +0000 (17:49 -0700)]
Improve handling of holes (corrupt pages).

Previously, when we encountered a hole (a gap in the page sequence
 numbers), we would save off all of the packets from the first page
 after the hole, but not timestamp them.
That meant when they were actually decoded, op_pcm_tell() would
 report a timestamp of 0 until reaching the last packet on that

Instead, handle holes just like a raw seek.
We reset the granule position tracking, and attempt to timestamp
 packets backwards from the end of the page.
If the first page after the hole is an EOS page, we just throw it
 away (rather than risk playing invalid samples due to incorrect
We also throw away the first 80 ms of audio after a hole, to allow
 the decoder state to reconverge.

This patch also updates the example to report the hole and
 continue decoding, rather than immediately stopping when a hole is
 encountered, in order to test the above features.

22 months agoAvoid operations linear in the number of links.
Timothy B. Terriberry [Fri, 12 May 2017 23:02:38 +0000 (16:02 -0700)]
Avoid operations linear in the number of links.

Just in case some bozo makes a chained stream with 272,389 links
 with 16 samples in each (coded at 16 Mbps, including overheads).
This avoids quadratic behavior for simple straight-through
 playback: we no longer do a linear search on each chain boundary
 or each call to op_pcm_tell().
N seeks with M chains still requires O(N*log(M)) work.

22 months agoMinor comment updates.
Timothy B. Terriberry [Fri, 12 May 2017 20:17:10 +0000 (13:17 -0700)]
Minor comment updates.

No code changes.

22 months agoUse OpenSSL's hostname validation if available.
Timothy B. Terriberry [Sat, 31 Dec 2016 14:33:40 +0000 (06:33 -0800)]
Use OpenSSL's hostname validation if available.

As of version 1.0.2, OpenSSL can finally do automatic hostname
 validation for us.
Their implementation is likely to have received much better review
 than ours, and there are other good reasons to prefer it, so use it
 when we can.

22 months agoFix two minor errors in hostname validation.
Timothy B. Terriberry [Sat, 31 Dec 2016 14:25:31 +0000 (06:25 -0800)]
Fix two minor errors in hostname validation.

RFC 6125 says that if the host is an IP address, a subjectAltName of
 type iPAddress must (no 2119 caps) be present and must be used.
We would still fall back to checking the Common Name if no
 subjectAltName was present.

https://marc.info/?l=openssl-dev&m=139617145216047&w=2 interprets
 RFC 6125 to say that if the host is a DNS name, but the certificate
 only contains a subjectAltName of type iPAddress, then we should
 still fall back to checking the Common Name.
We would only check the Common Name if there was no subjectAltName
 of any type.

Restructure the hostname validation to check IP addresses up-front
 and fall back to checking the Common Name in the proper cases.

2 years agoFix minor typo in return type of op_serialno()
sezero [Tue, 7 Mar 2017 08:11:10 +0000 (11:11 +0300)]
Fix minor typo in return type of op_serialno()

If, e.g. using a differently configured config_types.h with a long
vs. int conflict in the int32 typedef, this would have resulted in
a build failure.

Signed-off-by: Timothy B. Terriberry <tterribe@xiph.org>
2 years agoUse ASN1_STRING_get0_data for openssl-1.1.0
eroen [Mon, 2 Jan 2017 18:50:07 +0000 (19:50 +0100)]
Use ASN1_STRING_get0_data for openssl-1.1.0

This fixes a build failure from undefined references to ASN1_STRING_data in

ASN1_STRING_data is deprecated in openssl-1.1.0. The new ASN1_STRING_get0_data
is identical, except the returned string may not be modified, which we don't
do anyway.

Also include missing asn1.h header to silence compiler warnings.

X-Gentoo-Bug: 592456
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=592456

2 years agomingw: Don't use deltarpm reconstruction.
Ralph Giles [Tue, 8 Nov 2016 06:29:52 +0000 (22:29 -0800)]
mingw: Don't use deltarpm reconstruction.

The fedora docker images ship without the necessary metadata
to reconstruct rpm packages from installed data, so attempting
to download delta rpm packages when updating the system just
wastes time and bandwidth.

2 years agoFix typo in assertion.
Ralph Giles [Fri, 4 Nov 2016 23:51:49 +0000 (16:51 -0700)]
Fix typo in assertion.

Commit d0c82543d55f1f5938460022777301b8de023bc9 broke builds
with --enable-assertions with error: 'tag_len' undeclared.

Fixing the simple typo in the symbol reference resolves the issue.

2 years agomingw: README.txt -> README.md.
Ralph Giles [Fri, 4 Nov 2016 22:09:38 +0000 (15:09 -0700)]
mingw: README.txt -> README.md.

The file in the parent directory was renamed; change the
reference in the Makefile as well.

2 years agomingw: Base docker container on Fedora 24.
Ralph Giles [Fri, 4 Nov 2016 21:50:40 +0000 (14:50 -0700)]
mingw: Base docker container on Fedora 24.

2 years agomingw: update to openssl 1.0.2j.
Ralph Giles [Fri, 4 Nov 2016 21:31:13 +0000 (14:31 -0700)]
mingw: update to openssl 1.0.2j.

Latest stable release.

2 years agomingw: update to opus 1.1.3.
Ralph Giles [Fri, 4 Nov 2016 21:28:31 +0000 (14:28 -0700)]
mingw: update to opus 1.1.3.

Build against latest stable upstream release.

2 years agomingw: Correct README typo.
Ralph Giles [Fri, 4 Nov 2016 21:24:33 +0000 (14:24 -0700)]
mingw: Correct README typo.

2 years agoMake dot optional in generating documentation.
Ralph Giles [Fri, 4 Nov 2016 21:22:19 +0000 (14:22 -0700)]
Make dot optional in generating documentation.

Different distributions of doxygen have different default
values of HAVE_DOT setting, so we need to pick a specific
setting to avoid 'missing dot' warnings on some platforms.

Doxygen uses it to generate inclusion graphs for our various
header files, which is somewhat useful, but not essential.
We therefore enable dot if it's present (usually through
the parent graphviz package) but disable it if it's not
available, silencing the warning, but not giving uniform

2 years agoAdd jenkins build status icon.
Ralph Giles [Wed, 28 Sep 2016 15:45:14 +0000 (08:45 -0700)]
Add jenkins build status icon.

2 years agoUse the appveyor badge for the xiph github repo.
Ralph Giles [Wed, 21 Sep 2016 19:22:14 +0000 (12:22 -0700)]
Use the appveyor badge for the xiph github repo.

2 years agoUpdate release checklist for README.md.
Timothy B. Terriberry [Wed, 21 Sep 2016 17:12:37 +0000 (10:12 -0700)]
Update release checklist for README.md.

2 years agoAdd badges
Chocobo1 [Sun, 31 Jul 2016 02:16:22 +0000 (10:16 +0800)]
Add badges

2 years agoModernize README
Chocobo1 [Sun, 31 Jul 2016 02:10:56 +0000 (10:10 +0800)]
Modernize README

Adopt markdown format

2 years agoFix MSVC warnings.
Timothy B. Terriberry [Fri, 16 Sep 2016 22:41:27 +0000 (15:41 -0700)]
Fix MSVC warnings.

Some of these pointed to real potential overflows (given arbitrary
 inputs by the calling application).
I was sad about stripping const qualifiers from the struct addrinfo
 pointers, but MSVC seems to erroneously think that an array of
 pointers to constant data is itself a pointer to constant data (or
 maybe that it is not compatible with a const void *?), and
 converting the memmove()s to for loops triggered an erroneous
 warning about out-of-bounds array accesses in gcc (but on only one
 of the two identical loops).

2 years agoappveyor: Don't compile OpenSSL for the Release-NoHTTP configuration.
Ricardo Constantino (:RiCON) [Thu, 28 Jul 2016 22:10:38 +0000 (23:10 +0100)]
appveyor: Don't compile OpenSSL for the Release-NoHTTP configuration.

The dependency isn't needed in this case, and it speeds up
the test considerably.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoVS2015: Add Release configuration without OpenSSL dependency.
Ricardo Constantino (:RiCON) [Thu, 28 Jul 2016 20:17:24 +0000 (21:17 +0100)]
VS2015: Add Release configuration without OpenSSL dependency.

Using a custom config.h isn't enough, since additional libs have to
be available whether OP_ENABLE_HTTP is defined or not.

Don't bother compiling OpenSSL in Appveyor in this one.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoVS2015: Depend on OpenSSL.
Ricardo Constantino (:RiCON) [Thu, 28 Jul 2016 01:03:02 +0000 (02:03 +0100)]
VS2015: Depend on OpenSSL.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoappveyor: Compile static openssl from git to use with opusfile.
Ricardo Constantino (:RiCON) [Thu, 28 Jul 2016 00:58:38 +0000 (01:58 +0100)]
appveyor: Compile static openssl from git to use with opusfile.

Stable branch used because master is on 1.1.x which doesn't work.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoAdd appveyor.yml to test VS2015 builds.
Ricardo Constantino (:RiCON) [Wed, 27 Jul 2016 14:18:52 +0000 (15:18 +0100)]
Add appveyor.yml to test VS2015 builds.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoRemove VS2010 projects.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 20:48:19 +0000 (21:48 +0100)]
Remove VS2010 projects.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoAdd VS2015 projects.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 22:04:10 +0000 (23:04 +0100)]
Add VS2015 projects.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agowin32: Add gitignore.
Ricardo Constantino (:RiCON) [Tue, 26 Jul 2016 20:09:32 +0000 (21:09 +0100)]
win32: Add gitignore.

Signed-off-by: Ralph Giles <giles@thaumas.net>
2 years agoAdd a travis build file.
Ralph Giles [Thu, 7 Jul 2016 22:28:01 +0000 (15:28 -0700)]
Add a travis build file.

It seems we have to run this on ubuntu trusty images to satisfy
the libopus-dev dependency, which currently requires sudo
(I think as proxy to trigger a non-docker image?) and is
therefore slower than vanilla container builds.

2 years agoUpdate dependencies for the mingw build.
Ralph Giles [Wed, 6 Jul 2016 21:41:04 +0000 (14:41 -0700)]
Update dependencies for the mingw build.

2 years agoAdd release checksums for opusfile 0.8.
Ralph Giles [Wed, 6 Jul 2016 17:43:01 +0000 (10:43 -0700)]
Add release checksums for opusfile 0.8.

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

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

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

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

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

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

2 years 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
This meant this function would almost always fail, unless you had
 added binary metadata first.

Fixes Coverity CID 149874.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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