Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavformat
oggdec.h
Go to the documentation of this file.
1
25
#ifndef AVFORMAT_OGGDEC_H
26
#define AVFORMAT_OGGDEC_H
27
28
#include "
avformat.h
"
29
#include "
metadata.h
"
30
31
struct
ogg_codec
{
32
const
int8_t *
magic
;
33
uint8_t
magicsize
;
34
const
int8_t *
name
;
41
int (*
header
)(
AVFormatContext
*, int);
42
int (*
packet
)(
AVFormatContext
*, int);
48
uint64_t (*
gptopts
)(
AVFormatContext
*, int, uint64_t, int64_t *dts);
53
int
granule_is_start
;
57
int
nb_header
;
58
void
(*
cleanup
)(
AVFormatContext
*s,
int
idx);
59
};
60
61
struct
ogg_stream
{
62
uint8_t *
buf
;
63
unsigned
int
bufsize
;
64
unsigned
int
bufpos
;
65
unsigned
int
pstart
;
66
unsigned
int
psize
;
67
unsigned
int
pflags
;
68
unsigned
int
pduration
;
69
uint32_t
serial
;
70
uint64_t
granule
;
71
int64_t
lastpts
;
72
int64_t
lastdts
;
73
int64_t
sync_pos
;
74
int64_t
page_pos
;
75
int
flags
;
76
const
struct
ogg_codec
*
codec
;
77
int
header
;
78
int
nsegs
,
segp
;
79
uint8_t
segments
[255];
80
int
incomplete
;
81
int
page_end
;
82
int
keyframe_seek
;
83
void
*
private
;
84
};
85
86
struct
ogg_state
{
87
uint64_t
pos
;
88
int
curidx
;
89
struct
ogg_state
*
next
;
90
int
nstreams
;
91
struct
ogg_stream
streams
[1];
92
};
93
94
struct
ogg
{
95
struct
ogg_stream
*
streams
;
96
int
nstreams
;
97
int
headers
;
98
int
curidx
;
99
struct
ogg_state
*
state
;
100
};
101
102
#define OGG_FLAG_CONT 1
103
#define OGG_FLAG_BOS 2
104
#define OGG_FLAG_EOS 4
105
106
extern
const
struct
ogg_codec
ff_celt_codec
;
107
extern
const
struct
ogg_codec
ff_dirac_codec
;
108
extern
const
struct
ogg_codec
ff_flac_codec
;
109
extern
const
struct
ogg_codec
ff_ogm_audio_codec
;
110
extern
const
struct
ogg_codec
ff_ogm_old_codec
;
111
extern
const
struct
ogg_codec
ff_ogm_text_codec
;
112
extern
const
struct
ogg_codec
ff_ogm_video_codec
;
113
extern
const
struct
ogg_codec
ff_old_dirac_codec
;
114
extern
const
struct
ogg_codec
ff_old_flac_codec
;
115
extern
const
struct
ogg_codec
ff_skeleton_codec
;
116
extern
const
struct
ogg_codec
ff_speex_codec
;
117
extern
const
struct
ogg_codec
ff_theora_codec
;
118
extern
const
struct
ogg_codec
ff_vorbis_codec
;
119
120
int
ff_vorbis_comment
(
AVFormatContext
*ms,
AVDictionary
**m,
const
uint8_t *buf,
int
size
);
121
122
static
inline
int
123
ogg_find_stream
(
struct
ogg
*
ogg
,
int
serial)
124
{
125
int
i;
126
127
for
(i = 0; i < ogg->
nstreams
; i++)
128
if
(ogg->
streams
[i].
serial
== serial)
129
return
i;
130
131
return
-1;
132
}
133
134
static
inline
uint64_t
135
ogg_gptopts
(
AVFormatContext
* s,
int
i, uint64_t
gp
, int64_t *dts)
136
{
137
struct
ogg
*
ogg
= s->
priv_data
;
138
struct
ogg_stream
*os = ogg->
streams
+ i;
139
uint64_t pts =
AV_NOPTS_VALUE
;
140
141
if
(os->
codec
&& os->
codec
->
gptopts
){
142
pts = os->
codec
->
gptopts
(s, i, gp, dts);
143
}
else
{
144
pts =
gp
;
145
if
(dts)
146
*dts = pts;
147
}
148
149
return
pts;
150
}
151
152
#endif
/* AVFORMAT_OGGDEC_H */