* 0 if granule is the end time of the associated packet.
*/
int granule_is_start;
+ /**
+ * Number of expected headers
+ */
+ int nb_header;
+ void (*cleanup)(AVFormatContext *s, int idx);
};
struct ogg_stream {
unsigned int pflags;
unsigned int pduration;
uint32_t serial;
- uint32_t seq;
uint64_t granule;
+ uint64_t start_granule;
int64_t lastpts;
int64_t lastdts;
int64_t sync_pos; ///< file offset of the first page needed to reconstruct the current packet
int incomplete; ///< whether we're expecting a continuation in the next page
int page_end; ///< current packet is the last one completed in the page
int keyframe_seek;
+ int nb_header; ///< set to the number of parsed headers
void *private;
};
int nstreams;
int headers;
int curidx;
- uint64_t size;
struct ogg_state *state;
};
#define OGG_FLAG_BOS 2
#define OGG_FLAG_EOS 4
+#define OGG_NOGRANULE_VALUE -1ull
+
+extern const struct ogg_codec ff_celt_codec;
extern const struct ogg_codec ff_dirac_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_video_codec;
extern const struct ogg_codec ff_old_dirac_codec;
extern const struct ogg_codec ff_old_flac_codec;
+extern const struct ogg_codec ff_opus_codec;
extern const struct ogg_codec ff_skeleton_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 const struct ogg_codec ff_vp8_codec;
-extern const AVMetadataConv ff_vorbiscomment_metadata_conv[];
+int ff_vorbis_comment(AVFormatContext *ms, AVDictionary **m,
+ const uint8_t *buf, int size, int parse_picture);
-int ff_vorbis_comment(AVFormatContext *ms, AVMetadata **m, const uint8_t *buf, int size);
+int ff_vorbis_stream_comment(AVFormatContext *as, AVStream *st,
+ const uint8_t *buf, int size);
static inline int
ogg_find_stream (struct ogg * ogg, int serial)