summaryrefslogtreecommitdiff
path: root/src/lib/dcp_video_frame.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2013-01-11 19:20:51 +0000
committerCarl Hetherington <cth@carlh.net>2013-01-11 19:20:51 +0000
commitef0aa27c671f9c34b9aad79015bcc50cb10c0fc5 (patch)
tree7216d311005a1469f079006cbb17f734a21a91ea /src/lib/dcp_video_frame.cc
parentd0babb26ab341026fe227de810ed30c6c9f65cf2 (diff)
Encoded data must be copied; disambiguate second lock in encoder_thread.
Diffstat (limited to 'src/lib/dcp_video_frame.cc')
-rw-r--r--src/lib/dcp_video_frame.cc26
1 files changed, 20 insertions, 6 deletions
diff --git a/src/lib/dcp_video_frame.cc b/src/lib/dcp_video_frame.cc
index 8b70b0aa4..f84fa8a3f 100644
--- a/src/lib/dcp_video_frame.cc
+++ b/src/lib/dcp_video_frame.cc
@@ -59,6 +59,7 @@
using std::string;
using std::stringstream;
using std::ofstream;
+using std::cout;
using boost::shared_ptr;
/** Construct a DCP video frame.
@@ -371,6 +372,18 @@ DCPVideoFrame::encode_remotely (ServerDescription const * serv)
return e;
}
+EncodedData::EncodedData (int s)
+ : _data (new uint8_t[s])
+ , _size (s)
+{
+
+}
+
+EncodedData::~EncodedData ()
+{
+ delete[] _data;
+}
+
/** Write this data to a J2K file.
* @param opt Options.
* @param frame Frame index.
@@ -413,14 +426,15 @@ EncodedData::send (shared_ptr<Socket> socket)
socket->write (_data, _size, 30);
}
-/** @param s Size of data in bytes */
-RemotelyEncodedData::RemotelyEncodedData (int s)
- : EncodedData (new uint8_t[s], s)
+LocallyEncodedData::LocallyEncodedData (uint8_t* d, int s)
+ : EncodedData (s)
{
-
+ memcpy (_data, d, s);
}
-RemotelyEncodedData::~RemotelyEncodedData ()
+/** @param s Size of data in bytes */
+RemotelyEncodedData::RemotelyEncodedData (int s)
+ : EncodedData (s)
{
- delete[] _data;
+
}