summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2012-08-21 19:07:10 +0100
committerCarl Hetherington <cth@carlh.net>2012-08-21 19:07:10 +0100
commit3541f4c9bd91169e55a82b9fa46767b46ca06188 (patch)
treebb3612debc5df953c9dd09d8a0346d6351709f4e /src
parent283de7f01cffe219dc7dd3267a91e9f1ccda1f69 (diff)
Clarify (a bit) byte ordering for RGBA frames.
Diffstat (limited to 'src')
-rw-r--r--src/argb_frame.cc (renamed from src/rgba_frame.cc)8
-rw-r--r--src/argb_frame.h (renamed from src/rgba_frame.h)6
-rw-r--r--src/picture_frame.cc28
-rw-r--r--src/picture_frame.h4
-rw-r--r--src/wscript4
5 files changed, 27 insertions, 23 deletions
diff --git a/src/rgba_frame.cc b/src/argb_frame.cc
index 36157cd3..7a9ad2b9 100644
--- a/src/rgba_frame.cc
+++ b/src/argb_frame.cc
@@ -17,11 +17,11 @@
*/
-#include "rgba_frame.h"
+#include "argb_frame.h"
using namespace libdcp;
-RGBAFrame::RGBAFrame (int width, int height)
+ARGBFrame::ARGBFrame (int width, int height)
: _width (width)
, _height (height)
{
@@ -29,13 +29,13 @@ RGBAFrame::RGBAFrame (int width, int height)
}
-RGBAFrame::~RGBAFrame ()
+ARGBFrame::~ARGBFrame ()
{
delete[] _data;
}
int
-RGBAFrame::stride () const
+ARGBFrame::stride () const
{
return _width * 4;
}
diff --git a/src/rgba_frame.h b/src/argb_frame.h
index ef1fbaae..bc78b8fb 100644
--- a/src/rgba_frame.h
+++ b/src/argb_frame.h
@@ -22,11 +22,11 @@
namespace libdcp
{
-class RGBAFrame
+class ARGBFrame
{
public:
- RGBAFrame (int width, int height);
- ~RGBAFrame ();
+ ARGBFrame (int width, int height);
+ ~ARGBFrame ();
uint8_t* data () const {
return _data;
diff --git a/src/picture_frame.cc b/src/picture_frame.cc
index 844f0183..09ef4ae4 100644
--- a/src/picture_frame.cc
+++ b/src/picture_frame.cc
@@ -22,7 +22,7 @@
#include "KM_fileio.h"
#include "picture_frame.h"
#include "exceptions.h"
-#include "rgba_frame.h"
+#include "argb_frame.h"
#include "lut.h"
using namespace std;
@@ -61,8 +61,12 @@ PictureFrame::size () const
return _buffer->Size ();
}
-shared_ptr<RGBAFrame>
-PictureFrame::rgba_frame () const
+/** @return An ARGB representation of this frame. This is ARGB in the
+ * Cairo sense, so that each pixel takes up 4 bytes; the first byte
+ * is blue, second green, third red and fourth alpha (always 255).
+ */
+shared_ptr<ARGBFrame>
+PictureFrame::argb_frame () const
{
/* JPEG2000 -> decompressed XYZ */
@@ -94,12 +98,12 @@ PictureFrame::rgba_frame () const
int* xyz_y = xyz_frame->comps[1].data;
int* xyz_z = xyz_frame->comps[2].data;
- shared_ptr<RGBAFrame> rgba_frame (new RGBAFrame (xyz_frame->x1, xyz_frame->y1));
+ shared_ptr<ARGBFrame> argb_frame (new ARGBFrame (xyz_frame->x1, xyz_frame->y1));
- uint8_t* rgba = rgba_frame->data ();
+ uint8_t* argb = argb_frame->data ();
for (int y = 0; y < xyz_frame->y1; ++y) {
- uint8_t* rgba_line = rgba;
+ uint8_t* argb_line = argb;
for (int x = 0; x < xyz_frame->x1; ++x) {
assert (*xyz_x >= 0 && *xyz_y >= 0 && *xyz_z >= 0 && *xyz_x < 4096 && *xyz_x < 4096 && *xyz_z < 4096);
@@ -129,17 +133,17 @@ PictureFrame::rgba_frame () const
d.b = max (d.b, 0.0);
/* Out gamma LUT */
- *rgba_line++ = lut_out[(int) (d.r * COLOR_DEPTH)];
- *rgba_line++ = lut_out[(int) (d.g * COLOR_DEPTH)];
- *rgba_line++ = lut_out[(int) (d.b * COLOR_DEPTH)];
- *rgba_line++ = 0xff;
+ *argb_line++ = lut_out[(int) (d.b * COLOR_DEPTH)];
+ *argb_line++ = lut_out[(int) (d.g * COLOR_DEPTH)];
+ *argb_line++ = lut_out[(int) (d.r * COLOR_DEPTH)];
+ *argb_line++ = 0xff;
}
- rgba += rgba_frame->stride ();
+ argb += argb_frame->stride ();
}
opj_cio_close (cio);
opj_image_destroy (xyz_frame);
- return rgba_frame;
+ return argb_frame;
}
diff --git a/src/picture_frame.h b/src/picture_frame.h
index bb347294..76891d9f 100644
--- a/src/picture_frame.h
+++ b/src/picture_frame.h
@@ -29,7 +29,7 @@ namespace ASDCP {
namespace libdcp {
-class RGBAFrame;
+class ARGBFrame;
class PictureFrame
{
@@ -40,7 +40,7 @@ public:
uint8_t const * data () const;
int size () const;
- boost::shared_ptr<RGBAFrame> rgba_frame () const;
+ boost::shared_ptr<ARGBFrame> argb_frame () const;
private:
ASDCP::JP2K::FrameBuffer* _buffer;
diff --git a/src/wscript b/src/wscript
index bef62a93..1ca88bc6 100644
--- a/src/wscript
+++ b/src/wscript
@@ -18,7 +18,7 @@ def build(bld):
picture_frame.cc
pkl.cc
reel.cc
- rgba_frame.cc
+ argb_frame.cc
sound_asset.cc
sound_frame.cc
subtitle_asset.cc
@@ -39,7 +39,7 @@ def build(bld):
picture_asset.h
picture_frame.h
reel.h
- rgba_frame.h
+ argb_frame.h
sound_asset.h
sound_frame.h
subtitle_asset.h