]> git.sesse.net Git - ffmpeg/blobdiff - libavformat/oggdec.h
mpegts: replace some magic numbers with the existing define
[ffmpeg] / libavformat / oggdec.h
index b0a23e251604c2eaa6a903496afa955a67f49842..184a628622c39eb9d4beb51b5fedf1d5f5cca50e 100644 (file)
@@ -62,10 +62,11 @@ struct ogg_stream {
     unsigned int pflags;
     unsigned int pduration;
     uint32_t serial;
-    uint32_t seq;
     uint64_t granule;
     int64_t lastpts;
     int64_t lastdts;
+    int64_t sync_pos;   ///< file offset of the first page needed to reconstruct the current packet
+    int64_t page_pos;   ///< file offset of the current page
     int flags;
     const struct ogg_codec *codec;
     int header;
@@ -73,6 +74,7 @@ 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;
     void *private;
 };
 
@@ -89,7 +91,6 @@ struct ogg {
     int nstreams;
     int headers;
     int curidx;
-    uint64_t size;
     struct ogg_state *state;
 };
 
@@ -97,6 +98,7 @@ struct ogg {
 #define OGG_FLAG_BOS  2
 #define OGG_FLAG_EOS  4
 
+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;
@@ -105,12 +107,41 @@ 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_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 AVMetadataConv ff_vorbiscomment_metadata_conv[];
+int ff_vorbis_comment(AVFormatContext *ms, AVDictionary **m, const uint8_t *buf, int size);
 
-int vorbis_comment(AVFormatContext *ms, uint8_t *buf, int size);
+static inline int
+ogg_find_stream (struct ogg * ogg, int serial)
+{
+    int i;
+
+    for (i = 0; i < ogg->nstreams; i++)
+        if (ogg->streams[i].serial == serial)
+            return i;
+
+    return -1;
+}
+
+static inline uint64_t
+ogg_gptopts (AVFormatContext * s, int i, uint64_t gp, int64_t *dts)
+{
+    struct ogg *ogg = s->priv_data;
+    struct ogg_stream *os = ogg->streams + i;
+    uint64_t pts = AV_NOPTS_VALUE;
+
+    if(os->codec && os->codec->gptopts){
+        pts = os->codec->gptopts(s, i, gp, dts);
+    } else {
+        pts = gp;
+        if (dts)
+            *dts = pts;
+    }
+
+    return pts;
+}
 
 #endif /* AVFORMAT_OGGDEC_H */