- Jul 04, 2016
-
-
Timothy B. Terriberry authored
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.
-
Timothy B. Terriberry authored
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.
-
Timothy B. Terriberry authored
Going with "no" for now, but leave a reminder in the source code that this is a debatable question.
-
- Jun 26, 2016
-
-
Timothy B. Terriberry authored
-
- Jun 19, 2016
-
-
Timothy B. Terriberry authored
-
- Jun 16, 2016
-
-
Timothy B. Terriberry authored
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.
-
Timothy B. Terriberry authored
Just improving the clarity in some places.
-
- Jun 01, 2016
-
-
Ralph Giles authored
-
Ralph Giles authored
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.
-
- Jan 06, 2016
-
-
Ralph Giles authored
-
- Jan 05, 2016
-
-
Ralph Giles authored
Also switch to markdown-style headings to the benefit of github.
-
Ralph Giles authored
This build works as well. I'm not sure what's wrong with my local environment.
-
- Jan 04, 2016
-
-
Ralph Giles authored
-
- Jan 01, 2016
-
-
Ralph Giles authored
This does the basics to build the win32 binary release zipfile for testing. Doesn't sign or version it properly.
-
Ralph Giles authored
-
Ralph Giles authored
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.
-
Ralph Giles authored
This requires wine to run the windows executables, which is a pretty heavy dependency. Better to do without for now.
-
Ralph Giles authored
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.
-
Ralph Giles authored
-
- Dec 31, 2015
-
-
Ralph Giles authored
Verified against archive.mozilla.org and the original builds on my machine.
-
Ralph Giles authored
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
-
Ralph Giles authored
For those who would like network access to be a separate step.
-
Ralph Giles authored
-
Ralph Giles authored
This doesn't work in a normal shell, but enables 'make -C mingw' which is convenient. Thanks to ron for the suggestion.
-
Ralph Giles authored
-
Ralph Giles authored
These may not be final since the mingw build wasn't successful but includes updates from following the process today.
-
Ralph Giles authored
We have added new public interfaces, but are still backward compatible with clients built against older releases.
-
- Dec 30, 2015
-
-
Ralph Giles authored
Have successfully automated the build, but packaging is still manual.
-
Ralph Giles authored
ftp.mozilla.org is now s3-backed archive.mozilla.org. Old urls should redirect.
-
Ralph Giles authored
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.
-
Timothy B. Terriberry authored
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.
-
Timothy B. Terriberry authored
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.
-
- Dec 29, 2015
-
-
Timothy B. Terriberry authored
This includes convenience routines specifying the album gain should be applied and for parsing the tag.
-
- Dec 15, 2015
-
-
Timothy B. Terriberry authored
In commit 41c29626 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.
-
Timothy B. Terriberry authored
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.
-
- Dec 07, 2015
-
-
Timothy B. Terriberry authored
When assertions are disabled, nothing else uses header_len.
-
- Dec 06, 2015
-
-
Timothy B. Terriberry authored
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.
-
Timothy B. Terriberry authored
-
- Sep 26, 2015
-
-
Ralph Giles authored
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.
-
- May 27, 2015
-
-
Ralph Giles authored
-