1. 07 Jul, 2017 2 commits
    • Timothy B. Terriberry's avatar
      Improve source/stream terminology consistency · c59d42b6
      Timothy B. Terriberry authored
      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.
      c59d42b6
    • Timothy B. Terriberry's avatar
      Minor documentation cross-reference. · 881a54da
      Timothy B. Terriberry authored
      Let people reading about the output_gain field know how to change
       the way it gets applied.
      881a54da
  2. 19 May, 2017 2 commits
    • Timothy B. Terriberry's avatar
      Minor documentation fix. · 0adf7303
      Timothy B. Terriberry authored
      Clarify that the value returned by op_current_link() is strictly
       less than the value returned by op_link_count() for seekable
       sources.
      0adf7303
    • Timothy B. Terriberry's avatar
      Harmonize op_raw_total() and op_raw_seek() · 37f83754
      Timothy B. Terriberry authored
      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.
      37f83754
  3. 16 Jun, 2016 1 commit
  4. 30 Dec, 2015 1 commit
  5. 29 Dec, 2015 1 commit
  6. 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
  7. 03 Sep, 2013 5 commits
  8. 26 Aug, 2013 1 commit
  9. 25 Aug, 2013 1 commit
  10. 24 Aug, 2013 2 commits
    • Timothy B. Terriberry's avatar
      Expose tag comparison functions. · 046b089d
      Timothy B. Terriberry authored
      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.
      046b089d
    • Timothy B. Terriberry's avatar
      A bunch of documentation clean-up. · f6ed2a88
      Timothy B. Terriberry authored
      Mostly minor stuff.
      f6ed2a88
  11. 23 Aug, 2013 2 commits
    • Timothy B. Terriberry's avatar
      Add API to report information from server headers. · 97917914
      Timothy B. Terriberry authored
      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.
      97917914
    • Timothy B. Terriberry's avatar
      Fix C&P error in proxy user/password macros. · 06a191ef
      Timothy B. Terriberry authored
      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.
      06a191ef
  12. 10 Aug, 2013 1 commit
  13. 06 Aug, 2013 1 commit
  14. 15 Jul, 2013 2 commits
    • Timothy B. Terriberry's avatar
      Add a gain control API. · 7aea3cae
      Timothy B. Terriberry authored
      A new op_set_gain_offset() allows the application to provide its own
       offset to the current decoder gain setting, as well as specify what
       offsets should be applied.
      The header gain alone is still the default, but the application may
       also request that the track gain be applied, or that neither be
       applied.
      
      In addition, an op_get_track_gain() function can parse the track
       gain out of a set of comment tags.
      This is mainly provided as a convenience for applications that need
       this information, so they don't have to write their own parser.
      7aea3cae
    • Timothy B. Terriberry's avatar
      API documentation updates. · e15e3621
      Timothy B. Terriberry authored
      - Provide an Overview section which describes some of the general
         design decisions of the libopusfile API.
      - Explicitly state that we always decode at 48 kHz.
      - Make it clearer that we always apply the header gain.
      - Document the automatic soft-clipping support.
      - Document that stream open failure does not close the source.
      - Other minor fixes.
      
      Thanks to tangobravo and siriusbtx for asking the questions which
       prompted this update.
      e15e3621
  15. 06 Apr, 2013 1 commit
  16. 23 Dec, 2012 1 commit
  17. 11 Nov, 2012 1 commit
  18. 20 Oct, 2012 3 commits
    • Timothy B. Terriberry's avatar
      Re-do abstract stream reader API. · e2d7b266
      Timothy B. Terriberry authored
      This changes op_read_func to
      a) Take a single byte count to read instead of an "item" count
          (which the http backend couldn't properly support anyway).
      b) Use integers for buffer sizes to avoid having to worry about
          sign differences and whether size_t is larger or smaller than
          opus_int64, etc.
      c) Return an explicit error code (instead of using errno like
          fread).
         We had already eliminated the use of errno, but we did it by
          treating read errors and EOF identically in all cases.
         This was preventing us from reporting SSL truncation attacks
          from the https backend.
         The https backend now properly reports such errors.
      
      This commit also fixes a bug introduced in 9b57b0c2, where we
       accidentally started passing absolute offsets to the _boundary
       parameter of op_get_next_page() instead of relative offsets.
      We now use absolute offsets in all places, as it is the simpler
       choice.
      This matters now, because the error reported when encountering EOF
       before hitting the _boundary is no longer suppressed (but instead
       reported as OP_EBADLINK).
      
      Finally, it removes the op_page_seek() function.
      Except for the time needed to decode forward after seeking, this
       function was identical in performance to op_pcm_seek(), and Opus
       requires decoding 80 ms of data after seek anyway, so the relative
       benefit is much smaller than with Vorbis.
      A survey of open-source code using libvorbisfile showed that the
       only usages of ov_page_seek() in the wild were calling it to seek
       to the start of the stream, for which op_pcm_seek() already has a
       special case that makes it just as fast.
      
      The documentation was also updated to describe all of these chanes.
      
      This is an incompatible API change.
      e2d7b266
    • Timothy B. Terriberry's avatar
      Make the URL API more extensible. · 800be8c0
      Timothy B. Terriberry authored
      Right now we have no way to add any more parameters beyond a set of
       basic binary flags.
      This unifies op_url_stream_create() and
       op_url_stream_create_with_proxy() into a single function that
       takes a variable-length list of arguments, which can be extended
       in the future to include more options of any type.
      
      This is an incompatible API change.
      800be8c0
    • Timothy B. Terriberry's avatar
      Documentation revisions and a leak fix. · 2ffd8cb7
      Timothy B. Terriberry authored
      Thanks to Jean-Marc Valin for providing documentation feedback.
      This also changes op_tags() to allow the tags to be queried on a
       partially-open file (because they've already been read and are
       available), and fixes a leak when a partially open file is freed
       instead of being fully opened.
      2ffd8cb7
  19. 12 Oct, 2012 1 commit
    • Timothy B. Terriberry's avatar
      Major updates to the http backend. · 3d78feff
      Timothy B. Terriberry authored
      * Now supports HTTP/1.1 persistent connections with pipelining.
        This speeds up chain enumeration on large files by almost a
         factor of 2 over http, and by roughly a factor of 4 over https.
        The difference between http and https is now much smaller.
      * Add timeouts to all the socket I/O.
      * Estimate the number of available bytes to read and use it when
         making connection re-use decisions.
      * Add support for https with proxies using HTTP/1.1 CONNECT
         tunnels.
      * Fix TLS session re-use (it requires clean shutdown).
      * Various other code re-organization and minor improvements.
      3d78feff
  20. 01 Oct, 2012 1 commit
  21. 24 Sep, 2012 4 commits
  22. 23 Sep, 2012 1 commit
    • Timothy B. Terriberry's avatar
      Documentation clean-up and updates. · 7be86aca
      Timothy B. Terriberry authored
      Splits the documentation into sections and provides an overview.
      Also explicitly document which functions can and cannot be called on
       partially-open streams, and fix-up a few things to behave as
       documented.
      7be86aca
  23. 22 Sep, 2012 1 commit
  24. 18 Sep, 2012 1 commit
  25. 17 Sep, 2012 2 commits