pot/merge.
[dcpomatic.git] / src / lib / ffmpeg_examiner.cc
index f03b744a160a3a13170d32f164b1d19aa6046d7f..847c141da4a142e49b694429eea41829b095224f 100644 (file)
@@ -30,7 +30,6 @@ extern "C" {
 #include "ffmpeg_audio_stream.h"
 #include "ffmpeg_subtitle_stream.h"
 #include "util.h"
-#include "safe_stringstream.h"
 #include <boost/foreach.hpp>
 #include <iostream>
 
@@ -63,11 +62,14 @@ FFmpegExaminer::FFmpegExaminer (shared_ptr<const FFmpegContent> c, shared_ptr<Jo
                        }
 
                        DCPOMATIC_ASSERT (_format_context->duration != AV_NOPTS_VALUE);
+                       DCPOMATIC_ASSERT (s->codec->codec);
+                       DCPOMATIC_ASSERT (s->codec->codec->name);
 
                        _audio_streams.push_back (
                                shared_ptr<FFmpegAudioStream> (
                                        new FFmpegAudioStream (
-                                               audio_stream_name (s),
+                                               stream_name (s),
+                                               s->codec->codec->name,
                                                s->id,
                                                s->codec->sample_rate,
                                                (double (_format_context->duration) / AV_TIME_BASE) * s->codec->sample_rate,
@@ -92,8 +94,10 @@ FFmpegExaminer::FFmpegExaminer (shared_ptr<const FFmpegContent> c, shared_ptr<Jo
        if (job) {
                if (_need_video_length) {
                        job->sub (_("Finding length and subtitles"));
-               } else {
+               } else if (!_subtitle_streams.empty()) {
                        job->sub (_("Finding subtitles"));
+               } else {
+                       job->sub (_("Finding length"));
                }
        }
 
@@ -343,57 +347,39 @@ FFmpegExaminer::sample_aspect_ratio () const
        return double (sar.num) / sar.den;
 }
 
-string
-FFmpegExaminer::audio_stream_name (AVStream* s) const
-{
-       SafeStringStream n;
-
-       n << stream_name (s);
-
-       if (!n.str().empty()) {
-               n << "; ";
-       }
-
-       n << s->codec->channels << " channels";
-
-       return n.str ();
-}
-
 string
 FFmpegExaminer::subtitle_stream_name (AVStream* s) const
 {
-       SafeStringStream n;
-
-       n << stream_name (s);
+       string n = stream_name (s);
 
-       if (n.str().empty()) {
-               n << _("unknown");
+       if (n.empty()) {
+               n = _("unknown");
        }
 
-       return n.str ();
+       return n;
 }
 
 string
 FFmpegExaminer::stream_name (AVStream* s) const
 {
-       SafeStringStream n;
+       string n;
 
        if (s->metadata) {
                AVDictionaryEntry const * lang = av_dict_get (s->metadata, "language", 0, 0);
                if (lang) {
-                       n << lang->value;
+                       n = lang->value;
                }
 
                AVDictionaryEntry const * title = av_dict_get (s->metadata, "title", 0, 0);
                if (title) {
-                       if (!n.str().empty()) {
-                               n << " ";
+                       if (!n.empty()) {
+                               n += " ";
                        }
-                       n << title->value;
+                       n += title->value;
                }
        }
 
-       return n.str ();
+       return n;
 }
 
 int