mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
OGG: untypedef demuxer structs
Originally committed as revision 15784 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
d00e8b83f1
commit
77be08eeb1
@ -37,7 +37,7 @@
|
|||||||
#define MAX_PAGE_SIZE 65307
|
#define MAX_PAGE_SIZE 65307
|
||||||
#define DECODER_BUFFER_SIZE MAX_PAGE_SIZE
|
#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_speex_codec,
|
||||||
&ff_vorbis_codec,
|
&ff_vorbis_codec,
|
||||||
&ff_theora_codec,
|
&ff_theora_codec,
|
||||||
@ -54,8 +54,8 @@ static const ogg_codec_t * const ogg_codecs[] = {
|
|||||||
static int
|
static int
|
||||||
ogg_save (AVFormatContext * s)
|
ogg_save (AVFormatContext * s)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_state_t *ost =
|
struct ogg_state *ost =
|
||||||
av_malloc(sizeof (*ost) + (ogg->nstreams-1) * sizeof (*ogg->streams));
|
av_malloc(sizeof (*ost) + (ogg->nstreams-1) * sizeof (*ogg->streams));
|
||||||
int i;
|
int i;
|
||||||
ost->pos = url_ftell (s->pb);
|
ost->pos = url_ftell (s->pb);
|
||||||
@ -65,7 +65,7 @@ ogg_save (AVFormatContext * s)
|
|||||||
memcpy(ost->streams, ogg->streams, ogg->nstreams * sizeof(*ogg->streams));
|
memcpy(ost->streams, ogg->streams, ogg->nstreams * sizeof(*ogg->streams));
|
||||||
|
|
||||||
for (i = 0; i < ogg->nstreams; i++){
|
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);
|
os->buf = av_malloc (os->bufsize);
|
||||||
memset (os->buf, 0, os->bufsize);
|
memset (os->buf, 0, os->bufsize);
|
||||||
memcpy (os->buf, ost->streams[i].buf, os->bufpos);
|
memcpy (os->buf, ost->streams[i].buf, os->bufpos);
|
||||||
@ -79,9 +79,9 @@ ogg_save (AVFormatContext * s)
|
|||||||
static int
|
static int
|
||||||
ogg_restore (AVFormatContext * s, int discard)
|
ogg_restore (AVFormatContext * s, int discard)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ByteIOContext *bc = s->pb;
|
ByteIOContext *bc = s->pb;
|
||||||
ogg_state_t *ost = ogg->state;
|
struct ogg_state *ost = ogg->state;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
if (!ost)
|
if (!ost)
|
||||||
@ -106,12 +106,12 @@ ogg_restore (AVFormatContext * s, int discard)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ogg_reset (ogg_t * ogg)
|
ogg_reset (struct ogg * ogg)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < ogg->nstreams; 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->bufpos = 0;
|
||||||
os->pstart = 0;
|
os->pstart = 0;
|
||||||
os->psize = 0;
|
os->psize = 0;
|
||||||
@ -126,7 +126,7 @@ ogg_reset (ogg_t * ogg)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static const ogg_codec_t *
|
static const struct ogg_codec *
|
||||||
ogg_find_codec (uint8_t * buf, int size)
|
ogg_find_codec (uint8_t * buf, int size)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
@ -140,7 +140,7 @@ ogg_find_codec (uint8_t * buf, int size)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ogg_find_stream (ogg_t * ogg, int serial)
|
ogg_find_stream (struct ogg * ogg, int serial)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
@ -155,10 +155,10 @@ static int
|
|||||||
ogg_new_stream (AVFormatContext * s, uint32_t serial)
|
ogg_new_stream (AVFormatContext * s, uint32_t serial)
|
||||||
{
|
{
|
||||||
|
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
int idx = ogg->nstreams++;
|
int idx = ogg->nstreams++;
|
||||||
AVStream *st;
|
AVStream *st;
|
||||||
ogg_stream_t *os;
|
struct ogg_stream *os;
|
||||||
|
|
||||||
ogg->streams = av_realloc (ogg->streams,
|
ogg->streams = av_realloc (ogg->streams,
|
||||||
ogg->nstreams * sizeof (*ogg->streams));
|
ogg->nstreams * sizeof (*ogg->streams));
|
||||||
@ -179,9 +179,9 @@ ogg_new_stream (AVFormatContext * s, uint32_t serial)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static int
|
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);
|
uint8_t *nb = av_malloc(os->bufsize);
|
||||||
int size = os->bufpos - os->pstart;
|
int size = os->bufpos - os->pstart;
|
||||||
if(os->buf){
|
if(os->buf){
|
||||||
@ -199,8 +199,8 @@ static int
|
|||||||
ogg_read_page (AVFormatContext * s, int *str)
|
ogg_read_page (AVFormatContext * s, int *str)
|
||||||
{
|
{
|
||||||
ByteIOContext *bc = s->pb;
|
ByteIOContext *bc = s->pb;
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os;
|
struct ogg_stream *os;
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int flags, nsegs;
|
int flags, nsegs;
|
||||||
uint64_t gp;
|
uint64_t gp;
|
||||||
@ -302,9 +302,9 @@ ogg_read_page (AVFormatContext * s, int *str)
|
|||||||
static int
|
static int
|
||||||
ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
|
ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
int idx;
|
int idx;
|
||||||
ogg_stream_t *os;
|
struct ogg_stream *os;
|
||||||
int complete = 0;
|
int complete = 0;
|
||||||
int segp = 0, psize = 0;
|
int segp = 0, psize = 0;
|
||||||
|
|
||||||
@ -402,7 +402,7 @@ ogg_packet (AVFormatContext * s, int *str, int *dstart, int *dsize)
|
|||||||
static int
|
static int
|
||||||
ogg_get_headers (AVFormatContext * s)
|
ogg_get_headers (AVFormatContext * s)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
|
|
||||||
do{
|
do{
|
||||||
if (ogg_packet (s, NULL, NULL, NULL) < 0)
|
if (ogg_packet (s, NULL, NULL, NULL) < 0)
|
||||||
@ -419,8 +419,8 @@ ogg_get_headers (AVFormatContext * s)
|
|||||||
static uint64_t
|
static uint64_t
|
||||||
ogg_gptopts (AVFormatContext * s, int i, uint64_t gp)
|
ogg_gptopts (AVFormatContext * s, int i, uint64_t gp)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + i;
|
struct ogg_stream *os = ogg->streams + i;
|
||||||
uint64_t pts = AV_NOPTS_VALUE;
|
uint64_t pts = AV_NOPTS_VALUE;
|
||||||
|
|
||||||
if(os->codec->gptopts){
|
if(os->codec->gptopts){
|
||||||
@ -436,7 +436,7 @@ ogg_gptopts (AVFormatContext * s, int i, uint64_t gp)
|
|||||||
static int
|
static int
|
||||||
ogg_get_length (AVFormatContext * s)
|
ogg_get_length (AVFormatContext * s)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
int idx = -1, i;
|
int idx = -1, i;
|
||||||
int64_t size, end;
|
int64_t size, end;
|
||||||
|
|
||||||
@ -476,7 +476,7 @@ ogg_get_length (AVFormatContext * s)
|
|||||||
static int
|
static int
|
||||||
ogg_read_header (AVFormatContext * s, AVFormatParameters * ap)
|
ogg_read_header (AVFormatContext * s, AVFormatParameters * ap)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg->curidx = -1;
|
ogg->curidx = -1;
|
||||||
//linear headers seek from start
|
//linear headers seek from start
|
||||||
if (ogg_get_headers (s) < 0){
|
if (ogg_get_headers (s) < 0){
|
||||||
@ -494,8 +494,8 @@ ogg_read_header (AVFormatContext * s, AVFormatParameters * ap)
|
|||||||
static int
|
static int
|
||||||
ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
|
ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
|
||||||
{
|
{
|
||||||
ogg_t *ogg;
|
struct ogg *ogg;
|
||||||
ogg_stream_t *os;
|
struct ogg_stream *os;
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
int pstart, psize;
|
int pstart, psize;
|
||||||
|
|
||||||
@ -527,7 +527,7 @@ ogg_read_packet (AVFormatContext * s, AVPacket * pkt)
|
|||||||
static int
|
static int
|
||||||
ogg_read_close (AVFormatContext * s)
|
ogg_read_close (AVFormatContext * s)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
for (i = 0; i < ogg->nstreams; i++){
|
for (i = 0; i < ogg->nstreams; i++){
|
||||||
@ -543,7 +543,7 @@ static int64_t
|
|||||||
ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg,
|
ogg_read_timestamp (AVFormatContext * s, int stream_index, int64_t * pos_arg,
|
||||||
int64_t pos_limit)
|
int64_t pos_limit)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ByteIOContext *bc = s->pb;
|
ByteIOContext *bc = s->pb;
|
||||||
int64_t pts = AV_NOPTS_VALUE;
|
int64_t pts = AV_NOPTS_VALUE;
|
||||||
int i;
|
int i;
|
||||||
@ -575,7 +575,7 @@ static int ogg_probe(AVProbeData *p)
|
|||||||
AVInputFormat ogg_demuxer = {
|
AVInputFormat ogg_demuxer = {
|
||||||
"ogg",
|
"ogg",
|
||||||
NULL_IF_CONFIG_SMALL("Ogg"),
|
NULL_IF_CONFIG_SMALL("Ogg"),
|
||||||
sizeof (ogg_t),
|
sizeof (struct ogg),
|
||||||
ogg_probe,
|
ogg_probe,
|
||||||
ogg_read_header,
|
ogg_read_header,
|
||||||
ogg_read_packet,
|
ogg_read_packet,
|
||||||
|
@ -27,16 +27,16 @@
|
|||||||
|
|
||||||
#include "avformat.h"
|
#include "avformat.h"
|
||||||
|
|
||||||
typedef struct ogg_codec {
|
struct ogg_codec {
|
||||||
const int8_t *magic;
|
const int8_t *magic;
|
||||||
uint8_t magicsize;
|
uint8_t magicsize;
|
||||||
const int8_t *name;
|
const int8_t *name;
|
||||||
int (*header)(AVFormatContext *, int);
|
int (*header)(AVFormatContext *, int);
|
||||||
int (*packet)(AVFormatContext *, int);
|
int (*packet)(AVFormatContext *, int);
|
||||||
uint64_t (*gptopts)(AVFormatContext *, int, uint64_t);
|
uint64_t (*gptopts)(AVFormatContext *, int, uint64_t);
|
||||||
} ogg_codec_t;
|
};
|
||||||
|
|
||||||
typedef struct ogg_stream {
|
struct ogg_stream {
|
||||||
uint8_t *buf;
|
uint8_t *buf;
|
||||||
unsigned int bufsize;
|
unsigned int bufsize;
|
||||||
unsigned int bufpos;
|
unsigned int bufpos;
|
||||||
@ -47,43 +47,43 @@ typedef struct ogg_stream {
|
|||||||
uint32_t seq;
|
uint32_t seq;
|
||||||
uint64_t granule, lastgp;
|
uint64_t granule, lastgp;
|
||||||
int flags;
|
int flags;
|
||||||
ogg_codec_t *codec;
|
struct ogg_codec *codec;
|
||||||
int header;
|
int header;
|
||||||
int nsegs, segp;
|
int nsegs, segp;
|
||||||
uint8_t segments[255];
|
uint8_t segments[255];
|
||||||
void *private;
|
void *private;
|
||||||
} ogg_stream_t;
|
};
|
||||||
|
|
||||||
typedef struct ogg_state {
|
struct ogg_state {
|
||||||
uint64_t pos;
|
uint64_t pos;
|
||||||
int curidx;
|
int curidx;
|
||||||
struct ogg_state *next;
|
struct ogg_state *next;
|
||||||
int nstreams;
|
int nstreams;
|
||||||
ogg_stream_t streams[1];
|
struct ogg_stream streams[1];
|
||||||
} ogg_state_t;
|
};
|
||||||
|
|
||||||
typedef struct ogg {
|
struct ogg {
|
||||||
ogg_stream_t *streams;
|
struct ogg_stream *streams;
|
||||||
int nstreams;
|
int nstreams;
|
||||||
int headers;
|
int headers;
|
||||||
int curidx;
|
int curidx;
|
||||||
uint64_t size;
|
uint64_t size;
|
||||||
ogg_state_t *state;
|
struct ogg_state *state;
|
||||||
} ogg_t;
|
};
|
||||||
|
|
||||||
#define OGG_FLAG_CONT 1
|
#define OGG_FLAG_CONT 1
|
||||||
#define OGG_FLAG_BOS 2
|
#define OGG_FLAG_BOS 2
|
||||||
#define OGG_FLAG_EOS 4
|
#define OGG_FLAG_EOS 4
|
||||||
|
|
||||||
extern const ogg_codec_t ff_flac_codec;
|
extern const struct ogg_codec ff_flac_codec;
|
||||||
extern const ogg_codec_t ff_ogm_audio_codec;
|
extern const struct ogg_codec ff_ogm_audio_codec;
|
||||||
extern const ogg_codec_t ff_ogm_old_codec;
|
extern const struct ogg_codec ff_ogm_old_codec;
|
||||||
extern const ogg_codec_t ff_ogm_text_codec;
|
extern const struct ogg_codec ff_ogm_text_codec;
|
||||||
extern const ogg_codec_t ff_ogm_video_codec;
|
extern const struct ogg_codec ff_ogm_video_codec;
|
||||||
extern const ogg_codec_t ff_old_flac_codec;
|
extern const struct ogg_codec ff_old_flac_codec;
|
||||||
extern const ogg_codec_t ff_speex_codec;
|
extern const struct ogg_codec ff_speex_codec;
|
||||||
extern const ogg_codec_t ff_theora_codec;
|
extern const struct ogg_codec ff_theora_codec;
|
||||||
extern const ogg_codec_t ff_vorbis_codec;
|
extern const struct ogg_codec ff_vorbis_codec;
|
||||||
|
|
||||||
extern int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
|
extern int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
|
||||||
|
|
||||||
|
@ -28,8 +28,8 @@
|
|||||||
static int
|
static int
|
||||||
flac_header (AVFormatContext * s, int idx)
|
flac_header (AVFormatContext * s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
GetBitContext gb;
|
GetBitContext gb;
|
||||||
int mdt;
|
int mdt;
|
||||||
@ -85,13 +85,13 @@ old_flac_header (AVFormatContext * s, int idx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ogg_codec_t ff_flac_codec = {
|
const struct ogg_codec ff_flac_codec = {
|
||||||
.magic = "\177FLAC",
|
.magic = "\177FLAC",
|
||||||
.magicsize = 5,
|
.magicsize = 5,
|
||||||
.header = flac_header
|
.header = flac_header
|
||||||
};
|
};
|
||||||
|
|
||||||
const ogg_codec_t ff_old_flac_codec = {
|
const struct ogg_codec ff_old_flac_codec = {
|
||||||
.magic = "fLaC",
|
.magic = "fLaC",
|
||||||
.magicsize = 4,
|
.magicsize = 4,
|
||||||
.header = old_flac_header
|
.header = old_flac_header
|
||||||
|
@ -33,8 +33,8 @@
|
|||||||
static int
|
static int
|
||||||
ogm_header(AVFormatContext *s, int idx)
|
ogm_header(AVFormatContext *s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
const uint8_t *p = os->buf + os->pstart;
|
const uint8_t *p = os->buf + os->pstart;
|
||||||
uint64_t time_unit;
|
uint64_t time_unit;
|
||||||
@ -100,8 +100,8 @@ ogm_header(AVFormatContext *s, int idx)
|
|||||||
static int
|
static int
|
||||||
ogm_dshow_header(AVFormatContext *s, int idx)
|
ogm_dshow_header(AVFormatContext *s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
uint8_t *p = os->buf + os->pstart;
|
uint8_t *p = os->buf + os->pstart;
|
||||||
uint32_t t;
|
uint32_t t;
|
||||||
@ -134,8 +134,8 @@ ogm_dshow_header(AVFormatContext *s, int idx)
|
|||||||
static int
|
static int
|
||||||
ogm_packet(AVFormatContext *s, int idx)
|
ogm_packet(AVFormatContext *s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
uint8_t *p = os->buf + os->pstart;
|
uint8_t *p = os->buf + os->pstart;
|
||||||
int lb;
|
int lb;
|
||||||
|
|
||||||
@ -149,28 +149,28 @@ ogm_packet(AVFormatContext *s, int idx)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ogg_codec_t ff_ogm_video_codec = {
|
const struct ogg_codec ff_ogm_video_codec = {
|
||||||
.magic = "\001video",
|
.magic = "\001video",
|
||||||
.magicsize = 6,
|
.magicsize = 6,
|
||||||
.header = ogm_header,
|
.header = ogm_header,
|
||||||
.packet = ogm_packet
|
.packet = ogm_packet
|
||||||
};
|
};
|
||||||
|
|
||||||
const ogg_codec_t ff_ogm_audio_codec = {
|
const struct ogg_codec ff_ogm_audio_codec = {
|
||||||
.magic = "\001audio",
|
.magic = "\001audio",
|
||||||
.magicsize = 6,
|
.magicsize = 6,
|
||||||
.header = ogm_header,
|
.header = ogm_header,
|
||||||
.packet = ogm_packet
|
.packet = ogm_packet
|
||||||
};
|
};
|
||||||
|
|
||||||
const ogg_codec_t ff_ogm_text_codec = {
|
const struct ogg_codec ff_ogm_text_codec = {
|
||||||
.magic = "\001text",
|
.magic = "\001text",
|
||||||
.magicsize = 5,
|
.magicsize = 5,
|
||||||
.header = ogm_header,
|
.header = ogm_header,
|
||||||
.packet = ogm_packet
|
.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",
|
.magic = "\001Direct Show Samples embedded in Ogg",
|
||||||
.magicsize = 35,
|
.magicsize = 35,
|
||||||
.header = ogm_dshow_header,
|
.header = ogm_dshow_header,
|
||||||
|
@ -31,8 +31,8 @@
|
|||||||
#include "oggdec.h"
|
#include "oggdec.h"
|
||||||
|
|
||||||
static int speex_header(AVFormatContext *s, int idx) {
|
static int speex_header(AVFormatContext *s, int idx) {
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
uint8_t *p = os->buf + os->pstart;
|
uint8_t *p = os->buf + os->pstart;
|
||||||
|
|
||||||
@ -54,7 +54,7 @@ static int speex_header(AVFormatContext *s, int idx) {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ogg_codec_t ff_speex_codec = {
|
const struct ogg_codec ff_speex_codec = {
|
||||||
.magic = "Speex ",
|
.magic = "Speex ",
|
||||||
.magicsize = 8,
|
.magicsize = 8,
|
||||||
.header = speex_header
|
.header = speex_header
|
||||||
|
@ -28,18 +28,18 @@
|
|||||||
#include "avformat.h"
|
#include "avformat.h"
|
||||||
#include "oggdec.h"
|
#include "oggdec.h"
|
||||||
|
|
||||||
typedef struct theora_params {
|
struct theora_params {
|
||||||
int gpshift;
|
int gpshift;
|
||||||
int gpmask;
|
int gpmask;
|
||||||
} theora_params_t;
|
};
|
||||||
|
|
||||||
static int
|
static int
|
||||||
theora_header (AVFormatContext * s, int idx)
|
theora_header (AVFormatContext * s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->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;
|
int cds = st->codec->extradata_size + os->psize + 2;
|
||||||
uint8_t *cdp;
|
uint8_t *cdp;
|
||||||
|
|
||||||
@ -119,9 +119,9 @@ theora_header (AVFormatContext * s, int idx)
|
|||||||
static uint64_t
|
static uint64_t
|
||||||
theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp)
|
theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = ctx->priv_data;
|
struct ogg *ogg = ctx->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
theora_params_t *thp = os->private;
|
struct theora_params *thp = os->private;
|
||||||
uint64_t iframe = gp >> thp->gpshift;
|
uint64_t iframe = gp >> thp->gpshift;
|
||||||
uint64_t pframe = gp & thp->gpmask;
|
uint64_t pframe = gp & thp->gpmask;
|
||||||
|
|
||||||
@ -131,7 +131,7 @@ theora_gptopts(AVFormatContext *ctx, int idx, uint64_t gp)
|
|||||||
return iframe + pframe;
|
return iframe + pframe;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ogg_codec_t ff_theora_codec = {
|
const struct ogg_codec ff_theora_codec = {
|
||||||
.magic = "\200theora",
|
.magic = "\200theora",
|
||||||
.magicsize = 7,
|
.magicsize = 7,
|
||||||
.header = theora_header,
|
.header = theora_header,
|
||||||
|
@ -122,14 +122,14 @@ vorbis_comment(AVFormatContext * as, uint8_t *buf, int size)
|
|||||||
* [framing_flag] = read one bit | Not Used
|
* [framing_flag] = read one bit | Not Used
|
||||||
* */
|
* */
|
||||||
|
|
||||||
typedef struct {
|
struct oggvorbis_private {
|
||||||
unsigned int len[3];
|
unsigned int len[3];
|
||||||
unsigned char *packet[3];
|
unsigned char *packet[3];
|
||||||
} oggvorbis_private_t;
|
};
|
||||||
|
|
||||||
|
|
||||||
static unsigned int
|
static unsigned int
|
||||||
fixup_vorbis_headers(AVFormatContext * as, oggvorbis_private_t *priv,
|
fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
|
||||||
uint8_t **buf)
|
uint8_t **buf)
|
||||||
{
|
{
|
||||||
int i,offset, len;
|
int i,offset, len;
|
||||||
@ -154,16 +154,16 @@ fixup_vorbis_headers(AVFormatContext * as, oggvorbis_private_t *priv,
|
|||||||
static int
|
static int
|
||||||
vorbis_header (AVFormatContext * s, int idx)
|
vorbis_header (AVFormatContext * s, int idx)
|
||||||
{
|
{
|
||||||
ogg_t *ogg = s->priv_data;
|
struct ogg *ogg = s->priv_data;
|
||||||
ogg_stream_t *os = ogg->streams + idx;
|
struct ogg_stream *os = ogg->streams + idx;
|
||||||
AVStream *st = s->streams[idx];
|
AVStream *st = s->streams[idx];
|
||||||
oggvorbis_private_t *priv;
|
struct oggvorbis_private *priv;
|
||||||
|
|
||||||
if (os->seq > 2)
|
if (os->seq > 2)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
if (os->seq == 0) {
|
if (os->seq == 0) {
|
||||||
os->private = av_mallocz(sizeof(oggvorbis_private_t));
|
os->private = av_mallocz(sizeof(struct oggvorbis_private));
|
||||||
if (!os->private)
|
if (!os->private)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -219,7 +219,7 @@ vorbis_header (AVFormatContext * s, int idx)
|
|||||||
return os->seq < 3;
|
return os->seq < 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
const ogg_codec_t ff_vorbis_codec = {
|
const struct ogg_codec ff_vorbis_codec = {
|
||||||
.magic = "\001vorbis",
|
.magic = "\001vorbis",
|
||||||
.magicsize = 7,
|
.magicsize = 7,
|
||||||
.header = vorbis_header
|
.header = vorbis_header
|
||||||
|
Loading…
Reference in New Issue
Block a user