MPEG audio frame header (MP3) encoding and decoding.
Round-trip a frame header
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);
Creates a coder for a 4-byte MP3 (MPEG audio) frame header.
Decoded MP3 (MPEG audio) frame header.
Values used by the channelMode field.
-
DUAL_CHANNEL: number
Two channels encoded as if unrelated (two mono streams).
-
JOINT_STEREO: number
Stereo encoded with joint-stereo techniques; see
modeExtension. -
MONO: number
Single channel.
-
STEREO: number
Two independently encoded channels.
Size in bytes of an MP3 frame header (32 bits).
The 11-bit frame sync marker (0x7ff, all ones) that opens every MP3
frame header.
Values used by the layer field.
-
LAYER_1: number
Layer I.
-
LAYER_2: number
Layer II.
-
LAYER_3: number
Layer III — the format commonly called "MP3".
-
RESERVED: number
Reserved — not a valid layer.
Values used by the mpegVersion field.
-
MPEG_1: number
MPEG Version 1 (ISO/IEC 11172-3).
-
MPEG_2: number
MPEG Version 2 (ISO/IEC 13818-3).
-
MPEG_2_5: number
MPEG Version 2.5 (unofficial extension for very low bitrates).
-
RESERVED: number
Reserved — not a valid MPEG version.