summaryrefslogtreecommitdiff
path: root/src/lib/ffmpeg_content.h
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-11-24 01:52:23 +0000
committerCarl Hetherington <cth@carlh.net>2013-11-24 01:52:23 +0000
commit8bef34f672815c3c9b4236d06fdee8dfd0bffbc2 (patch)
treed37c47bf3ccb308f7a2959be0c2ef9c0e7ec9575 /src/lib/ffmpeg_content.h
parentc3da7c64f01420447dbab7f5c2ea42ff1b911cc5 (diff)
Various joining fixes.
Diffstat (limited to 'src/lib/ffmpeg_content.h')
-rw-r--r--src/lib/ffmpeg_content.h54
1 files changed, 39 insertions, 15 deletions
diff --git a/src/lib/ffmpeg_content.h b/src/lib/ffmpeg_content.h
index 4576aaf45..7ff159b85 100644
--- a/src/lib/ffmpeg_content.h
+++ b/src/lib/ffmpeg_content.h
@@ -26,15 +26,44 @@
#include "subtitle_content.h"
#include "audio_mapping.h"
+struct AVFormatContext;
+struct AVStream;
+
class Filter;
class ffmpeg_pts_offset_test;
-class FFmpegAudioStream
+class FFmpegStream
{
public:
- FFmpegAudioStream (std::string n, int i, int f, int c)
+ FFmpegStream (std::string n, int i)
: name (n)
, id (i)
+ , _legacy_id (false)
+ {}
+
+ FFmpegStream (boost::shared_ptr<const cxml::Node>, int);
+
+ void as_xml (xmlpp::Node *) const;
+
+ /** @param c An AVFormatContext.
+ * @return Stream index within the AVFormatContext.
+ */
+ int index (AVFormatContext const * c) const;
+ AVStream* stream (AVFormatContext const * c) const;
+
+ std::string name;
+ int id;
+
+private:
+ /** If this is true, id is in fact the index */
+ bool _legacy_id;
+};
+
+class FFmpegAudioStream : public FFmpegStream
+{
+public:
+ FFmpegAudioStream (std::string n, int i, int f, int c)
+ : FFmpegStream (n, i)
, frame_rate (f)
, channels (c)
, mapping (c)
@@ -42,12 +71,10 @@ public:
mapping.make_default ();
}
- FFmpegAudioStream (boost::shared_ptr<const cxml::Node>);
+ FFmpegAudioStream (boost::shared_ptr<const cxml::Node>, int);
void as_xml (xmlpp::Node *) const;
-
- std::string name;
- int id;
+
int frame_rate;
int channels;
AudioMapping mapping;
@@ -58,27 +85,24 @@ private:
/* Constructor for tests */
FFmpegAudioStream ()
- : mapping (1)
+ : FFmpegStream ("", 0)
+ , mapping (1)
{}
};
extern bool operator== (FFmpegAudioStream const & a, FFmpegAudioStream const & b);
extern bool operator!= (FFmpegAudioStream const & a, FFmpegAudioStream const & b);
-class FFmpegSubtitleStream
+class FFmpegSubtitleStream : public FFmpegStream
{
public:
FFmpegSubtitleStream (std::string n, int i)
- : name (n)
- , id (i)
+ : FFmpegStream (n, i)
{}
- FFmpegSubtitleStream (boost::shared_ptr<const cxml::Node>);
+ FFmpegSubtitleStream (boost::shared_ptr<const cxml::Node>, int);
void as_xml (xmlpp::Node *) const;
-
- std::string name;
- int id;
};
extern bool operator== (FFmpegSubtitleStream const & a, FFmpegSubtitleStream const & b);
@@ -98,7 +122,7 @@ class FFmpegContent : public VideoContent, public AudioContent, public SubtitleC
{
public:
FFmpegContent (boost::shared_ptr<const Film>, boost::filesystem::path);
- FFmpegContent (boost::shared_ptr<const Film>, boost::shared_ptr<const cxml::Node>);
+ FFmpegContent (boost::shared_ptr<const Film>, boost::shared_ptr<const cxml::Node>, int version);
FFmpegContent (boost::shared_ptr<const Film>, std::vector<boost::shared_ptr<Content> >);
boost::shared_ptr<FFmpegContent> shared_from_this () {