RIFF (riff v0.1.1)

This is an Elixir module for reading and writing RIFF files.

example

Example

> riff = File.read!("foo.webp")
<<82, 73, 70, 70, 192, 199 ...>>

> parsed = RIFF.parse(riff)
%RIFF.ChunkWithSubChunks{
  id: "RIFF",
  size: 51136,
  format: "WEBP",
  sub_chunks: [
    %RIFF.Chunk{
      id: "VP8L",
      size: 51123,
      data: <<47 ...>>
    }
  ]
}

> RIFF.find_chunk(parsed, "VP8L")
%RIFF.Chunk{
  id: "VP8L",
  size: 51123,
  data: <<47 ...>>
}

> data = RIFF.encode(parsed)
<<82, 73, 70, 70, 192, 199 ...>>

Link to this section Summary

Link to this section Types

@type chunk() :: simple_chunk() | chunk_with_sub_chunks()
Link to this type

chunk_with_sub_chunks()

@type chunk_with_sub_chunks() :: %RIFF.ChunkWithSubChunks{
  format: binary(),
  id: binary(),
  size: integer(),
  sub_chunks: [chunk()]
}
Link to this type

simple_chunk()

@type simple_chunk() :: %RIFF.Chunk{data: binary(), id: binary(), size: integer()}

Link to this section Functions

@spec encode(chunk_with_sub_chunks()) :: binary()
Link to this function

find_chunk(map, chunk_id)

@spec find_chunk(chunk_with_sub_chunks(), binary()) :: chunk()
@spec parse(binary()) :: chunk_with_sub_chunks()
Link to this function

replace_sub_chunk(parsed, new_sub_chunk)

@spec replace_sub_chunk(chunk_with_sub_chunks(), chunk()) :: chunk_with_sub_chunks()