1. 15 Dec, 2015 2 commits
    • Timothy B. Terriberry's avatar
      Buffer continued packet data to reduce seeking. · 661459b4
      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.
      661459b4
    • Timothy B. Terriberry's avatar
      Fix timestamp check for seek-free seek. · 33d17971
      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.
      33d17971
  2. 07 Dec, 2015 1 commit
  3. 06 Dec, 2015 2 commits
    • Timothy B. Terriberry's avatar
      Handle continued packets in bisection search. · 41c29626
      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.
      41c29626
    • Timothy B. Terriberry's avatar
      d12f4d30
  4. 26 Sep, 2015 1 commit
  5. 27 May, 2015 2 commits
  6. 27 Feb, 2015 1 commit
    • Timothy B. Terriberry's avatar
      Broaden the test for AI_NUMERICSERV. · bb765c37
      Timothy B. Terriberry authored
      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
      bb765c37
  7. 04 Jul, 2014 1 commit
  8. 11 Jun, 2014 1 commit
  9. 12 Apr, 2014 1 commit
  10. 30 Mar, 2014 1 commit
    • Timothy B. Terriberry's avatar
      Document that op_bitrate() is for all streams. · 21e14ffe
      Timothy B. Terriberry authored
      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.
      21e14ffe
  11. 26 Mar, 2014 1 commit
    • Timothy B. Terriberry's avatar
      Minor cleanups. · 6f482ef4
      Timothy B. Terriberry authored
      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.
      6f482ef4
  12. 25 Mar, 2014 1 commit
  13. 16 Mar, 2014 1 commit
  14. 12 Mar, 2014 1 commit
  15. 03 Mar, 2014 1 commit
  16. 11 Jan, 2014 1 commit
  17. 10 Jan, 2014 1 commit
  18. 09 Jan, 2014 2 commits
  19. 08 Jan, 2014 3 commits
  20. 05 Dec, 2013 1 commit
    • Ron's avatar
      Revert "Pass --always to 'git describe'." · 9a9825df
      Ron authored
      This reverts commit 8638d78c.
      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.
      9a9825df
  21. 20 Nov, 2013 4 commits
  22. 01 Oct, 2013 1 commit
  23. 03 Sep, 2013 9 commits