diff options
| author | Carl Hetherington <cth@carlh.net> | 2012-08-21 19:07:10 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2012-08-21 19:07:10 +0100 |
| commit | 3541f4c9bd91169e55a82b9fa46767b46ca06188 (patch) | |
| tree | bb3612debc5df953c9dd09d8a0346d6351709f4e | |
| parent | 283de7f01cffe219dc7dd3267a91e9f1ccda1f69 (diff) | |
Clarify (a bit) byte ordering for RGBA frames.
| -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.cc | 28 | ||||
| -rw-r--r-- | src/picture_frame.h | 4 | ||||
| -rw-r--r-- | src/wscript | 4 |
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 |
