#define AVFORMAT_OGGDEC_H
#include "avformat.h"
+#include "metadata.h"
-typedef struct ogg_codec {
+struct ogg_codec {
const int8_t *magic;
uint8_t magicsize;
const int8_t *name;
+ /**
+ * Attempt to process a packet as a header
+ * @return 1 if the packet was a valid header,
+ * 0 if the packet was not a header (was a data packet)
+ * -1 if an error occurred or for unsupported stream
+ */
int (*header)(AVFormatContext *, int);
int (*packet)(AVFormatContext *, int);
uint64_t (*gptopts)(AVFormatContext *, int, uint64_t);
-} ogg_codec_t;
+};
-typedef struct ogg_stream {
+struct ogg_stream {
uint8_t *buf;
unsigned int bufsize;
unsigned int bufpos;
unsigned int pstart;
unsigned int psize;
unsigned int pflags;
+ unsigned int pduration;
uint32_t serial;
uint32_t seq;
uint64_t granule, lastgp;
int flags;
- ogg_codec_t *codec;
+ const struct ogg_codec *codec;
int header;
int nsegs, segp;
uint8_t segments[255];
void *private;
-} ogg_stream_t;
+};
-typedef struct ogg_state {
+struct ogg_state {
uint64_t pos;
int curidx;
struct ogg_state *next;
int nstreams;
- ogg_stream_t streams[1];
-} ogg_state_t;
+ struct ogg_stream streams[1];
+};
-typedef struct ogg {
- ogg_stream_t *streams;
+struct ogg {
+ struct ogg_stream *streams;
int nstreams;
int headers;
int curidx;
uint64_t size;
- ogg_state_t *state;
-} ogg_t;
+ struct ogg_state *state;
+};
#define OGG_FLAG_CONT 1
#define OGG_FLAG_BOS 2
#define OGG_FLAG_EOS 4
-extern const ogg_codec_t ff_flac_codec;
-extern const ogg_codec_t ff_ogm_audio_codec;
-extern const ogg_codec_t ff_ogm_old_codec;
-extern const ogg_codec_t ff_ogm_text_codec;
-extern const ogg_codec_t ff_ogm_video_codec;
-extern const ogg_codec_t ff_old_flac_codec;
-extern const ogg_codec_t ff_speex_codec;
-extern const ogg_codec_t ff_theora_codec;
-extern const ogg_codec_t ff_vorbis_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_old_codec;
+extern const struct ogg_codec ff_ogm_text_codec;
+extern const struct ogg_codec ff_ogm_video_codec;
+extern const struct ogg_codec ff_old_flac_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 int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
+extern const AVMetadataConv ff_vorbiscomment_metadata_conv[];
+
+int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
#endif /* AVFORMAT_OGGDEC_H */