#define MAX_PAGE_SIZE 65307
#define DECODER_BUFFER_SIZE MAX_PAGE_SIZE
-static const ogg_codec_t * const ogg_codecs[] = {
+static const struct ogg_codec * const ogg_codecs[] = {
&ff_speex_codec,
&ff_vorbis_codec,
&ff_theora_codec,
static int
ogg_save (AVFormatContext * s)
{
- ogg_t *ogg = s->priv_data;
- ogg_state_t *ost =
+ struct ogg *ogg = s->priv_data;
+ struct ogg_state *ost =
av_malloc(sizeof (*ost) + (ogg->nstreams-1) * sizeof (*ogg->streams));
int i;
ost->pos = url_ftell (s->pb);
memcpy(ost->streams, ogg->streams, ogg->nstreams * sizeof(*ogg->streams));
for (i = 0; i < ogg->nstreams; i++){
- ogg_stream_t *os = ogg->streams + i;
+ struct ogg_stream *os = ogg->streams + i;
os->buf = av_malloc (os->bufsize);
memset (os->buf, 0, os->bufsize);
memcpy (os->buf, ost->streams[i].buf, os->bufpos);
static int
ogg_restore (AVFormatContext * s, int discard)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
ByteIOContext *bc = s->pb;
- ogg_state_t *ost = ogg->state;
+ struct ogg_state *ost = ogg->state;
int i;
if (!ost)
}
static int
-ogg_reset (ogg_t * ogg)
+ogg_reset (struct ogg * ogg)
{
int i;
for (i = 0; i < ogg->nstreams; i++){
- ogg_stream_t *os = ogg->streams + i;
+ struct ogg_stream *os = ogg->streams + i;
os->bufpos = 0;
os->pstart = 0;
os->psize = 0;
return 0;
}
-static const ogg_codec_t *
+static const struct ogg_codec *
ogg_find_codec (uint8_t * buf, int size)
{
int i;
}
static int
-ogg_find_stream (ogg_t * ogg, int serial)
+ogg_find_stream (struct ogg * ogg, int serial)
{
int i;
ogg_new_stream (AVFormatContext * s, uint32_t serial)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
int idx = ogg->nstreams++;
AVStream *st;
- ogg_stream_t *os;
+ struct ogg_stream *os;
ogg->streams = av_realloc (ogg->streams,
ogg->nstreams * sizeof (*ogg->streams));
}
static int
-ogg_new_buf(ogg_t *ogg, int idx)
+ogg_new_buf(struct ogg *ogg, int idx)
{
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg_stream *os = ogg->streams + idx;
uint8_t *nb = av_malloc(os->bufsize);
int size = os->bufpos - os->pstart;
if(os->buf){
ogg_read_page (AVFormatContext * s, int *str)
{
ByteIOContext *bc = s->pb;
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os;
int i = 0;
int flags, nsegs;
uint64_t gp;
static int
ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
int idx;
- ogg_stream_t *os;
+ struct ogg_stream *os;
int complete = 0;
int segp = 0, psize = 0;
static int
ogg_get_headers (AVFormatContext * s)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
do{
if (ogg_packet (s, NULL, NULL, NULL) < 0)
static uint64_t
ogg_gptopts (AVFormatContext * s, int i, uint64_t gp)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + i;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + i;
uint64_t pts = AV_NOPTS_VALUE;
if(os->codec->gptopts){
static int
ogg_get_length (AVFormatContext * s)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
int idx = -1, i;
int64_t size, end;
static int
ogg_read_header (AVFormatContext * s, AVFormatParameters * ap)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
ogg->curidx = -1;
//linear headers seek from start
if (ogg_get_headers (s) < 0){
static int
ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
{
- ogg_t *ogg;
- ogg_stream_t *os;
+ struct ogg *ogg;
+ struct ogg_stream *os;
int idx = -1;
int pstart, psize;
static int
ogg_read_close (AVFormatContext * s)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
int i;
for (i = 0; i < ogg->nstreams; i++){
ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg,
int64_t pos_limit)
{
- ogg_t *ogg = s->priv_data;
+ struct ogg *ogg = s->priv_data;
ByteIOContext *bc = s->pb;
int64_t pts = AV_NOPTS_VALUE;
int i;
AVInputFormat ogg_demuxer = {
"ogg",
NULL_IF_CONFIG_SMALL("Ogg"),
- sizeof (ogg_t),
+ sizeof (struct ogg),
ogg_probe,
ogg_read_header,
ogg_read_packet,
#include "avformat.h"
-typedef struct ogg_codec {
+struct ogg_codec {
const int8_t *magic;
uint8_t magicsize;
const int8_t *name;
int (*header)(AVFormatContext *, int);
int (*packet)(AVFormatContext *, int);
uint64_t (*gptopts)(AVFormatContext *, int, uint64_t);
-} ogg_codec_t;
+};
-typedef struct ogg_stream {
+struct ogg_stream {
uint8_t *buf;
unsigned int bufsize;
unsigned int bufpos;
uint32_t seq;
uint64_t granule, lastgp;
int flags;
- ogg_codec_t *codec;
+ struct ogg_codec *codec;
int header;
int nsegs, segp;
uint8_t segments[255];
void *private;
-} ogg_stream_t;
+};
-typedef struct ogg_state {
+struct ogg_state {
uint64_t pos;
int curidx;
struct ogg_state *next;
int nstreams;
- ogg_stream_t streams[1];
-} ogg_state_t;
+ struct ogg_stream streams[1];
+};
-typedef struct ogg {
- ogg_stream_t *streams;
+struct ogg {
+ struct ogg_stream *streams;
int nstreams;
int headers;
int curidx;
uint64_t size;
- ogg_state_t *state;
-} ogg_t;
+ struct ogg_state *state;
+};
#define OGG_FLAG_CONT 1
#define OGG_FLAG_BOS 2
#define OGG_FLAG_EOS 4
-extern const ogg_codec_t ff_flac_codec;
-extern const ogg_codec_t ff_ogm_audio_codec;
-extern const ogg_codec_t ff_ogm_old_codec;
-extern const ogg_codec_t ff_ogm_text_codec;
-extern const ogg_codec_t ff_ogm_video_codec;
-extern const ogg_codec_t ff_old_flac_codec;
-extern const ogg_codec_t ff_speex_codec;
-extern const ogg_codec_t ff_theora_codec;
-extern const ogg_codec_t ff_vorbis_codec;
+extern const struct ogg_codec ff_flac_codec;
+extern const struct ogg_codec ff_ogm_audio_codec;
+extern const struct ogg_codec ff_ogm_old_codec;
+extern const struct ogg_codec ff_ogm_text_codec;
+extern const struct ogg_codec ff_ogm_video_codec;
+extern const struct ogg_codec ff_old_flac_codec;
+extern const struct ogg_codec ff_speex_codec;
+extern const struct ogg_codec ff_theora_codec;
+extern const struct ogg_codec ff_vorbis_codec;
extern int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
static int
flac_header (AVFormatContext * s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
GetBitContext gb;
int mdt;
return 0;
}
-const ogg_codec_t ff_flac_codec = {
+const struct ogg_codec ff_flac_codec = {
.magic = "\177FLAC",
.magicsize = 5,
.header = flac_header
};
-const ogg_codec_t ff_old_flac_codec = {
+const struct ogg_codec ff_old_flac_codec = {
.magic = "fLaC",
.magicsize = 4,
.header = old_flac_header
static int
ogm_header(AVFormatContext *s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
const uint8_t *p = os->buf + os->pstart;
uint64_t time_unit;
static int
ogm_dshow_header(AVFormatContext *s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
uint8_t *p = os->buf + os->pstart;
uint32_t t;
static int
ogm_packet(AVFormatContext *s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
uint8_t *p = os->buf + os->pstart;
int lb;
return 0;
}
-const ogg_codec_t ff_ogm_video_codec = {
+const struct ogg_codec ff_ogm_video_codec = {
.magic = "\001video",
.magicsize = 6,
.header = ogm_header,
.packet = ogm_packet
};
-const ogg_codec_t ff_ogm_audio_codec = {
+const struct ogg_codec ff_ogm_audio_codec = {
.magic = "\001audio",
.magicsize = 6,
.header = ogm_header,
.packet = ogm_packet
};
-const ogg_codec_t ff_ogm_text_codec = {
+const struct ogg_codec ff_ogm_text_codec = {
.magic = "\001text",
.magicsize = 5,
.header = ogm_header,
.packet = ogm_packet
};
-const ogg_codec_t ff_ogm_old_codec = {
+const struct ogg_codec ff_ogm_old_codec = {
.magic = "\001Direct Show Samples embedded in Ogg",
.magicsize = 35,
.header = ogm_dshow_header,
#include "oggdec.h"
static int speex_header(AVFormatContext *s, int idx) {
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
uint8_t *p = os->buf + os->pstart;
return 0;
}
-const ogg_codec_t ff_speex_codec = {
+const struct ogg_codec ff_speex_codec = {
.magic = "Speex ",
.magicsize = 8,
.header = speex_header
#include "avformat.h"
#include "oggdec.h"
-typedef struct theora_params {
+struct theora_params {
int gpshift;
int gpmask;
-} theora_params_t;
+};
static int
theora_header (AVFormatContext * s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
- theora_params_t *thp = os->private;
+ struct theora_params *thp = os->private;
int cds = st->codec->extradata_size + os->psize + 2;
uint8_t *cdp;
static uint64_t
theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp)
{
- ogg_t *ogg = ctx->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
- theora_params_t *thp = os->private;
+ struct ogg *ogg = ctx->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
+ struct theora_params *thp = os->private;
uint64_t iframe = gp >> thp->gpshift;
uint64_t pframe = gp & thp->gpmask;
return iframe + pframe;
}
-const ogg_codec_t ff_theora_codec = {
+const struct ogg_codec ff_theora_codec = {
.magic = "\200theora",
.magicsize = 7,
.header = theora_header,
* [framing_flag] = read one bit | Not Used
* */
-typedef struct {
+struct oggvorbis_private {
unsigned int len[3];
unsigned char *packet[3];
-} oggvorbis_private_t;
+};
static unsigned int
-fixup_vorbis_headers(AVFormatContext * as, oggvorbis_private_t *priv,
+fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
uint8_t **buf)
{
int i,offset, len;
static int
vorbis_header (AVFormatContext * s, int idx)
{
- ogg_t *ogg = s->priv_data;
- ogg_stream_t *os = ogg->streams + idx;
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
AVStream *st = s->streams[idx];
- oggvorbis_private_t *priv;
+ struct oggvorbis_private *priv;
if (os->seq > 2)
return 0;
if (os->seq == 0) {
- os->private = av_mallocz(sizeof(oggvorbis_private_t));
+ os->private = av_mallocz(sizeof(struct oggvorbis_private));
if (!os->private)
return 0;
}
return os->seq < 3;
}
-const ogg_codec_t ff_vorbis_codec = {
+const struct ogg_codec ff_vorbis_codec = {
.magic = "\001vorbis",
.magicsize = 7,
.header = vorbis_header