diff options
| author | Carl Hetherington <cth@carlh.net> | 2014-02-24 12:19:50 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2014-02-24 12:19:50 +0000 |
| commit | 85c65bd422742813992686c17a5e1b718cc3c449 (patch) | |
| tree | 21750399bcb19e1fb6242bba7595773513a80912 /src/lib/ffmpeg_content.cc | |
| parent | e2be8234013335379bd49a53854218039348c7a4 (diff) | |
| parent | eed40e4e5ca46bbc31a9833d2b766c96c11b0254 (diff) | |
Merge master; specify libdcp-1.0.
Diffstat (limited to 'src/lib/ffmpeg_content.cc')
| -rw-r--r-- | src/lib/ffmpeg_content.cc | 71 |
1 files changed, 21 insertions, 50 deletions
diff --git a/src/lib/ffmpeg_content.cc b/src/lib/ffmpeg_content.cc index 3bee49146..3df1ba57e 100644 --- a/src/lib/ffmpeg_content.cc +++ b/src/lib/ffmpeg_content.cc @@ -66,7 +66,7 @@ FFmpegContent::FFmpegContent (shared_ptr<const Film> f, shared_ptr<const cxml::N { list<cxml::NodePtr> c = node->node_children ("SubtitleStream"); for (list<cxml::NodePtr>::const_iterator i = c.begin(); i != c.end(); ++i) { - _subtitle_streams.push_back (shared_ptr<FFmpegSubtitleStream> (new FFmpegSubtitleStream (*i, version))); + _subtitle_streams.push_back (shared_ptr<FFmpegSubtitleStream> (new FFmpegSubtitleStream (*i))); if ((*i)->optional_number_child<int> ("Selected")) { _subtitle_stream = _subtitle_streams.back (); } @@ -207,12 +207,12 @@ FFmpegContent::technical_summary () const { string as = "none"; if (_audio_stream) { - as = String::compose ("id %1", _audio_stream->id); + as = _audio_stream->technical_summary (); } string ss = "none"; if (_subtitle_stream) { - ss = String::compose ("id %1", _subtitle_stream->id); + ss = _subtitle_stream->technical_summary (); } pair<string, string> filt = Filter::ffmpeg_strings (_filters); @@ -325,54 +325,33 @@ FFmpegContent::output_audio_frame_rate () const } bool -operator== (FFmpegSubtitleStream const & a, FFmpegSubtitleStream const & b) +operator== (FFmpegStream const & a, FFmpegStream const & b) { - return a.id == b.id; + return a._id == b._id; } bool -operator!= (FFmpegSubtitleStream const & a, FFmpegSubtitleStream const & b) +operator!= (FFmpegStream const & a, FFmpegStream const & b) { - return a.id != b.id; + return a._id != b._id; } -bool -operator== (FFmpegAudioStream const & a, FFmpegAudioStream const & b) -{ - return a.id == b.id; -} - -bool -operator!= (FFmpegAudioStream const & a, FFmpegAudioStream const & b) +FFmpegStream::FFmpegStream (shared_ptr<const cxml::Node> node) + : name (node->string_child ("Name")) + , _id (node->number_child<int> ("Id")) { - return a.id != b.id; -} -FFmpegStream::FFmpegStream (shared_ptr<const cxml::Node> node, int version) - : _legacy_id (false) -{ - name = node->string_child ("Name"); - id = node->number_child<int> ("Id"); - if (version == 4 || node->optional_bool_child ("LegacyId")) { - _legacy_id = true; - } } void FFmpegStream::as_xml (xmlpp::Node* root) const { root->add_child("Name")->add_child_text (name); - root->add_child("Id")->add_child_text (lexical_cast<string> (id)); - if (_legacy_id) { - /* Write this so that version > 4 files are read in correctly - if the Id came originally from a version <= 4 file. - */ - root->add_child("LegacyId")->add_child_text ("1"); - } + root->add_child("Id")->add_child_text (lexical_cast<string> (_id)); } FFmpegAudioStream::FFmpegAudioStream (shared_ptr<const cxml::Node> node, int version) - : FFmpegStream (node, version) + : FFmpegStream (node) , mapping (node->node_child ("Mapping"), version) { frame_rate = node->number_child<int> ("FrameRate"); @@ -392,34 +371,26 @@ FFmpegAudioStream::as_xml (xmlpp::Node* root) const mapping.as_xml (root->add_child("Mapping")); } -int -FFmpegStream::index (AVFormatContext const * fc) const +bool +FFmpegStream::uses_index (AVFormatContext const * fc, int index) const { - if (_legacy_id) { - return id; - } - size_t i = 0; while (i < fc->nb_streams) { - if (fc->streams[i]->id == id) { - return i; + if (fc->streams[i]->id == _id) { + return int (i) == index; } ++i; } - assert (false); + return false; } AVStream * FFmpegStream::stream (AVFormatContext const * fc) const { - if (_legacy_id) { - return fc->streams[id]; - } - size_t i = 0; while (i < fc->nb_streams) { - if (fc->streams[i]->id == id) { + if (fc->streams[i]->id == _id) { return fc->streams[i]; } ++i; @@ -433,8 +404,8 @@ FFmpegStream::stream (AVFormatContext const * fc) const * @param t String returned from to_string(). * @param v State file version. */ -FFmpegSubtitleStream::FFmpegSubtitleStream (shared_ptr<const cxml::Node> node, int version) - : FFmpegStream (node, version) +FFmpegSubtitleStream::FFmpegSubtitleStream (shared_ptr<const cxml::Node> node) + : FFmpegStream (node) { } @@ -495,7 +466,7 @@ FFmpegContent::identifier () const boost::mutex::scoped_lock lm (_mutex); if (_subtitle_stream) { - s << "_" << _subtitle_stream->id; + s << "_" << _subtitle_stream->identifier (); } for (vector<Filter const *>::const_iterator i = _filters.begin(); i != _filters.end(); ++i) { |
