#include "film.h"
#include "exceptions.h"
#include "video_content.h"
+#include "frame_interval_checker.h"
#include <boost/filesystem.hpp>
#include <iostream>
#include "i18n.h"
using std::cout;
-using boost::shared_ptr;
+using std::shared_ptr;
using dcp::Size;
+using namespace dcpomatic;
-ImageDecoder::ImageDecoder (shared_ptr<const ImageContent> c)
- : _image_content (c)
+ImageDecoder::ImageDecoder (shared_ptr<const Film> film, shared_ptr<const ImageContent> c)
+ : Decoder (film)
+ , _image_content (c)
, _frame_video_position (0)
{
video.reset (new VideoDecoder (this, c));
}
bool
-ImageDecoder::pass (boost::shared_ptr<const Film> film)
+ImageDecoder::pass ()
{
if (_frame_video_position >= _image_content->video->length()) {
return true;
*/
_image.reset (new J2KImageProxy (path, _image_content->video->size(), pf));
} else {
- _image.reset (new FFmpegImageProxy (path));
+ _image.reset (new FFmpegImageProxy(path, _image_content->video->range()));
}
}
- video->emit (film, _image, _frame_video_position);
+ video->emit (film(), _image, _frame_video_position);
++_frame_video_position;
return false;
}
void
-ImageDecoder::seek (shared_ptr<const Film> film, ContentTime time, bool accurate)
+ImageDecoder::seek (ContentTime time, bool accurate)
{
- Decoder::seek (film, time, accurate);
- _frame_video_position = time.frames_round (_image_content->active_video_frame_rate(film));
+ Decoder::seek (time, accurate);
+ _frame_video_position = time.frames_round (_image_content->active_video_frame_rate(film()));
}