using std::string;
using std::stringstream;
using std::ofstream;
+using std::cout;
using boost::shared_ptr;
/** Construct a DCP video frame.
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.
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;
+
}
class EncodedData
{
public:
- /** @param d Data (will not be freed by this class, but may be by subclasses)
- * @param s Size of data, in bytes.
+ /** @param s Size of data, in bytes.
*/
- EncodedData (uint8_t* d, int s)
- : _data (d)
- , _size (s)
- {}
+ EncodedData (int s);
- virtual ~EncodedData () {}
+ virtual ~EncodedData ();
void send (boost::shared_ptr<Socket> socket);
void write (boost::shared_ptr<const EncodeOptions>, SourceFrame);
protected:
uint8_t* _data; ///< data
int _size; ///< data size in bytes
+
+private:
+ /* No copy construction */
+ EncodedData (EncodedData const &);
};
/** @class LocallyEncodedData
class LocallyEncodedData : public EncodedData
{
public:
- /** @param d Data (which will not be freed by this class)
+ /** @param d Data (which will be copied by this class)
* @param s Size of data, in bytes.
*/
- LocallyEncodedData (uint8_t* d, int s)
- : EncodedData (d, s)
- {}
+ LocallyEncodedData (uint8_t* d, int s);
};
/** @class RemotelyEncodedData
{
public:
RemotelyEncodedData (int s);
- ~RemotelyEncodedData ();
};
/** @class DCPVideoFrame
}
if (encoded) {
- boost::mutex::scoped_lock lock (_writer_mutex);
+ boost::mutex::scoped_lock lock2 (_writer_mutex);
_write_queue.push_back (make_pair (encoded, vf->frame ()));
_writer_condition.notify_all ();
} else {