* @param index Index of the frame within the DCP.
* @param bit_rate Video bit rate to use.
*/
-DCPVideo::DCPVideo (
+DCPVideo::DCPVideo(
shared_ptr<const PlayerVideo> frame, int index, int dcp_fps, int64_t bit_rate, Resolution r
)
- : _frame (frame)
- , _index (index)
- , _frames_per_second (dcp_fps)
+ : _frame(frame)
+ , _index(index)
+ , _frames_per_second(dcp_fps)
, _video_bit_rate(bit_rate)
- , _resolution (r)
+ , _resolution(r)
{
}
-DCPVideo::DCPVideo (shared_ptr<const PlayerVideo> frame, shared_ptr<const cxml::Node> node)
- : _frame (frame)
+DCPVideo::DCPVideo(shared_ptr<const PlayerVideo> frame, shared_ptr<const cxml::Node> node)
+ : _frame(frame)
{
- _index = node->number_child<int> ("Index");
- _frames_per_second = node->number_child<int> ("FramesPerSecond");
+ _index = node->number_child<int>("Index");
+ _frames_per_second = node->number_child<int>("FramesPerSecond");
_video_bit_rate = node->number_child<int64_t>("VideoBitRate");
- _resolution = Resolution (node->optional_number_child<int>("Resolution").get_value_or(static_cast<int>(Resolution::TWO_K)));
+ _resolution = Resolution(node->optional_number_child<int>("Resolution").get_value_or(static_cast<int>(Resolution::TWO_K)));
}
shared_ptr<dcp::OpenJPEGImage>
-DCPVideo::convert_to_xyz (shared_ptr<const PlayerVideo> frame)
+DCPVideo::convert_to_xyz(shared_ptr<const PlayerVideo> frame)
{
shared_ptr<dcp::OpenJPEGImage> xyz;
- auto image = frame->image (bind(&PlayerVideo::keep_xyz_or_rgb, _1), VideoRange::FULL, false);
+ auto image = frame->image(bind(&PlayerVideo::keep_xyz_or_rgb, _1), VideoRange::FULL, false);
if (frame->colour_conversion()) {
- xyz = dcp::rgb_to_xyz (
+ xyz = dcp::rgb_to_xyz(
image->data()[0],
image->size(),
image->stride()[0],
{
auto image = _frame->image(bind(&PlayerVideo::keep_xyz_or_rgb, _1), VideoRange::FULL, false);
if (_frame->colour_conversion()) {
- dcp::rgb_to_xyz (
+ dcp::rgb_to_xyz(
image->data()[0],
dst,
image->size(),
* @return Encoded data.
*/
ArrayData
-DCPVideo::encode_locally () const
+DCPVideo::encode_locally() const
{
auto const comment = Config::instance()->dcp_j2k_comment();
int noise_amount = 2;
int pixel_skip = 16;
while (true) {
- enc = dcp::compress_j2k (
+ enc = dcp::compress_j2k(
xyz,
_video_bit_rate,
_frames_per_second,
break;
}
- LOG_GENERAL (N_("Frame %1 encoded size was small (%2); adding noise at level %3 with pixel skip %4"), _index, enc.size(), noise_amount, pixel_skip);
+ LOG_GENERAL(N_("Frame %1 encoded size was small (%2); adding noise at level %3 with pixel skip %4"), _index, enc.size(), noise_amount, pixel_skip);
/* The JPEG2000 is too low-bitrate for some decoders <cough>DSS200</cough> so add some noise
* and try again. This is slow but hopefully won't happen too often. We have to do
*/
xyz = convert_to_xyz(_frame);
- auto size = xyz->size ();
+ auto size = xyz->size();
auto pixels = size.width * size.height;
dcpomatic::RNG rng(42);
for (auto c = 0; c < 3; ++c) {
++noise_amount;
}
/* Something's gone badly wrong if this much noise doesn't help */
- DCPOMATIC_ASSERT (noise_amount < 16);
+ DCPOMATIC_ASSERT(noise_amount < 16);
}
switch (_frame->eyes()) {
case Eyes::BOTH:
- LOG_DEBUG_ENCODE (N_("Finished locally-encoded frame %1 for mono"), _index);
+ LOG_DEBUG_ENCODE(N_("Finished locally-encoded frame %1 for mono"), _index);
break;
case Eyes::LEFT:
- LOG_DEBUG_ENCODE (N_("Finished locally-encoded frame %1 for L"), _index);
+ LOG_DEBUG_ENCODE(N_("Finished locally-encoded frame %1 for L"), _index);
break;
case Eyes::RIGHT:
- LOG_DEBUG_ENCODE (N_("Finished locally-encoded frame %1 for R"), _index);
+ LOG_DEBUG_ENCODE(N_("Finished locally-encoded frame %1 for R"), _index);
break;
default:
break;
* @return Encoded data.
*/
ArrayData
-DCPVideo::encode_remotely (EncodeServerDescription serv, int timeout) const
+DCPVideo::encode_remotely(EncodeServerDescription serv, int timeout) const
{
auto socket = make_shared<Socket>(timeout);
- socket->set_send_buffer_size (512 * 1024);
+ socket->set_send_buffer_size(512 * 1024);
socket->connect(serv.host_name(), ENCODE_FRAME_PORT);
/* Collect all XML metadata */
xmlpp::Document doc;
- auto root = doc.create_root_node ("EncodingRequest");
+ auto root = doc.create_root_node("EncodingRequest");
cxml::add_text_child(root, "Version", fmt::to_string(SERVER_LINK_VERSION));
- add_metadata (root);
+ add_metadata(root);
- LOG_DEBUG_ENCODE (N_("Sending frame %1 to remote"), _index);
+ LOG_DEBUG_ENCODE(N_("Sending frame %1 to remote"), _index);
{
- Socket::WriteDigestScope ds (socket);
+ Socket::WriteDigestScope ds(socket);
/* Send XML metadata */
- auto xml = doc.write_to_string ("UTF-8");
+ auto xml = doc.write_to_string("UTF-8");
socket->write(xml.bytes() + 1);
- socket->write ((uint8_t *) xml.c_str(), xml.bytes() + 1);
+ socket->write((uint8_t *) xml.c_str(), xml.bytes() + 1);
/* Send binary data */
- LOG_TIMING("start-remote-send thread=%1", thread_id ());
- _frame->write_to_socket (socket);
+ LOG_TIMING("start-remote-send thread=%1", thread_id());
+ _frame->write_to_socket(socket);
}
/* Read the response (JPEG2000-encoded data); this blocks until the data
is ready and sent back.
*/
- Socket::ReadDigestScope ds (socket);
- LOG_TIMING("start-remote-encode thread=%1", thread_id ());
- ArrayData e (socket->read_uint32 ());
- LOG_TIMING("start-remote-receive thread=%1", thread_id ());
- socket->read (e.data(), e.size());
- LOG_TIMING("finish-remote-receive thread=%1", thread_id ());
+ Socket::ReadDigestScope ds(socket);
+ LOG_TIMING("start-remote-encode thread=%1", thread_id());
+ ArrayData e(socket->read_uint32());
+ LOG_TIMING("start-remote-receive thread=%1", thread_id());
+ socket->read(e.data(), e.size());
+ LOG_TIMING("finish-remote-receive thread=%1", thread_id());
if (!ds.check()) {
- throw NetworkError ("Checksums do not match");
+ throw NetworkError("Checksums do not match");
}
- LOG_DEBUG_ENCODE (N_("Finished remotely-encoded frame %1"), _index);
+ LOG_DEBUG_ENCODE(N_("Finished remotely-encoded frame %1"), _index);
return e;
}
void
-DCPVideo::add_metadata (xmlpp::Element* el) const
+DCPVideo::add_metadata(xmlpp::Element* el) const
{
cxml::add_text_child(el, "Index", fmt::to_string(_index));
cxml::add_text_child(el, "FramesPerSecond", fmt::to_string(_frames_per_second));
cxml::add_text_child(el, "VideoBitRate", fmt::to_string(_video_bit_rate));
cxml::add_text_child(el, "Resolution", fmt::to_string(int(_resolution)));
- _frame->add_metadata (el);
+ _frame->add_metadata(el);
}
Eyes
-DCPVideo::eyes () const
+DCPVideo::eyes() const
{
- return _frame->eyes ();
+ return _frame->eyes();
}
/** @return true if this DCPVideo is definitely the same as another;
* (apart from the frame index), false if it is probably not.
*/
bool
-DCPVideo::same (shared_ptr<const DCPVideo> other) const
+DCPVideo::same(shared_ptr<const DCPVideo> other) const
{
if (_frames_per_second != other->_frames_per_second ||
_video_bit_rate != other->_video_bit_rate ||
return false;
}
- return _frame->same (other->_frame);
+ return _frame->same(other->_frame);
}