MMA_DataFormat

[GQ], STRPTR. (V51)

DESCRIPTION

   Textual description of data format. This class returns different strings
   depending on compression used:
   - "IFF 8SVX" for uncompressed sounds.
   - "IFF 8SVX Fibonacci Delta" for Fibonacci delta compression.
   - "IFF 8SVX Exponential Delta" for exponential delta compression

MMA_MediaType

[GQ], LONG. (V51)

DESCRIPTION

   Identifier of media type. This class returns MMT_SOUND

MMA_MimeType

[GQ], STRPTR. (V51)

DESCRIPTION

   Returns MIME type string for the object. This class returns
   "audio/x-8svx" string

MMA_Sound_BitsPerSample

[GQ], LONG. (V51)

DESCRIPTION

   Returns number of bits used to represent one sample in source data. This
   class returns 8 for uncompressed streams, 4 for compressed ones

MMA_Sound_Channels

[GQ], LONG. (V51)

DESCRIPTION

   Returns number of audio channels in the stream. This class returns 1 for
   mono files, 2 for stereo ones

MMA_Sound_FrameCount

[GQ], QUAD*. (V51)

DESCRIPTION

   Returns number of sample frames (time points) in the stream

NOTES

   This is a 64-bit attribute and is passed as a pointer to 64-bit number.

MMA_Sound_SampleRate

[GQ], LONG. (V51)

DESCRIPTION

   Returns sampling rate of the sound in Hz. For 8SVX sounds it is never
   higher than 65535 Hz

MMA_Sound_Volume

[GQ], LONG. (V51)

DESCRIPTION

   Returns default sound volume stored in the stream in 16-bit scale. 0
   means silence, 65536 ($10000) is full volume

MMA_StreamPosBytes

[GQ], QUAD*. (V51)

DESCRIPTION

   Returns current byte position in (undecoded) audio data

NOTES

   This is a 64-bit attribute and is passed as a pointer to 64-bit number.

MMM_Pull

pulls undecoded 8SVX data into a buffer. (V51)

SYNOPSIS

   LONG DoMethod(Object *obj, MMM_Pull, LONG port, APTR buffer, LONG
   length);

DESCRIPTION

   Pulls and stores requested number of bytes of undecoded (but interleaved
   in case of stereo) 8SVX audio data

INPUTS

   port - this method may be only invoked on output port (port 1).
   buffer - pointer to destination buffer. Must be aligned to 16 bytes,
     preferrably allocated with MediaAllocVec().
   length - number of bytes to store in buffer

RESULT

    Number of bytes stored. Zero means end of data, -1 means error. Error
    code may be obtained by getting MMA_ErrorCode attribute on the object

MMM_Seek

seeks in undecoded 8SVX data. (V51)

SYNOPSIS

   DoMethod(obj, MMM_Seek, LONG port, LONG type, QUAD *position);

DESCRIPTION

   Seeks in undecoded 8SVX data (contents of "BODY" chunk of the stream).
   Backward seek can be performed only if a stream connected on input port
   is seekable. Forward seek on non-seekable streams will be emulated with
   data pulling

INPUTS

   port - this method may be only invoked on output port (port 1).
   type - type of seek, only MMM_SEEK_BYTES allowed here.
   position - requested position in data, relative to the beginning

RESULT

   Boolean, TRUE for success. If FALSE, error code may be obtained by
   getting MMA_ErrorCode attribute

__background__

HISTORY

   51.4 (24.10.2015)
   - Fix for per-output metadata.

   51.3 (06.06.2010)
   - MMM_Pull(): setting MMERR_END_OF_DATA for stereo files has been
     delayed. For stereo files MMM_Seek() is called during pulling, so
     error gets cleared for the object.

   51.2 (04.06.2010)
   - Fixed loading mono files, partial buffer fetch at end of stream is
     done properly.

   51.1 (25.08.2009)
   - The first release.

DESCRIPTION

   The class is a demultiplexer for IFF 8SVX audio streams. It supports
   uncompressed ones, as well as Fibonacci delta and exponential delta
   compression. Mono and stereo files are supported. Because of internal
   structure of IFF files, IFF 8SVX streams are limited to 2 GB of data.

   Stereo IFF 8SVX files have an unique feature - they store channels
   separately, left first, then right. Then streaming of stereo 8SVX is
   impossible. Reggae of course converts separate channels into an usual
   interleaved stereo stream. If the stream is seekable, Reggae will read
   chunks of audio data for left then right channel, jumping in the stream
   back and forth once per chunk. For non-seekable streams all the left
   channel is buferred in memory, then right is read in chunks and
   interleaved with left channel from buffer.

PORTS

   - port 0 - input, MMF_STREAM.
   - port 1 - output, one of:
     * MMF_AUDIO_PCM8
     * MMF_AUDIO_FIB_DPCM
     * MMF_AUDIO_EXP_DPCM.