summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-06-09 17:28:51 +0100
committerCarl Hetherington <cth@carlh.net>2013-06-09 17:28:51 +0100
commit11d0d8d07917543d6c40a6bb1fe5581ae216f5aa (patch)
tree666bc0e50e2c872cef79ceea690f3999fef4bffc /src/lib
parent883d885dc8690519d205c8baa275385af8a39f4b (diff)
parent0b97307b78b1d5e017e97ff90d5d05102cb70c1c (diff)
Merge branch '1.0' of ssh://houllier/home/carl/git/dvdomatic into 1.0
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/config.cc2
-rw-r--r--src/lib/ffmpeg_decoder.cc9
-rw-r--r--src/lib/video_content.cc4
-rw-r--r--src/lib/video_decoder.cc24
-rw-r--r--src/lib/video_decoder.h4
5 files changed, 39 insertions, 4 deletions
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 6fbd34d05..e4cebdc73 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -52,7 +52,7 @@ Config::Config ()
, _tms_path (N_("."))
, _sound_processor (SoundProcessor::from_id (N_("dolby_cp750")))
, _default_still_length (10)
- , _default_container (0)
+ , _default_container (Ratio::from_id ("185"))
, _default_dcp_content_type (0)
{
_allowed_dcp_frame_rates.push_back (24);
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 1d000b62b..2f890c0cd 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -247,7 +247,9 @@ FFmpegDecoder::pass ()
if (_ffmpeg_content->audio_stream() && _decode_audio) {
decode_audio_packet ();
}
-
+
+ /* Stop us being asked for any more data */
+ _next_video = _next_audio = _ffmpeg_content->length ();
return;
}
@@ -277,6 +279,8 @@ FFmpegDecoder::pass ()
}
avsubtitle_free (&sub);
}
+ } else {
+ cout << "[ffmpeg] other packet.\n";
}
av_free_packet (&_packet);
@@ -443,6 +447,7 @@ void
FFmpegDecoder::seek (Time t)
{
do_seek (t, false, false);
+ VideoDecoder::seek (t);
}
void
@@ -453,6 +458,7 @@ FFmpegDecoder::seek_back ()
}
do_seek (next() - 2.5 * TIME_HZ / video_frame_rate(), true, true);
+ VideoDecoder::seek_back ();
}
void
@@ -463,6 +469,7 @@ FFmpegDecoder::seek_forward ()
}
do_seek (next() - 0.5 * TIME_HZ / video_frame_rate(), true, true);
+ VideoDecoder::seek_forward ();
}
void
diff --git a/src/lib/video_content.cc b/src/lib/video_content.cc
index 84dee81d1..99471edc1 100644
--- a/src/lib/video_content.cc
+++ b/src/lib/video_content.cc
@@ -40,7 +40,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, Time s, ContentVideoFrame
: Content (f, s)
, _video_length (len)
, _video_frame_rate (0)
- , _ratio (0)
+ , _ratio (Ratio::from_id ("185"))
{
}
@@ -49,7 +49,7 @@ VideoContent::VideoContent (shared_ptr<const Film> f, boost::filesystem::path p)
: Content (f, p)
, _video_length (0)
, _video_frame_rate (0)
- , _ratio (0)
+ , _ratio (Ratio::from_id ("185"))
{
}
diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc
index a5147f42e..c5e1850c0 100644
--- a/src/lib/video_decoder.cc
+++ b/src/lib/video_decoder.cc
@@ -121,3 +121,27 @@ VideoDecoder::video_done () const
return (_video_content->length() - _next_video) < film->video_frames_to_time (1);
}
+
+void
+VideoDecoder::seek (Time t)
+{
+ _next_video = t;
+}
+
+void
+VideoDecoder::seek_back ()
+{
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+ _next_video -= film->video_frames_to_time (1);
+}
+
+void
+VideoDecoder::seek_forward ()
+{
+ shared_ptr<const Film> film = _film.lock ();
+ assert (film);
+ _next_video += film->video_frames_to_time (1);
+}
+
+
diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h
index 5073efead..b47d7fc3a 100644
--- a/src/lib/video_decoder.h
+++ b/src/lib/video_decoder.h
@@ -31,6 +31,10 @@ class VideoDecoder : public VideoSource, public virtual Decoder
public:
VideoDecoder (boost::shared_ptr<const Film>, boost::shared_ptr<const VideoContent>);
+ virtual void seek (Time);
+ virtual void seek_back ();
+ virtual void seek_forward ();
+
/* Calls for VideoContent to find out about itself */
/** @return video frame rate second, or 0 if unknown */