#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) |
| |
|
#define | MPA_VERSION_VALID(mpa) (mpa_version(mpa) >= 0) |
| |
|
#define | MPA_LAYER_VALID(mpa) (mpa_layer(mpa) >= 0) |
| |
|
#define | MPA_BITRATE_VALID(mpa) (mpa_bitrate(mpa) > 0) |
| |
|
#define | MPA_FREQUENCY_VALID(mpa) (mpa_frequency(mpa) > 0) |
| |
| #define | MPA_VALID(mpa) |
| |
|
| enum | { MPA_SYNC = 0x7ff
} |
| |
|
| 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_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_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:
&& MPA_VERSION_VALID(
mpa) && MPA_LAYER_VALID(
mpa) \
&& MPA_BITRATE_VALID(
mpa) && MPA_FREQUENCY_VALID(
mpa))
◆ 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.