[openal] AL_SOFT_source_length

Chris Robinson chris.kcat at gmail.com
Fri Jul 4 10:34:54 EDT 2014

This is a fairly simple one. This provides a simple and efficient way to 
retrieve the combined length of all the buffers on a source, static or 
streaming. This kind of info is useful if you're trying to get accurate 
timing of an audio stream.
-------------- next part --------------



    Chris Robinson


    Chris Robinson (chris.kcat 'at' gmail.com)


    In progress


    This extension is for OpenAL 1.1.
    This extension trivially interacts with AL_SOFT_buffer_samples.


    This extension adds a method to retrieve the total length of a source's
    buffer data in bytes, samples, and seconds, which correspond to the byte,
    sample, and seconds offset extents. By default, OpenAL only provides a way
    to retrieve a buffer's storage size in bytes, which does not necessarily
    represent the data size given to alBufferData nor the byte offset extent.
    Using the AL_SOFT_buffer_samples extension, an application can query a
    buffer for its length in bytes, samples, and seconds, but this is only for
    a single buffer; a buffer queue on a source still requires additional
    bookkeeping by the application to keep track of the length of each buffer
    being queued and unqueued onto a given source. This extension aims to ease
    that and provide a simple query.



New Procedures and Functions


New Tokens

    Accepted by the <paramName> parameter of alGetSourcei and alGetSourceiv
    (these are the same as in AL_SOFT_buffer_samples):

        AL_BYTE_LENGTH_SOFT                      0x2009
        AL_SAMPLE_LENGTH_SOFT                    0x200A

    Accepted by the <paramName> parameter of alGetSourcef and alGetSourcefv
    (these are the same as in AL_SOFT_buffer_samples):

        AL_SEC_LENGTH_SOFT                       0x200B

Additions to Specification

    Table x.0. Source Length Attributes

    Name                   Signature  Values        Default
    ---------------------  ---------  ------------  -------
    AL_BYTE_LENGTH_SOFT    i, iv      [0, INT_MAX]  0
    AL_SAMPLE_LENGTH_SOFT  i, iv      [0, INT_MAX]  0
    AL_SEC_LENGTH_SOFT     f, fv      [0.0f, Any]   0.0f

    Query only. Queries the combined lengths of all buffers on a source, in
    bytes, sample frames, or seconds.

    The length represents the extent of the corresponding source offset; e.g.,
    the source's AL_BYTE_OFFSET will range from 0 (inclusive) to
    AL_BYTE_LENGTH_SOFT (exclusive).


    An AL_INVALID_OPERATION error is generated if an attempt is made to set
    attributes on a source.

More information about the openal mailing list