class Discord::DCAParser


Parser for the DCA file format, a simple wrapper around Opus made specifically for Discord bots.

Defined in:


Constant Summary


Magic string that identifies a DCA1 file


Instance Method Summary

Constructor Detail

def : IO, raw = false, strict_metadata = true) #

Create a new parser. It will read from the given io. If raw is set, the file is assumed to be a DCA0 file, without any metadata. If the file's metadata doesn't conform to the DCA1 specification and strict_metadata is set, then the parsing will fail with an error; if it is not set then the metadata will silently be nil.

[View source]

Instance Method Detail

def metadata : DCA1Mappings::Metadata? #

The parsed metadata, or nil if it could not be parsed.

[View source]
def next_frame(reuse_buffer = false) : Bytes? #

Reads the next frame from the IO. If there is nothing left to read, it will return nil.

If reuse_buffer is true, a large buffer will be allocated once and reused for future calls of this method, reducing the load on the GC and potentially reusing memory use overall; if it is false, a new buffer of just the correct size will be allocated every time. Note that if the buffer is reused, the returned data is only valid until the next call to #next_frame.

[View source]
def parse(&block : Bytes -> ) #

Continually reads frames from the IO until there are none left. Each frame is passed to the given block.

[View source]