summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-11-01 23:40:01 +0100
committerCarl Hetherington <cth@carlh.net>2020-11-02 23:10:04 +0100
commit6fa9748f382302fa88292b4219598bb81edc7bd0 (patch)
tree83f0859c934da2293913efb2c5ba029526e5634d /src/lib
parentb639b7b20f1ab341194bcd5c76700ca419254d11 (diff)
Replace dcp::Data with dcp::ArrayData
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/crypto.cc32
-rw-r--r--src/lib/crypto.h12
-rw-r--r--src/lib/dcp_video.cc12
-rw-r--r--src/lib/dcp_video.h6
-rw-r--r--src/lib/emailer.cc6
-rw-r--r--src/lib/encode_server.cc6
-rw-r--r--src/lib/ffmpeg_image_proxy.cc16
-rw-r--r--src/lib/ffmpeg_image_proxy.h6
-rw-r--r--src/lib/image.cc4
-rw-r--r--src/lib/image.h3
-rw-r--r--src/lib/reel_writer.cc6
-rw-r--r--src/lib/string_text_file.cc8
12 files changed, 57 insertions, 60 deletions
diff --git a/src/lib/crypto.cc b/src/lib/crypto.cc
index c67fc27fa..494924daa 100644
--- a/src/lib/crypto.cc
+++ b/src/lib/crypto.cc
@@ -34,39 +34,39 @@ using namespace dcpomatic;
/** The cipher that this code uses */
#define CIPHER EVP_aes_256_cbc()
-dcp::Data
+dcp::ArrayData
dcpomatic::random_iv ()
{
EVP_CIPHER const * cipher = CIPHER;
- dcp::Data iv (EVP_CIPHER_iv_length(cipher));
- RAND_bytes (iv.data().get(), iv.size());
+ dcp::ArrayData iv (EVP_CIPHER_iv_length(cipher));
+ RAND_bytes (iv.data(), iv.size());
return iv;
}
-dcp::Data
-dcpomatic::encrypt (string plaintext, dcp::Data key, dcp::Data iv)
+dcp::ArrayData
+dcpomatic::encrypt (string plaintext, dcp::ArrayData key, dcp::ArrayData iv)
{
EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new ();
if (!ctx) {
throw CryptoError ("could not create cipher context");
}
- int r = EVP_EncryptInit_ex (ctx, CIPHER, 0, key.data().get(), iv.data().get());
+ int r = EVP_EncryptInit_ex (ctx, CIPHER, 0, key.data(), iv.data());
if (r != 1) {
throw CryptoError ("could not initialise cipher context for encryption");
}
- dcp::Data ciphertext (plaintext.size() * 2);
+ dcp::ArrayData ciphertext (plaintext.size() * 2);
int len;
- r = EVP_EncryptUpdate (ctx, ciphertext.data().get(), &len, (uint8_t const *) plaintext.c_str(), plaintext.size());
+ r = EVP_EncryptUpdate (ctx, ciphertext.data(), &len, (uint8_t const *) plaintext.c_str(), plaintext.size());
if (r != 1) {
throw CryptoError ("could not encrypt data");
}
int ciphertext_len = len;
- r = EVP_EncryptFinal_ex (ctx, ciphertext.data().get() + len, &len);
+ r = EVP_EncryptFinal_ex (ctx, ciphertext.data() + len, &len);
if (r != 1) {
throw CryptoError ("could not finish encryption");
}
@@ -79,40 +79,40 @@ dcpomatic::encrypt (string plaintext, dcp::Data key, dcp::Data iv)
}
string
-dcpomatic::decrypt (dcp::Data ciphertext, dcp::Data key, dcp::Data iv)
+dcpomatic::decrypt (dcp::ArrayData ciphertext, dcp::ArrayData key, dcp::ArrayData iv)
{
EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new ();
if (!ctx) {
throw CryptoError ("could not create cipher context");
}
- int r = EVP_DecryptInit_ex (ctx, CIPHER, 0, key.data().get(), iv.data().get());
+ int r = EVP_DecryptInit_ex (ctx, CIPHER, 0, key.data(), iv.data());
if (r != 1) {
throw CryptoError ("could not initialise cipher context for decryption");
}
- dcp::Data plaintext (ciphertext.size() * 2);
+ dcp::ArrayData plaintext (ciphertext.size() * 2);
int len;
- r = EVP_DecryptUpdate (ctx, plaintext.data().get(), &len, ciphertext.data().get(), ciphertext.size());
+ r = EVP_DecryptUpdate (ctx, plaintext.data(), &len, ciphertext.data(), ciphertext.size());
if (r != 1) {
throw CryptoError ("could not decrypt data");
}
int plaintext_len = len;
- r = EVP_DecryptFinal_ex (ctx, plaintext.data().get() + len, &len);
+ r = EVP_DecryptFinal_ex (ctx, plaintext.data() + len, &len);
if (r != 1) {
throw CryptoError ("could not finish decryption");
}
plaintext_len += len;
plaintext.set_size (plaintext_len + 1);
- plaintext.data().get()[plaintext_len] = '\0';
+ plaintext.data()[plaintext_len] = '\0';
EVP_CIPHER_CTX_free (ctx);
- return string ((char *) plaintext.data().get());
+ return string ((char *) plaintext.data());
}
int
diff --git a/src/lib/crypto.h b/src/lib/crypto.h
index e450d4db1..ee0ff9b55 100644
--- a/src/lib/crypto.h
+++ b/src/lib/crypto.h
@@ -18,14 +18,14 @@
*/
-#include <dcp/data.h>
+#include <dcp/array_data.h>
namespace dcpomatic {
-
-dcp::Data random_iv ();
-dcp::Data encrypt (std::string plaintext, dcp::Data key, dcp::Data iv);
-std::string decrypt (dcp::Data ciphertext, dcp::Data key, dcp::Data iv);
-int crypto_key_length ();
+
+dcp::ArrayData random_iv ();
+dcp::ArrayData encrypt (std::string plaintext, dcp::ArrayData key, dcp::ArrayData iv);
+std::string decrypt (dcp::ArrayData ciphertext, dcp::ArrayData key, dcp::ArrayData iv);
+int crypto_key_length ();
}
diff --git a/src/lib/dcp_video.cc b/src/lib/dcp_video.cc
index 36928b3fc..b3461e569 100644
--- a/src/lib/dcp_video.cc
+++ b/src/lib/dcp_video.cc
@@ -60,7 +60,7 @@ using std::string;
using std::cout;
using boost::shared_ptr;
using dcp::Size;
-using dcp::Data;
+using dcp::ArrayData;
using dcp::raw_convert;
#if BOOST_VERSION >= 106100
using namespace boost::placeholders;
@@ -118,12 +118,12 @@ DCPVideo::convert_to_xyz (shared_ptr<const PlayerVideo> frame, dcp::NoteHandler
/** J2K-encode this frame on the local host.
* @return Encoded data.
*/
-Data
+ArrayData
DCPVideo::encode_locally ()
{
string const comment = Config::instance()->dcp_j2k_comment();
- Data enc = dcp::compress_j2k (
+ ArrayData enc = dcp::compress_j2k (
convert_to_xyz (_frame, boost::bind(&Log::dcp_log, dcpomatic_log.get(), _1, _2)),
_j2k_bandwidth,
_frames_per_second,
@@ -154,7 +154,7 @@ DCPVideo::encode_locally ()
* @param timeout timeout in seconds.
* @return Encoded data.
*/
-Data
+ArrayData
DCPVideo::encode_remotely (EncodeServerDescription serv, int timeout)
{
boost::asio::io_service io_service;
@@ -192,9 +192,9 @@ DCPVideo::encode_remotely (EncodeServerDescription serv, int timeout)
*/
Socket::ReadDigestScope ds (socket);
LOG_TIMING("start-remote-encode thread=%1", thread_id ());
- Data e (socket->read_uint32 ());
+ ArrayData e (socket->read_uint32 ());
LOG_TIMING("start-remote-receive thread=%1", thread_id ());
- socket->read (e.data().get(), e.size());
+ socket->read (e.data(), e.size());
LOG_TIMING("finish-remote-receive thread=%1", thread_id ());
if (!ds.check()) {
throw NetworkError ("Checksums do not match");
diff --git a/src/lib/dcp_video.h b/src/lib/dcp_video.h
index 81ddc4470..aa11d7d3c 100644
--- a/src/lib/dcp_video.h
+++ b/src/lib/dcp_video.h
@@ -21,7 +21,7 @@
#include "types.h"
#include "encode_server_description.h"
#include <libcxml/cxml.h>
-#include <dcp/data.h>
+#include <dcp/array_data.h>
/** @file src/dcp_video_frame.h
* @brief A single frame of video destined for a DCP.
@@ -45,8 +45,8 @@ public:
DCPVideo (boost::shared_ptr<const PlayerVideo>, int, int, int, Resolution);
DCPVideo (boost::shared_ptr<const PlayerVideo>, cxml::ConstNodePtr);
- dcp::Data encode_locally ();
- dcp::Data encode_remotely (EncodeServerDescription, int timeout = 30);
+ dcp::ArrayData encode_locally ();
+ dcp::ArrayData encode_remotely (EncodeServerDescription, int timeout = 30);
int index () const {
return _index;
diff --git a/src/lib/emailer.cc b/src/lib/emailer.cc
index dc216e90c..6fe537eb1 100644
--- a/src/lib/emailer.cc
+++ b/src/lib/emailer.cc
@@ -35,7 +35,7 @@ using std::list;
using std::cout;
using std::pair;
using boost::shared_ptr;
-using dcp::Data;
+using dcp::ArrayData;
Emailer::Emailer (string from, list<string> to, string subject, string body)
: _from (from)
@@ -155,8 +155,8 @@ Emailer::send (string server, int port, EmailProtocol protocol, string user, str
BIO* bio = BIO_new (BIO_s_mem());
bio = BIO_push (b64, bio);
- Data data (i.file);
- BIO_write (bio, data.data().get(), data.size());
+ ArrayData data (i.file);
+ BIO_write (bio, data.data(), data.size());
(void) BIO_flush (bio);
char* out;
diff --git a/src/lib/encode_server.cc b/src/lib/encode_server.cc
index f4224798b..9e096fdfa 100644
--- a/src/lib/encode_server.cc
+++ b/src/lib/encode_server.cc
@@ -65,8 +65,8 @@ using boost::thread;
using boost::bind;
using boost::scoped_array;
using boost::optional;
+using dcp::ArrayData;
using dcp::Size;
-using dcp::Data;
using dcp::raw_convert;
EncodeServer::EncodeServer (bool verbose, int num_threads)
@@ -145,14 +145,14 @@ EncodeServer::process (shared_ptr<Socket> socket, struct timeval& after_read, st
gettimeofday (&after_read, 0);
- Data encoded = dcp_video_frame.encode_locally ();
+ ArrayData encoded = dcp_video_frame.encode_locally ();
gettimeofday (&after_encode, 0);
try {
Socket::WriteDigestScope ds (socket);
socket->write (encoded.size());
- socket->write (encoded.data().get(), encoded.size());
+ socket->write (encoded.data(), encoded.size());
} catch (std::exception& e) {
cerr << "Send failed; frame " << dcp_video_frame.index() << "\n";
LOG_ERROR ("Send failed; frame %1", dcp_video_frame.index());
diff --git a/src/lib/ffmpeg_image_proxy.cc b/src/lib/ffmpeg_image_proxy.cc
index f2b72059b..602185bb8 100644
--- a/src/lib/ffmpeg_image_proxy.cc
+++ b/src/lib/ffmpeg_image_proxy.cc
@@ -56,7 +56,7 @@ FFmpegImageProxy::FFmpegImageProxy (boost::filesystem::path path)
}
-FFmpegImageProxy::FFmpegImageProxy (dcp::Data data)
+FFmpegImageProxy::FFmpegImageProxy (dcp::ArrayData data)
: _data (data)
, _pos (0)
{
@@ -67,8 +67,8 @@ FFmpegImageProxy::FFmpegImageProxy (shared_ptr<cxml::Node>, shared_ptr<Socket> s
: _pos (0)
{
uint32_t const size = socket->read_uint32 ();
- _data = dcp::Data (size);
- socket->read (_data.data().get(), size);
+ _data = dcp::ArrayData (size);
+ socket->read (_data.data(), size);
}
static int
@@ -90,7 +90,7 @@ FFmpegImageProxy::avio_read (uint8_t* buffer, int const amount)
if (to_do == 0) {
return AVERROR_EOF;
}
- memcpy (buffer, _data.data().get() + _pos, to_do);
+ memcpy (buffer, _data.data() + _pos, to_do);
_pos += to_do;
return to_do;
}
@@ -212,7 +212,7 @@ void
FFmpegImageProxy::write_to_socket (shared_ptr<Socket> socket) const
{
socket->write (_data.size());
- socket->write (_data.data().get(), _data.size());
+ socket->write (_data.data(), _data.size());
}
bool
@@ -223,11 +223,7 @@ FFmpegImageProxy::same (shared_ptr<const ImageProxy> other) const
return false;
}
- if (_data.size() != mp->_data.size()) {
- return false;
- }
-
- return memcmp (_data.data().get(), mp->_data.data().get(), _data.size()) == 0;
+ return _data == mp->_data;
}
size_t
diff --git a/src/lib/ffmpeg_image_proxy.h b/src/lib/ffmpeg_image_proxy.h
index aa77003a4..62b99d280 100644
--- a/src/lib/ffmpeg_image_proxy.h
+++ b/src/lib/ffmpeg_image_proxy.h
@@ -19,7 +19,7 @@
*/
#include "image_proxy.h"
-#include <dcp/data.h>
+#include <dcp/array_data.h>
#include <boost/thread/mutex.hpp>
#include <boost/filesystem.hpp>
@@ -27,7 +27,7 @@ class FFmpegImageProxy : public ImageProxy
{
public:
explicit FFmpegImageProxy (boost::filesystem::path);
- explicit FFmpegImageProxy (dcp::Data);
+ explicit FFmpegImageProxy (dcp::ArrayData);
FFmpegImageProxy (boost::shared_ptr<cxml::Node> xml, boost::shared_ptr<Socket> socket);
Result image (
@@ -43,7 +43,7 @@ public:
int64_t avio_seek (int64_t const pos, int whence);
private:
- dcp::Data _data;
+ dcp::ArrayData _data;
mutable int64_t _pos;
/** Path of a file that this image came from, if applicable; stored so that
failed-decode errors can give more detail.
diff --git a/src/lib/image.cc b/src/lib/image.cc
index 002c7df9a..03f1bf6dc 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -1278,7 +1278,7 @@ Image::png_error (char const * message)
throw EncodeError (String::compose ("Error during PNG write: %1", message));
}
-dcp::Data
+dcp::ArrayData
Image::as_png () const
{
DCPOMATIC_ASSERT (bytes_per_pixel(0) == 4);
@@ -1317,5 +1317,5 @@ Image::as_png () const
png_destroy_write_struct (&png_ptr, &info_ptr);
png_free (png_ptr, row_pointers);
- return dcp::Data (state.data, state.size);
+ return dcp::ArrayData (state.data, state.size);
}
diff --git a/src/lib/image.h b/src/lib/image.h
index eab71c2b1..ab9b3c78a 100644
--- a/src/lib/image.h
+++ b/src/lib/image.h
@@ -31,6 +31,7 @@
extern "C" {
#include <libavutil/pixfmt.h>
}
+#include <dcp/array_data.h>
#include <dcp/colour_conversion.h>
#include <boost/shared_ptr.hpp>
#include <boost/enable_shared_from_this.hpp>
@@ -83,7 +84,7 @@ public:
size_t memory_used () const;
- dcp::Data as_png () const;
+ dcp::ArrayData as_png () const;
void png_error (char const * message);
diff --git a/src/lib/reel_writer.cc b/src/lib/reel_writer.cc
index a42c6182a..097b9d84b 100644
--- a/src/lib/reel_writer.cc
+++ b/src/lib/reel_writer.cc
@@ -762,15 +762,15 @@ ReelWriter::existing_picture_frame_ok (FILE* asset_file, shared_ptr<InfoFileHand
/* Read the data from the asset and hash it */
dcpomatic_fseek (asset_file, info.offset, SEEK_SET);
- Data data (info.size);
- size_t const read = fread (data.data().get(), 1, data.size(), asset_file);
+ ArrayData data (info.size);
+ size_t const read = fread (data.data(), 1, data.size(), asset_file);
LOG_GENERAL ("Read %1 bytes of asset data; wanted %2", read, info.size);
if (read != static_cast<size_t> (data.size ())) {
LOG_GENERAL ("Existing frame %1 is incomplete", frame);
ok = false;
} else {
Digester digester;
- digester.add (data.data().get(), data.size());
+ digester.add (data.data(), data.size());
LOG_GENERAL ("Hash %1 vs %2", digester.get(), info.hash);
if (digester.get() != info.hash) {
LOG_GENERAL ("Existing frame %1 failed hash check", frame);
diff --git a/src/lib/string_text_file.cc b/src/lib/string_text_file.cc
index d3c56832d..793619003 100644
--- a/src/lib/string_text_file.cc
+++ b/src/lib/string_text_file.cc
@@ -38,7 +38,7 @@ using std::string;
using boost::shared_ptr;
using boost::scoped_array;
using boost::optional;
-using dcp::Data;
+using dcp::ArrayData;
using namespace dcpomatic;
StringTextFile::StringTextFile (shared_ptr<const StringTextFileContent> content)
@@ -64,11 +64,11 @@ StringTextFile::StringTextFile (shared_ptr<const StringTextFileContent> content)
} else {
/* Text-based file; sort out its character encoding before we try to parse it */
- Data in (content->path (0));
+ ArrayData in (content->path (0));
UErrorCode status = U_ZERO_ERROR;
UCharsetDetector* detector = ucsdet_open (&status);
- ucsdet_setText (detector, reinterpret_cast<const char *> (in.data().get()), in.size(), &status);
+ ucsdet_setText (detector, reinterpret_cast<const char *>(in.data()), in.size(), &status);
UCharsetMatch const * match = ucsdet_detect (detector, &status);
char const * in_charset = ucsdet_getName (match, &status);
@@ -78,7 +78,7 @@ StringTextFile::StringTextFile (shared_ptr<const StringTextFileContent> content)
scoped_array<uint16_t> utf16 (new uint16_t[in.size() * 2]);
int const utf16_len = ucnv_toUChars (
to_utf16, reinterpret_cast<UChar*>(utf16.get()), in.size() * 2,
- reinterpret_cast<const char *> (in.data().get()), in.size(),
+ reinterpret_cast<const char *>(in.data()), in.size(),
&status
);