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
uint64_t
start_granule
;
72
int64_t
lastpts
;
73
int64_t
lastdts
;
74
int64_t
sync_pos
;
75
int64_t
page_pos
;
76
int
flags
;
77
const
struct
ogg_codec
*
codec
;
78
int
header
;
79
int
nsegs
,
segp
;
80
uint8_t
segments
[255];
81
int
incomplete
;
82
int
page_end
;
83
int
keyframe_seek
;
84
int
nb_header
;
85
void
*
private
;
86
};
87
88
struct
ogg_state
{
89
uint64_t
pos
;
90
int
curidx
;
91
struct
ogg_state
*
next
;
92
int
nstreams
;
93
struct
ogg_stream
streams
[1];
94
};
95
96
struct
ogg
{
97
struct
ogg_stream
*
streams
;
98
int
nstreams
;
99
int
headers
;
100
int
curidx
;
101
struct
ogg_state
*
state
;
102
};
103
104
#define OGG_FLAG_CONT 1
105
#define OGG_FLAG_BOS 2
106
#define OGG_FLAG_EOS 4
107
108
#define OGG_NOGRANULE_VALUE -1ull
109
110
extern
const
struct
ogg_codec
ff_celt_codec
;
111
extern
const
struct
ogg_codec
ff_dirac_codec
;
112
extern
const
struct
ogg_codec
ff_flac_codec
;
113
extern
const
struct
ogg_codec
ff_ogm_audio_codec
;
114
extern
const
struct
ogg_codec
ff_ogm_old_codec
;
115
extern
const
struct
ogg_codec
ff_ogm_text_codec
;
116
extern
const
struct
ogg_codec
ff_ogm_video_codec
;
117
extern
const
struct
ogg_codec
ff_old_dirac_codec
;
118
extern
const
struct
ogg_codec
ff_old_flac_codec
;
119
extern
const
struct
ogg_codec
ff_opus_codec
;
120
extern
const
struct
ogg_codec
ff_skeleton_codec
;
121
extern
const
struct
ogg_codec
ff_speex_codec
;
122
extern
const
struct
ogg_codec
ff_theora_codec
;
123
extern
const
struct
ogg_codec
ff_vorbis_codec
;
124
125
int
ff_vorbis_comment
(
AVFormatContext
*ms,
AVDictionary
**m,
const
uint8_t
*buf,
int
size
);
126
127
static
inline
int
128
ogg_find_stream
(
struct
ogg
*
ogg
,
int
serial)
129
{
130
int
i;
131
132
for
(i = 0; i < ogg->
nstreams
; i++)
133
if
(ogg->
streams
[i].
serial
== serial)
134
return
i;
135
136
return
-1;
137
}
138
139
static
inline
uint64_t
140
ogg_gptopts
(
AVFormatContext
* s,
int
i, uint64_t
gp
, int64_t *dts)
141
{
142
struct
ogg
*
ogg
= s->
priv_data
;
143
struct
ogg_stream
*os = ogg->
streams
+ i;
144
uint64_t pts =
AV_NOPTS_VALUE
;
145
146
if
(os->
codec
&& os->
codec
->
gptopts
){
147
pts = os->
codec
->
gptopts
(s, i, gp, dts);
148
}
else
{
149
pts =
gp
;
150
if
(dts)
151
*dts = pts;
152
}
153
154
return
pts;
155
}
156
157
#endif
/* AVFORMAT_OGGDEC_H */