#include "dcp_video_frame.h"
#include "lut.h"
#include "config.h"
-#include "film_state.h"
#include "options.h"
#include "exceptions.h"
#include "server.h"
#include "log.h"
#include "subtitle.h"
-using namespace std;
-using namespace boost;
+using std::string;
+using std::stringstream;
+using std::ofstream;
+using boost::shared_ptr;
/** Construct a DCP video frame.
* @param input Input image.
* @param l Log to write to.
*/
DCPVideoFrame::DCPVideoFrame (
- shared_ptr<Image> yuv, shared_ptr<Subtitle> sub,
+ shared_ptr<const Image> yuv, shared_ptr<Subtitle> sub,
Size out, int p, int subtitle_offset, float subtitle_scale,
- Scaler const * s, int f, float fps, string pp, int clut, int bw, Log* l
+ Scaler const * s, SourceFrame f, float fps, string pp, int clut, int bw, Log* l
)
: _input (yuv)
, _subtitle (sub)
, _subtitle_scale (subtitle_scale)
, _scaler (s)
, _frame (f)
- /* we round here; not sure if this is right */
- , _frames_per_second (rint (fps))
+ , _frames_per_second (dcp_frame_rate(fps).frames_per_second)
, _post_process (pp)
, _colour_lut_index (clut)
, _j2k_bandwidth (bw)
shared_ptr<EncodedData>
DCPVideoFrame::encode_remotely (ServerDescription const * serv)
{
- asio::io_service io_service;
- asio::ip::tcp::resolver resolver (io_service);
- asio::ip::tcp::resolver::query query (serv->host_name(), boost::lexical_cast<string> (Config::instance()->server_port ()));
- asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve (query);
+ boost::asio::io_service io_service;
+ boost::asio::ip::tcp::resolver resolver (io_service);
+ boost::asio::ip::tcp::resolver::query query (serv->host_name(), boost::lexical_cast<string> (Config::instance()->server_port ()));
+ boost::asio::ip::tcp::resolver::iterator endpoint_iterator = resolver.resolve (query);
shared_ptr<Socket> socket (new Socket);
<< "subtitle_height " << _subtitle->image()->size().height << "\n";
}
+ _log->log (String::compose (
+ "Sending to remote; pixel format %1, components %2, lines (%3,%4,%5), line sizes (%6,%7,%8)",
+ _input->pixel_format(), _input->components(),
+ _input->lines(0), _input->lines(1), _input->lines(2),
+ _input->line_size()[0], _input->line_size()[1], _input->line_size()[2]
+ ));
+
socket->write ((uint8_t *) s.str().c_str(), s.str().length() + 1, 30);
_input->write_to_socket (socket);
* @param frame Frame index.
*/
void
-EncodedData::write (shared_ptr<const Options> opt, int frame)
+EncodedData::write (shared_ptr<const Options> opt, SourceFrame frame)
{
string const tmp_j2k = opt->frame_out_path (frame, true);
string const real_j2k = opt->frame_out_path (frame, false);
/* Rename the file from foo.j2c.tmp to foo.j2c now that it is complete */
- filesystem::rename (tmp_j2k, real_j2k);
+ boost::filesystem::rename (tmp_j2k, real_j2k);
/* Write a file containing the hash */
string const hash = real_j2k + ".md5";