#include <stdint.h>
#include "ws_symbol_export.h"
Go to the source code of this file.
|
|
#define | MPA_UNMARSHAL_SYNC(n) ((n) >> 21 & 0x7ff) |
| |
|
#define | MPA_UNMARSHAL_VERSION(n) ((n) >> 19 & 0x3) |
| |
|
#define | MPA_UNMARSHAL_LAYER(n) ((n) >> 17 & 0x3) |
| |
|
#define | MPA_UNMARSHAL_PROTECTION(n) ((n) >> 16 & 0x1) |
| |
|
#define | MPA_UNMARSHAL_BITRATE(n) ((n) >> 12 & 0xf) |
| |
|
#define | MPA_UNMARSHAL_FREQUENCY(n) ((n) >> 10 & 0x3) |
| |
|
#define | MPA_UNMARSHAL_PADDING(n) ((n) >> 9 & 0x1) |
| |
|
#define | MPA_UNMARSHAL_PRIVATE(n) ((n) >> 8 & 0x1) |
| |
|
#define | MPA_UNMARSHAL_MODE(n) ((n) >> 6 & 0x3) |
| |
|
#define | MPA_UNMARSHAL_MODEEXT(n) ((n) >> 4 & 0x3) |
| |
|
#define | MPA_UNMARSHAL_COPYRIGHT(n) ((n) >> 3 & 0x1) |
| |
|
#define | MPA_UNMARSHAL_ORIGINAL(n) ((n) >> 2 & 0x1) |
| |
|
#define | MPA_UNMARSHAL_EMPHASIS(n) ((n) >> 0 & 0x3) |
| |
| #define | MPA_UNMARSHAL(mpa, n) |
| |
| #define | MPA_DATA_BYTES(mpa) |
| | Calculates the number of data bytes in an MPEG audio frame.
|
| |
| #define | MPA_BYTES(mpa) (MPA_DATA_BYTES(mpa) + mpa_padding(mpa)) |
| | Calculates the total number of bytes in an MPEG audio frame.
|
| |
| #define | MPA_DURATION_NS(mpa) (1000000000 / mpa_frequency(mpa) * mpa_samples(mpa)) |
| | Calculates the duration of an MPEG audio frame in nanoseconds.
|
| |
| #define | MPA_SYNC_VALID(mpa) ((mpa)->sync == MPA_SYNC) |
| | True if the sync field of an MPEG Audio frame header contains the required 0x7FF sync word.
|
| |
| #define | MPA_VERSION_VALID(mpa) (mpa_version(mpa) >= 0) |
| | True if the MPEG Audio version field encodes a recognised version (i.e. mpa_version() >= 0).
|
| |
| #define | MPA_LAYER_VALID(mpa) (mpa_layer(mpa) >= 0) |
| | True if the MPEG Audio layer field encodes a recognised layer (i.e. mpa_layer() >= 0).
|
| |
| #define | MPA_BITRATE_VALID(mpa) (mpa_bitrate(mpa) > 0) |
| | True if the bitrate index encodes a non-zero, valid bitrate (i.e. mpa_bitrate() > 0).
|
| |
| #define | MPA_FREQUENCY_VALID(mpa) (mpa_frequency(mpa) > 0) |
| | True if the sampling frequency index encodes a valid, non-zero frequency (i.e. mpa_frequency() > 0).
|
| |
| #define | MPA_VALID(mpa) |
| | True if all fields of an MPEG Audio frame header are simultaneously valid.
|
| |
|
| enum | { MPA_SYNC = 0x7ff
} |
| | Required sync word value in the MPEG Audio frame header (all 11 sync bits set). More...
|
| |
|
| WS_DLL_PUBLIC int | mpa_version (const struct mpa *mpa) |
| | Extracts the MPEG audio version from the given header.
|
| |
| WS_DLL_PUBLIC int | mpa_layer (const struct mpa *mpa) |
| | Extracts the MPEG audio layer from the given header.
|
| |
| WS_DLL_PUBLIC unsigned int | mpa_samples (const struct mpa *mpa) |
| | Returns the number of audio samples per frame.
|
| |
| WS_DLL_PUBLIC unsigned int | mpa_bitrate (const struct mpa *mpa) |
| | Extracts the bitrate from the MPEG audio header.
|
| |
| WS_DLL_PUBLIC unsigned int | mpa_frequency (const struct mpa *mpa) |
| | Extracts the sampling frequency from the MPEG audio header.
|
| |
| WS_DLL_PUBLIC unsigned int | mpa_padding (const struct mpa *mpa) |
| | Checks whether padding is present in the MPEG audio frame.
|
| |
| WS_DLL_PUBLIC uint32_t | decode_synchsafe_int (uint32_t val) |
| | Decodes a synchsafe integer from ID3 metadata.
|
| |
MPEG Audio header dissection Written by Shaun Jackman sjack.nosp@m.man@.nosp@m.gmail.nosp@m..com Copyright 2007 Shaun Jackman
Wiretap Library SPDX-License-Identifier: GPL-2.0-or-later
◆ MPA_BITRATE_VALID
| #define MPA_BITRATE_VALID |
( |
|
mpa | ) |
(mpa_bitrate(mpa) > 0) |
True if the bitrate index encodes a non-zero, valid bitrate (i.e. mpa_bitrate() > 0).
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ MPA_BYTES
Calculates the total number of bytes in an MPEG audio frame.
Includes both the audio payload and any padding bytes.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The total number of bytes in the frame.
◆ MPA_DATA_BYTES
| #define MPA_DATA_BYTES |
( |
|
mpa | ) |
|
Value:
WS_DLL_PUBLIC unsigned int mpa_samples(const struct mpa *mpa)
Returns the number of audio samples per frame.
Definition mpeg-audio.c:61
WS_DLL_PUBLIC unsigned int mpa_bitrate(const struct mpa *mpa)
Extracts the bitrate from the MPEG audio header.
Definition mpeg-audio.c:67
WS_DLL_PUBLIC unsigned int mpa_frequency(const struct mpa *mpa)
Extracts the sampling frequency from the MPEG audio header.
Definition mpeg-audio.c:73
Definition mpeg-audio.h:17
Calculates the number of data bytes in an MPEG audio frame.
Computes the size of the audio payload (excluding padding) based on bitrate, sample count, and sampling frequency.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The number of data bytes in the frame.
◆ MPA_DURATION_NS
| #define MPA_DURATION_NS |
( |
|
mpa | ) |
(1000000000 / mpa_frequency(mpa) * mpa_samples(mpa)) |
Calculates the duration of an MPEG audio frame in nanoseconds.
Uses the sample count and sampling frequency to compute the frame duration.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The duration of the frame in nanoseconds.
◆ MPA_FREQUENCY_VALID
| #define MPA_FREQUENCY_VALID |
( |
|
mpa | ) |
(mpa_frequency(mpa) > 0) |
True if the sampling frequency index encodes a valid, non-zero frequency (i.e. mpa_frequency() > 0).
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ MPA_LAYER_VALID
| #define MPA_LAYER_VALID |
( |
|
mpa | ) |
(mpa_layer(mpa) >= 0) |
True if the MPEG Audio layer field encodes a recognised layer (i.e. mpa_layer() >= 0).
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ MPA_SYNC_VALID
True if the sync field of an MPEG Audio frame header contains the required 0x7FF sync word.
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ MPA_UNMARSHAL
| #define MPA_UNMARSHAL |
( |
|
mpa, |
|
|
|
n |
|
) |
| |
Value: do { \
(
mpa)->sync = MPA_UNMARSHAL_SYNC(n); \
(
mpa)->version = MPA_UNMARSHAL_VERSION(n); \
(
mpa)->layer = MPA_UNMARSHAL_LAYER(n); \
(
mpa)->protection = MPA_UNMARSHAL_PROTECTION(n); \
(
mpa)->bitrate = MPA_UNMARSHAL_BITRATE(n); \
(
mpa)->frequency = MPA_UNMARSHAL_FREQUENCY(n); \
(
mpa)->padding = MPA_UNMARSHAL_PADDING(n); \
(
mpa)->priv = MPA_UNMARSHAL_PRIVATE(n); \
(
mpa)->mode = MPA_UNMARSHAL_MODE(n); \
(
mpa)->modeext = MPA_UNMARSHAL_MODEEXT(n); \
(
mpa)->copyright = MPA_UNMARSHAL_COPYRIGHT(n); \
(
mpa)->original = MPA_UNMARSHAL_ORIGINAL(n); \
(
mpa)->emphasis = MPA_UNMARSHAL_EMPHASIS(n); \
} while (0)
◆ MPA_VALID
Value:
#define MPA_FREQUENCY_VALID(mpa)
True if the sampling frequency index encodes a valid, non-zero frequency (i.e. mpa_frequency() > 0).
Definition mpeg-audio.h:203
#define MPA_SYNC_VALID(mpa)
True if the sync field of an MPEG Audio frame header contains the required 0x7FF sync word.
Definition mpeg-audio.h:179
#define MPA_BITRATE_VALID(mpa)
True if the bitrate index encodes a non-zero, valid bitrate (i.e. mpa_bitrate() > 0).
Definition mpeg-audio.h:197
#define MPA_VERSION_VALID(mpa)
True if the MPEG Audio version field encodes a recognised version (i.e. mpa_version() >= 0).
Definition mpeg-audio.h:185
#define MPA_LAYER_VALID(mpa)
True if the MPEG Audio layer field encodes a recognised layer (i.e. mpa_layer() >= 0).
Definition mpeg-audio.h:191
True if all fields of an MPEG Audio frame header are simultaneously valid.
Evaluates to true only when the sync word, version, layer, bitrate, and sampling frequency fields all pass their individual validity checks.
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ MPA_VERSION_VALID
| #define MPA_VERSION_VALID |
( |
|
mpa | ) |
(mpa_version(mpa) >= 0) |
True if the MPEG Audio version field encodes a recognised version (i.e. mpa_version() >= 0).
- Parameters
-
| mpa | Pointer to the MPEG Audio frame header struct. |
◆ anonymous enum
Required sync word value in the MPEG Audio frame header (all 11 sync bits set).
| Enumerator |
|---|
| MPA_SYNC | sync word value
|
◆ decode_synchsafe_int()
| WS_DLL_PUBLIC uint32_t decode_synchsafe_int |
( |
uint32_t |
val | ) |
|
Decodes a synchsafe integer from ID3 metadata.
Converts a 32-bit synchsafe integer (used in ID3v2 tags) to its raw integer value. Synchsafe integers avoid false MPEG syncs by ensuring no byte has all bits set.
- Parameters
-
| val | The synchsafe encoded 32-bit integer. |
- Returns
- The decoded raw integer value.
◆ mpa_bitrate()
| WS_DLL_PUBLIC unsigned int mpa_bitrate |
( |
const struct mpa * |
mpa | ) |
|
Extracts the bitrate from the MPEG audio header.
Parses the header to determine the encoded bitrate in kilobits per second.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The bitrate in kbps.
◆ mpa_frequency()
| WS_DLL_PUBLIC unsigned int mpa_frequency |
( |
const struct mpa * |
mpa | ) |
|
Extracts the sampling frequency from the MPEG audio header.
Parses the header to determine the sample rate in Hz.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The sampling frequency in Hz.
◆ mpa_layer()
| WS_DLL_PUBLIC int mpa_layer |
( |
const struct mpa * |
mpa | ) |
|
Extracts the MPEG audio layer from the given header.
Parses the MPEG audio header and returns the layer identifier (e.g., Layer I, II, III).
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The MPEG layer as an integer code.
◆ mpa_padding()
| WS_DLL_PUBLIC unsigned int mpa_padding |
( |
const struct mpa * |
mpa | ) |
|
Checks whether padding is present in the MPEG audio frame.
Determines if the frame includes padding bits used to adjust frame size.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- 1 if padding is present, 0 otherwise.
◆ mpa_samples()
| WS_DLL_PUBLIC unsigned int mpa_samples |
( |
const struct mpa * |
mpa | ) |
|
Returns the number of audio samples per frame.
Determines the sample count based on MPEG version and layer.
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The number of samples per frame.
◆ mpa_version()
| WS_DLL_PUBLIC int mpa_version |
( |
const struct mpa * |
mpa | ) |
|
Extracts the MPEG audio version from the given header.
Parses the MPEG audio header and returns the version identifier (e.g., MPEG-1, MPEG-2).
- Parameters
-
| mpa | Pointer to the MPEG audio header structure. |
- Returns
- The MPEG version as an integer code.