libavformat/oma.c File Reference
This is a demuxer for Sony OpenMG Music files.
More...
#include "avformat.h"
#include "internal.h"
#include "libavutil/intreadwrite.h"
#include "libavutil/des.h"
#include "pcm.h"
#include "riff.h"
#include "id3v2.h"
Go to the source code of this file.
|
Data Structures |
struct | OMAContext |
Defines |
#define | EA3_HEADER_SIZE 96 |
#define | ID3v2_EA3_MAGIC "ea3" |
#define | OMA_ENC_HEADER_SIZE 16 |
Enumerations |
enum | {
OMA_CODECID_ATRAC3 = 0,
OMA_CODECID_ATRAC3P = 1,
OMA_CODECID_MP3 = 3,
OMA_CODECID_LPCM = 4,
OMA_CODECID_WMA = 5
} |
Functions |
static void | hex_log (AVFormatContext *s, int level, const char *name, const uint8_t *value, int len) |
static int | kset (AVFormatContext *s, const uint8_t *r_val, const uint8_t *n_val, int len) |
static int | rprobe (AVFormatContext *s, uint8_t *enc_header, const uint8_t *r_val) |
static int | nprobe (AVFormatContext *s, uint8_t *enc_header, int size, const uint8_t *n_val) |
static int | decrypt_init (AVFormatContext *s, ID3v2ExtraMeta *em, uint8_t *header) |
static int | oma_read_header (AVFormatContext *s, AVFormatParameters *ap) |
static int | oma_read_packet (AVFormatContext *s, AVPacket *pkt) |
static int | oma_read_probe (AVProbeData *p) |
static int | oma_read_seek (struct AVFormatContext *s, int stream_index, int64_t timestamp, int flags) |
Variables |
static const AVCodecTag | codec_oma_tags [] |
static const uint64_t | leaf_table [] |
AVInputFormat | ff_oma_demuxer |
Detailed Description
This is a demuxer for Sony OpenMG Music files.
Known file extensions: ".oma", "aa3" The format of such files consists of three parts:
- "ea3" header carrying overall info and metadata. Except for starting with "ea" instead of "ID", it's an ID3v2 header.
- "EA3" header is a Sony-specific header containing information about the OpenMG file: codec type (usually ATRAC, can also be MP3 or WMA), codec specific info (packet size, sample rate, channels and so on) and DRM related info (file encryption, content id).
- Sound data organized in packets follow the EA3 header (can be encrypted using the Sony DRM!).
CODEC SUPPORT: Only ATRAC3 codec is currently supported!
Definition in file oma.c.
Define Documentation
#define EA3_HEADER_SIZE 96 |
#define ID3v2_EA3_MAGIC "ea3" |
#define OMA_ENC_HEADER_SIZE 16 |
Enumeration Type Documentation
- Enumerator:
-
OMA_CODECID_ATRAC3 |
|
OMA_CODECID_ATRAC3P |
|
OMA_CODECID_MP3 |
|
OMA_CODECID_LPCM |
|
OMA_CODECID_WMA |
|
Definition at line 55 of file oma.c.
Function Documentation
static void hex_log |
( |
AVFormatContext * |
s, |
|
|
int |
level, |
|
|
const char * |
name, |
|
|
const uint8_t * |
value, |
|
|
int |
len | |
|
) |
| | [static] |
static int kset |
( |
AVFormatContext * |
s, |
|
|
const uint8_t * |
r_val, |
|
|
const uint8_t * |
n_val, |
|
|
int |
len | |
|
) |
| | [static] |
static int nprobe |
( |
AVFormatContext * |
s, |
|
|
uint8_t * |
enc_header, |
|
|
int |
size, |
|
|
const uint8_t * |
n_val | |
|
) |
| | [static] |
static int oma_read_seek |
( |
struct AVFormatContext * |
s, |
|
|
int |
stream_index, |
|
|
int64_t |
timestamp, |
|
|
int |
flags | |
|
) |
| | [static] |
static int rprobe |
( |
AVFormatContext * |
s, |
|
|
uint8_t * |
enc_header, |
|
|
const uint8_t * |
r_val | |
|
) |
| | [static] |
Variable Documentation
Initial value:
Definition at line 63 of file oma.c.
Initial value:
{
.name = "oma",
.long_name = NULL_IF_CONFIG_SMALL("Sony OpenMG audio"),
.priv_data_size = sizeof(OMAContext),
.read_probe = oma_read_probe,
.read_header = oma_read_header,
.read_packet = oma_read_packet,
.read_seek = oma_read_seek,
.flags = AVFMT_GENERIC_INDEX,
.extensions = "oma,omg,aa3",
.codec_tag = (const AVCodecTag* const []){codec_oma_tags, 0},
}
Definition at line 455 of file oma.c.
Initial value:
{
0xd79e8283acea4620, 0x7a9762f445afd0d8,
0x354d60a60b8c79f1, 0x584e1cde00b07aee,
0x1573cd93da7df623, 0x47f98d79620dd535
}
Definition at line 70 of file oma.c.