default

MPEG audio frame header (MP3) encoding and decoding.

Examples

Round-trip a frame header

import { assertEquals } from "@std/assert";
import {
  MP3_CHANNEL_MODE,
  MP3_FRAME_HEADER_SIZE,
  MP3_FRAME_SYNC,
  MP3_LAYER,
  MP3_MPEG_VERSION,
  mp3FrameHeader,
} from "@binstruct/mp3";

const coder = mp3FrameHeader();
const header = {
  frameSync: MP3_FRAME_SYNC,
  mpegVersion: MP3_MPEG_VERSION.MPEG_1,
  layer: MP3_LAYER.LAYER_3,
  protectionAbsent: 1,
  bitrateIndex: 9,
  samplingRateIndex: 0,
  padding: 0,
  privateBit: 0,
  channelMode: MP3_CHANNEL_MODE.STEREO,
  modeExtension: 0,
  copyright: 0,
  original: 0,
  emphasis: 0,
};

const buffer = new Uint8Array(MP3_FRAME_HEADER_SIZE);
const written = coder.encode(header, buffer);
const [decoded, read] = coder.decode(buffer);

assertEquals(written, MP3_FRAME_HEADER_SIZE);
assertEquals(read, MP3_FRAME_HEADER_SIZE);
assertEquals(decoded, header);

Functions

f
mp3FrameHeader(): Coder<Mp3FrameHeader>

Creates a coder for a 4-byte MP3 (MPEG audio) frame header.

Interfaces

Variables

v
MP3_CHANNEL_MODE: { STEREO: number; JOINT_STEREO: number; DUAL_CHANNEL: number; MONO: number; }

Values used by the channelMode field.

v
MP3_FRAME_HEADER_SIZE: 4

Size in bytes of an MP3 frame header (32 bits).

v
MP3_FRAME_SYNC: 2047

The 11-bit frame sync marker (0x7ff, all ones) that opens every MP3 frame header.

v
MP3_LAYER: { RESERVED: number; LAYER_3: number; LAYER_2: number; LAYER_1: number; }

Values used by the layer field.

v
MP3_MPEG_VERSION: { MPEG_2_5: number; RESERVED: number; MPEG_2: number; MPEG_1: number; }

Values used by the mpegVersion field.