6 years agoSmall speed-up to op_bisect_forward_serialno().
Timothy B. Terriberry [Sat, 22 Sep 2012 22:08:02 +0000 (15:08 -0700)]
Small speed-up to op_bisect_forward_serialno().

Try to guess that the next link will be approximately the average
 size of all previous links, for files with many links.
This cuts off 6-17% of the seeks.

Also remove a variable that was left unused after 5e36109d.

6 years agoClean up offset tracking.
Timothy B. Terriberry [Sat, 22 Sep 2012 21:40:03 +0000 (14:40 -0700)]
Clean up offset tracking.

Reduce the number of places we modify 'offset' so that
 op_seek_helper() can always skip seeks to the current offset.
The checks we were doing before already covered all the places
 where this was useful in the normal case, but this lets us
 centralize that logic.

This commit also includes a few minor follow-ups to 9b57b0c2:
* Use a smaller type for ret_size and initialize it.
* Verify 'end' is at least as large as data we've already read.

6 years agoFix some issues with trailing junk in files.
Timothy B. Terriberry [Sat, 22 Sep 2012 20:37:38 +0000 (13:37 -0700)]
Fix some issues with trailing junk in files.

1) We were treating EOF in op_get_next_page() as a read error when
    called from op_get_prev_page_serial().
2) We also assumed op_get_prev_page_serial() stopped scanning at the
    end of the page it returned, in order to compute the size of
    that page.
   Return the page size explicitly instead.
3) Finally, once we discover where the last page is, there is no
    reason to ever look at data past it.
   Update 'end' once we find it, and always pass that to

6 years agoMinor http redirect clean-ups.
Timothy B. Terriberry [Sat, 22 Sep 2012 19:35:29 +0000 (12:35 -0700)]
Minor http redirect clean-ups.

Actually close the old socket.
Don't initialize SSL more than once.

6 years agoAdd URL support to seeking_example.
Timothy B. Terriberry [Sat, 22 Sep 2012 17:16:14 +0000 (10:16 -0700)]
Add URL support to seeking_example.

Also fixes some indenting in opusfile_example.

6 years agoAdd support for http, https, and file URLs.
Timothy B. Terriberry [Sat, 22 Sep 2012 15:54:04 +0000 (08:54 -0700)]
Add support for http, https, and file URLs.

This is pretty preliminary for now.
Seeking performance isn't great, and there's no caching.
I'm sure there's also lots of bugs.

6 years agoFix crash in seeking_example.
Timothy B. Terriberry [Fri, 21 Sep 2012 02:12:46 +0000 (19:12 -0700)]
Fix crash in seeking_example.

When a match fails, the index of the position in the link needs to
 be 64 bits.

6 years agoFix hole reporting discrepancy.
Timothy B. Terriberry [Wed, 19 Sep 2012 22:43:43 +0000 (15:43 -0700)]
Fix hole reporting discrepancy.

op_find_initial_pcm_offset() would swallow any holes at the start
 of a link, but seekable streams did not use it when crossing a
 link boundary, so they would report a hole.
This unifies the hole reporting between the two, and also
 simplifies the seeking code (which also needs to ignore holes) a

6 years agoA couple of seeking_example improvements.
Timothy B. Terriberry [Wed, 19 Sep 2012 21:13:18 +0000 (14:13 -0700)]
A couple of seeking_example improvements.

1) Check for allocation failure and fall back to merely scanning a
 file for consistent timestamps instead of loading it to RAM.
2) Report holes, but do not quit scanning/loading unless they cause
 a discontinuity in the timestamps.

6 years agoEmbed the git revision in the doxygen documentation.
Ralph Giles [Tue, 18 Sep 2012 08:05:43 +0000 (01:05 -0700)]
Embed the git revision in the doxygen documentation.

The simple git-version script asks git for the current
revision, and falls back to 'unknown' if the result is
empty. This will have little effect until we have tags
in the repository.

We use the FILE_VERSION_FILTER option on doxygen to
embed this in the documentation with each file reference.

Unfortunately, there doesn't seem to be a way to
set PROJECT_NUMBER globally in the same way. This
commit unsets that option to avoid confusing references
in the generated documentation.

6 years agoAdd a rough makefile for the documentation.
Ralph Giles [Tue, 18 Sep 2012 07:41:18 +0000 (00:41 -0700)]
Add a rough makefile for the documentation.

Just runs doxygen for us, an optionally latex.
The 'clean' target removes the doxygen output

6 years agoAdd a doc directory with a minimal doxygen configuration.
Ralph Giles [Tue, 18 Sep 2012 00:54:56 +0000 (17:54 -0700)]
Add a doc directory with a minimal doxygen configuration.

This is just to help us validate the api docs as they're
added. By using a minimal Doxyfile we save space, make
it easier to read, and avoid warnings from deprecated
and unknown options across different doxygen versions.

6 years agoFinish implementing the OpusTags API.
Timothy B. Terriberry [Tue, 18 Sep 2012 00:07:48 +0000 (17:07 -0700)]
Finish implementing the OpusTags API.

Apparently just declaring the functions in the header is not good
Currently completely untested.

6 years agoUpdate opusfile.h's include guard.
Timothy B. Terriberry [Mon, 17 Sep 2012 22:47:39 +0000 (15:47 -0700)]
Update opusfile.h's include guard.

3f18c55f moved it out of opus/, so strip the prefix.

6 years agoDon't include deps during 'make clean'.
Ralph Giles [Mon, 17 Sep 2012 16:12:28 +0000 (09:12 -0700)]
Don't include deps during 'make clean'.

If a source file moves (as in the previous commit), any stale
dependencies will block execution of 'make' because they
define a dependency relationship to an non-existant file.

The obvious thing to do is 'make clean' to get rid of the
dependency files, but of course that fails the same way.
To support this recovery, skip the include directive if
the GNU make variable MAKECMDGOALS is 'clean', exempting
this target from dependency checks.

Based on an example in the GNU make manual.

6 years agoMove opusfile.h up a level.
Ralph Giles [Mon, 17 Sep 2012 15:43:28 +0000 (08:43 -0700)]
Move opusfile.h up a level.

This matches the convention used by opus itself, where
headers are included without a prefix, and the build
must do -I/path/to/opus to find the appropriate versions.

6 years agoPublic header cleanups.
Timothy B. Terriberry [Mon, 17 Sep 2012 15:34:15 +0000 (08:34 -0700)]
Public header cleanups.

More consistent formatting, s/file/stream/g, and finish adding
 function warning attributes.

6 years agoRevert ea2412ea.
Timothy B. Terriberry [Mon, 17 Sep 2012 14:35:21 +0000 (07:35 -0700)]
Revert ea2412ea.

The actual problem was that opus-uninstalled.pc was forcing static
 linking, but not including all the relevant libraries.

6 years agoUse --static with pkg-config.
Timothy B. Terriberry [Mon, 17 Sep 2012 14:25:32 +0000 (07:25 -0700)]
Use --static with pkg-config.

This is needed to pick up -lm for libopus when it requires it.

6 years agoImplement stereo downmixing functions.
Timothy B. Terriberry [Mon, 17 Sep 2012 04:39:09 +0000 (21:39 -0700)]
Implement stereo downmixing functions.

Move this out of opusfile_example and into the API proper.

6 years agoRemove libm altogether.
Timothy B. Terriberry [Mon, 17 Sep 2012 02:06:14 +0000 (19:06 -0700)]
Remove libm altogether.

It's not actually used by the examples anymore.

6 years agoFix link order and add libm to the seeking example.
Ralph Giles [Mon, 17 Sep 2012 01:16:16 +0000 (18:16 -0700)]
Fix link order and add libm to the seeking example.

Needed to build on my Fedora 16 machine.

6 years agoUse an unprefixed include path for the opus headers.
Ralph Giles [Mon, 17 Sep 2012 01:10:01 +0000 (18:10 -0700)]
Use an unprefixed include path for the opus headers.

This fixes the build to use the headers returned by pkg-config.
The opus library assumes the called will pass -I/path/to/opus
so #include <opus.h> will work.

6 years agoRemove op_get_prev_page().
Timothy B. Terriberry [Sun, 16 Sep 2012 23:14:50 +0000 (16:14 -0700)]
Remove op_get_prev_page().

It wasn't used, and version control has now preserved it forever,
 so no reason to keep it around.

6 years agoRemove op_read_filter() from opusfile.h.
Timothy B. Terriberry [Sun, 16 Sep 2012 22:48:08 +0000 (15:48 -0700)]
Remove op_read_filter() from opusfile.h.

It wasn't actually implemented.

6 years agoInitial code import.
Timothy B. Terriberry [Sun, 16 Sep 2012 22:19:26 +0000 (15:19 -0700)]
Initial code import.

Seeking and playback work, at least as far as the examples test
There are probably still lots of bugs.

6 years agoPlaceholder readme.
Ralph Giles [Sun, 16 Sep 2012 06:07:59 +0000 (23:07 -0700)]
Placeholder readme.