00001 00025 #ifndef AVFORMAT_OGGDEC_H 00026 #define AVFORMAT_OGGDEC_H 00027 00028 #include "avformat.h" 00029 00030 struct ogg_codec { 00031 const int8_t *magic; 00032 uint8_t magicsize; 00033 const int8_t *name; 00034 int (*header)(AVFormatContext *, int); 00035 int (*packet)(AVFormatContext *, int); 00036 uint64_t (*gptopts)(AVFormatContext *, int, uint64_t); 00037 }; 00038 00039 struct ogg_stream { 00040 uint8_t *buf; 00041 unsigned int bufsize; 00042 unsigned int bufpos; 00043 unsigned int pstart; 00044 unsigned int psize; 00045 unsigned int pflags; 00046 uint32_t serial; 00047 uint32_t seq; 00048 uint64_t granule, lastgp; 00049 int flags; 00050 struct ogg_codec *codec; 00051 int header; 00052 int nsegs, segp; 00053 uint8_t segments[255]; 00054 void *private; 00055 }; 00056 00057 struct ogg_state { 00058 uint64_t pos; 00059 int curidx; 00060 struct ogg_state *next; 00061 int nstreams; 00062 struct ogg_stream streams[1]; 00063 }; 00064 00065 struct ogg { 00066 struct ogg_stream *streams; 00067 int nstreams; 00068 int headers; 00069 int curidx; 00070 uint64_t size; 00071 struct ogg_state *state; 00072 }; 00073 00074 #define OGG_FLAG_CONT 1 00075 #define OGG_FLAG_BOS 2 00076 #define OGG_FLAG_EOS 4 00077 00078 extern const struct ogg_codec ff_flac_codec; 00079 extern const struct ogg_codec ff_ogm_audio_codec; 00080 extern const struct ogg_codec ff_ogm_old_codec; 00081 extern const struct ogg_codec ff_ogm_text_codec; 00082 extern const struct ogg_codec ff_ogm_video_codec; 00083 extern const struct ogg_codec ff_old_flac_codec; 00084 extern const struct ogg_codec ff_speex_codec; 00085 extern const struct ogg_codec ff_theora_codec; 00086 extern const struct ogg_codec ff_vorbis_codec; 00087 00088 int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size); 00089 00090 #endif /* AVFORMAT_OGGDEC_H */