]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/oggdec.h
rtpenc_mpegts: Free the right ->pb in the error path in the init function
[ffmpeg] / libavformat / oggdec.h
index aa6e8990b0d0905bf6df3fb3b7b86acfd5b7941b..807ac4a3164f4f11b2a525f464a14f5d397d9515 100644 (file)
@@ -51,6 +51,11 @@ struct ogg_codec {
      * 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 {
@@ -62,8 +67,8 @@ 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
@@ -75,6 +80,8 @@ struct ogg_stream {
     uint8_t segments[255];
     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;
 };
 
@@ -91,7 +98,6 @@ struct ogg {
     int nstreams;
     int headers;
     int curidx;
-    uint64_t size;
     struct ogg_state *state;
 };
 
@@ -99,6 +105,9 @@ struct ogg {
 #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;
@@ -107,13 +116,18 @@ 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_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 vorbis_comment(AVFormatContext *ms, 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)
@@ -134,7 +148,7 @@ ogg_gptopts (AVFormatContext * s, int i, uint64_t gp, int64_t *dts)
     struct ogg_stream *os = ogg->streams + i;
     uint64_t pts = AV_NOPTS_VALUE;
 
-    if(os->codec->gptopts){
+    if(os->codec && os->codec->gptopts){
         pts = os->codec->gptopts(s, i, gp, dts);
     } else {
         pts = gp;