#include "playlist.h"
#include "job.h"
#include "image.h"
+#include "image_proxy.h"
#include "ratio.h"
#include "resampler.h"
#include "log.h"
#include "scaler.h"
#include "player_video_frame.h"
+#define LOG_GENERAL(...) _film->log()->log (String::compose (__VA_ARGS__), Log::GENERAL);
+
using std::list;
using std::cout;
using std::min;
/** @param extra Amount of extra time to add to the content frame's time (for repeat) */
void
-Player::process_video (weak_ptr<Piece> weak_piece, shared_ptr<const Image> image, Eyes eyes, bool same, VideoContent::Frame frame, Time extra)
+Player::process_video (weak_ptr<Piece> weak_piece, shared_ptr<const ImageProxy> image, Eyes eyes, Part part, bool same, VideoContent::Frame frame, Time extra)
{
/* Keep a note of what came in so that we can repeat it if required */
_last_incoming_video.weak_piece = weak_piece;
_last_incoming_video.image = image;
_last_incoming_video.eyes = eyes;
+ _last_incoming_video.part = part;
_last_incoming_video.same = same;
_last_incoming_video.frame = frame;
_last_incoming_video.extra = extra;
content->crop(),
image_size,
_video_container_size,
- _film->scaler()
+ _film->scaler(),
+ eyes,
+ part,
+ content->colour_conversion()
)
);
_last_video = piece->content;
#endif
- Video (pi, eyes, content->colour_conversion(), same, time);
+ Video (pi, same, time);
_last_emit_was_black = false;
_video_position = piece->video_position = (time + TIME_HZ / _film->video_frame_rate());
if (fc) {
shared_ptr<FFmpegDecoder> fd (new FFmpegDecoder (_film, fc, _video, _audio));
- fd->Video.connect (bind (&Player::process_video, this, weak_ptr<Piece> (piece), _1, _2, _3, _4, 0));
+ fd->Video.connect (bind (&Player::process_video, this, weak_ptr<Piece> (piece), _1, _2, _3, _4, _5, 0));
fd->Audio.connect (bind (&Player::process_audio, this, weak_ptr<Piece> (piece), _1, _2));
fd->Subtitle.connect (bind (&Player::process_subtitle, this, weak_ptr<Piece> (piece), _1, _2, _3, _4));
if (!reusing) {
shared_ptr<ImageDecoder> id (new ImageDecoder (_film, ic));
- id->Video.connect (bind (&Player::process_video, this, weak_ptr<Piece> (piece), _1, _2, _3, _4, 0));
+ id->Video.connect (bind (&Player::process_video, this, weak_ptr<Piece> (piece), _1, _2, _3, _4, _5, 0));
piece->decoder = id;
}
}
_black_frame.reset (
new PlayerVideoFrame (
- im,
+ shared_ptr<ImageProxy> (new RawImageProxy (im, _film->log ())),
Crop(),
_video_container_size,
_video_container_size,
- Scaler::from_id ("bicubic")
+ Scaler::from_id ("bicubic"),
+ EYES_BOTH,
+ PART_WHOLE,
+ ColourConversion ()
)
);
}
return shared_ptr<Resampler> ();
}
- _film->log()->log (
- String::compose (
- "Creating new resampler for %1 to %2 with %3 channels", c->content_audio_frame_rate(), c->output_audio_frame_rate(), c->audio_channels()
- )
+ LOG_GENERAL (
+ "Creating new resampler for %1 to %2 with %3 channels", c->content_audio_frame_rate(), c->output_audio_frame_rate(), c->audio_channels()
);
shared_ptr<Resampler> r (new Resampler (c->content_audio_frame_rate(), c->output_audio_frame_rate(), c->audio_channels()));
_last_video.reset ();
#endif
- Video (_black_frame, EYES_BOTH, ColourConversion(), _last_emit_was_black, _video_position);
+ Video (_black_frame, _last_emit_was_black, _video_position);
_video_position += _film->video_frames_to_time (1);
_last_emit_was_black = true;
}
_last_incoming_video.weak_piece,
_last_incoming_video.image,
_last_incoming_video.eyes,
+ _last_incoming_video.part,
_last_incoming_video.same,
_last_incoming_video.frame,
_last_incoming_video.extra