Skip to content

Commit ded1d31

Browse files
committed
Merge pull request #465 from stfuchs/feature/camera-settings
Feature/camera settings
2 parents 54b3924 + 4eec3e0 commit ded1d31

File tree

4 files changed

+18
-2
lines changed

4 files changed

+18
-2
lines changed

include/libfreenect2/frame_listener.hpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,11 +54,17 @@ class LIBFREENECT2_API Frame
5454
size_t height; ///< Number of lines in the frame.
5555
size_t bytes_per_pixel; ///< Number of bytes in a pixel.
5656
unsigned char* data; ///< Data of the frame (aligned).
57+
float exposure; ///< Get the exposure time set by the color camera.
58+
float gain; ///< Get the gain set by the color camera.
59+
float gamma; ///< Get the gamma level set by the color camera.
5760

5861
Frame(size_t width, size_t height, size_t bytes_per_pixel) :
5962
width(width),
6063
height(height),
61-
bytes_per_pixel(bytes_per_pixel)
64+
bytes_per_pixel(bytes_per_pixel),
65+
exposure(0.f),
66+
gain(0.f),
67+
gamma(0.f)
6268
{
6369
const size_t alignment = 64;
6470
size_t space = width * height * bytes_per_pixel + alignment;

include/libfreenect2/rgb_packet_processor.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ struct LIBFREENECT2_API RgbPacket
4747
uint32_t timestamp;
4848
unsigned char *jpeg_buffer; ///< JPEG data.
4949
size_t jpeg_buffer_length; ///< Length of the JPEG data.
50+
float exposure;
51+
float gain;
52+
float gamma;
53+
5054
};
5155

5256
typedef PacketProcessor<RgbPacket> BaseRgbPacketProcessor;

src/rgb_packet_stream_parser.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ LIBFREENECT2_PACK(struct RgbPacketFooter {
5757
float gain; // ? ranges from 1.0 when camera is clear to 1.5 when camera is covered.
5858
uint32_t magic_footer; // is 'BBBB' equal 0x42424242
5959
uint32_t packet_size;
60-
float unknown3; // seems 1.0f always
60+
float gamma; // ranges from 1.0f to about 6.4 when camera is fully covered
6161
uint32_t unknown4[3]; // seems to be 0 all the time.
6262
});
6363

@@ -149,6 +149,9 @@ void RgbPacketStreamParser::onDataReceived(unsigned char* buffer, size_t length)
149149
RgbPacket rgb_packet;
150150
rgb_packet.sequence = raw_packet->sequence;
151151
rgb_packet.timestamp = footer->timestamp;
152+
rgb_packet.exposure = footer->exposure;
153+
rgb_packet.gain = footer->gain;
154+
rgb_packet.gamma = footer->gamma;
152155
rgb_packet.jpeg_buffer = raw_packet->jpeg_buffer;
153156
rgb_packet.jpeg_buffer_length = jpeg_length;
154157

src/turbo_jpeg_rgb_packet_processor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,9 @@ void TurboJpegRgbPacketProcessor::process(const RgbPacket &packet)
8888

8989
impl_->frame->timestamp = packet.timestamp;
9090
impl_->frame->sequence = packet.sequence;
91+
impl_->frame->exposure = packet.exposure;
92+
impl_->frame->gain = packet.gain;
93+
impl_->frame->gamma = packet.gamma;
9194

9295
int r = tjDecompress2(impl_->decompressor, packet.jpeg_buffer, packet.jpeg_buffer_length, impl_->frame->data, 1920, 1920 * tjPixelSize[TJPF_BGRX], 1080, TJPF_BGRX, 0);
9396

0 commit comments

Comments
 (0)