+struct AVFormatContext;
+struct AVStream;
+
+class Filter;
+class ffmpeg_pts_offset_test;
+
+class FFmpegStream
+{
+public:
+ FFmpegStream (std::string n, int i)
+ : name (n)
+ , _id (i)
+ {}
+
+ FFmpegStream (boost::shared_ptr<const cxml::Node>);
+
+ void as_xml (xmlpp::Node *) const;
+
+ /** @param c An AVFormatContext.
+ * @param index A stream index within the AVFormatContext.
+ * @return true if this FFmpegStream uses the given stream index.
+ */
+ bool uses_index (AVFormatContext const * c, int index) const;
+ AVStream* stream (AVFormatContext const * c) const;
+
+ std::string technical_summary () const {
+ return "id " + boost::lexical_cast<std::string> (_id);
+ }
+
+ std::string identifier () const {
+ return boost::lexical_cast<std::string> (_id);
+ }
+
+ std::string name;
+
+ friend bool operator== (FFmpegStream const & a, FFmpegStream const & b);
+ friend bool operator!= (FFmpegStream const & a, FFmpegStream const & b);
+
+private:
+ int _id;
+};
+
+class FFmpegAudioStream : public FFmpegStream