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