FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Macros | Functions | Variables
mp3dec.c File Reference
#include "libavutil/opt.h"
#include "libavutil/avstring.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/crc.h"
#include "libavutil/dict.h"
#include "libavutil/mathematics.h"
#include "avformat.h"
#include "internal.h"
#include "avio_internal.h"
#include "id3v2.h"
#include "id3v1.h"
#include "replaygain.h"
#include "libavcodec/mpegaudiodecheader.h"

Go to the source code of this file.

Data Structures

struct  MP3DecContext
 

Macros

#define XING_FLAG_FRAMES   0x01
 
#define XING_FLAG_SIZE   0x02
 
#define XING_FLAG_TOC   0x04
 
#define XING_TOC_COUNT   100
 
#define LAST_BITS(k, n)   ((k) & ((1 << (n)) - 1))
 
#define MIDDLE_BITS(k, m, n)   LAST_BITS((k) >> (m), ((n) - (m)))
 
#define MP3_PACKET_SIZE   1024
 
#define MIN_VALID   3
 

Functions

static int mp3_read_probe (AVProbeData *p)
 
static void read_xing_toc (AVFormatContext *s, int64_t filesize, int64_t duration)
 
static void mp3_parse_info_tag (AVFormatContext *s, AVStream *st, MPADecodeHeader *c, uint32_t spf)
 
static void mp3_parse_vbri_tag (AVFormatContext *s, AVStream *st, int64_t base)
 
static int mp3_parse_vbr_tags (AVFormatContext *s, AVStream *st, int64_t base)
 Try to find Xing/Info/VBRI tags and compute duration from info therein.
 
static int mp3_read_header (AVFormatContext *s)
 
static int mp3_read_packet (AVFormatContext *s, AVPacket *pkt)
 
static int check (AVFormatContext *s, int64_t pos)
 
static int mp3_seek (AVFormatContext *s, int stream_index, int64_t timestamp, int flags)
 

Variables

static const AVOption options []
 
static const AVClass demuxer_class
 
AVInputFormat ff_mp3_demuxer
 

Macro Definition Documentation

#define XING_FLAG_FRAMES   0x01

Definition at line 37 of file mp3dec.c.

Referenced by mp3_parse_info_tag().

#define XING_FLAG_SIZE   0x02

Definition at line 38 of file mp3dec.c.

Referenced by mp3_parse_info_tag().

#define XING_FLAG_TOC   0x04

Definition at line 39 of file mp3dec.c.

Referenced by mp3_parse_info_tag().

#define XING_TOC_COUNT   100

Definition at line 41 of file mp3dec.c.

Referenced by read_xing_toc().

#define LAST_BITS (   k,
  n 
)    ((k) & ((1 << (n)) - 1))
#define MIDDLE_BITS (   k,
  m,
  n 
)    LAST_BITS((k) >> (m), ((n) - (m)))
#define MP3_PACKET_SIZE   1024

Definition at line 356 of file mp3dec.c.

Referenced by mp3_read_packet().

#define MIN_VALID   3

Referenced by mp3_seek().

Function Documentation

static int mp3_read_probe ( AVProbeData p)
static

Definition at line 57 of file mp3dec.c.

static void read_xing_toc ( AVFormatContext s,
int64_t  filesize,
int64_t  duration 
)
static

Definition at line 101 of file mp3dec.c.

Referenced by mp3_parse_info_tag().

static void mp3_parse_info_tag ( AVFormatContext s,
AVStream st,
MPADecodeHeader c,
uint32_t  spf 
)
static

Definition at line 125 of file mp3dec.c.

Referenced by mp3_parse_vbr_tags().

static void mp3_parse_vbri_tag ( AVFormatContext s,
AVStream st,
int64_t  base 
)
static

Definition at line 254 of file mp3dec.c.

Referenced by mp3_parse_vbr_tags().

static int mp3_parse_vbr_tags ( AVFormatContext s,
AVStream st,
int64_t  base 
)
static

Try to find Xing/Info/VBRI tags and compute duration from info therein.

Definition at line 276 of file mp3dec.c.

Referenced by mp3_read_header().

static int mp3_read_header ( AVFormatContext s)
static

Definition at line 317 of file mp3dec.c.

static int mp3_read_packet ( AVFormatContext s,
AVPacket pkt 
)
static

Definition at line 358 of file mp3dec.c.

static int check ( AVFormatContext s,
int64_t  pos 
)
static

Definition at line 389 of file mp3dec.c.

Referenced by mp3_seek().

static int mp3_seek ( AVFormatContext s,
int  stream_index,
int64_t  timestamp,
int  flags 
)
static

Definition at line 404 of file mp3dec.c.

Variable Documentation

const AVOption options[]
static
Initial value:
= {
{ "usetoc", "use table of contents", 0x42, AV_OPT_TYPE_INT, {.i64 = -1}, -1, 1, AV_OPT_FLAG_DECODING_PARAM},
{ NULL },
}

Definition at line 468 of file mp3dec.c.

const AVClass demuxer_class
static
Initial value:
= {
.class_name = "mp3",
.item_name = av_default_item_name,
.option = options,
}

Definition at line 473 of file mp3dec.c.

AVInputFormat ff_mp3_demuxer
Initial value:
= {
.name = "mp3",
.long_name = NULL_IF_CONFIG_SMALL("MP2/3 (MPEG audio layer 2/3)"),
.read_probe = mp3_read_probe,
.read_header = mp3_read_header,
.read_packet = mp3_read_packet,
.read_seek = mp3_seek,
.priv_data_size = sizeof(MP3DecContext),
.extensions = "mp2,mp3,m2a,mpa",
.priv_class = &demuxer_class,
}

Definition at line 481 of file mp3dec.c.