Skip to content

Commit

Permalink
Merge pull request #4622 from matkatz/enable-mjpeg
Browse files Browse the repository at this point in the history
Enable MJPEG
  • Loading branch information
ev-mp committed Aug 20, 2019
2 parents 9ee4317 + d31e650 commit 07bc6d9
Show file tree
Hide file tree
Showing 23 changed files with 184 additions and 79 deletions.
8 changes: 8 additions & 0 deletions include/librealsense2/h/rs_frame.h
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,14 @@ rs2_sensor* rs2_get_frame_sensor(const rs2_frame* frame, rs2_error** error);
*/
unsigned long long rs2_get_frame_number(const rs2_frame* frame, rs2_error** error);

/**
* retrieve data size from frame handle
* \param[in] frame handle returned from a callback
* \param[out] error if non-null, receives any error that occurs during this call, otherwise, errors are ignored
* \return the size of the frame data
*/
int rs2_get_frame_data_size(const rs2_frame* frame, rs2_error** error);

/**
* retrieve data from frame handle
* \param[in] frame handle returned from a callback
Expand Down
1 change: 1 addition & 0 deletions include/librealsense2/h/rs_sensor.h
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ typedef enum rs2_format
RS2_FORMAT_DISPARITY32 , /**< 32-bit float-point disparity values. Depth->Disparity conversion : Disparity = Baseline*FocalLength/Depth */
RS2_FORMAT_Y10BPACK , /**< 16-bit per-pixel grayscale image unpacked from 10 bits per pixel packed ([8:8:8:8:2222]) grey-scale image. The data is unpacked to LSB and padded with 6 zero bits */
RS2_FORMAT_DISTANCE , /**< 32-bit float-point depth distance value. */
RS2_FORMAT_MJPEG , /**< Bitstream encoding for video in which an image of each frame is encoded as JPEG-DIB */
RS2_FORMAT_COUNT /**< Number of enumeration values. Not a valid input: intended to be used in for-loops. */
} rs2_format;
const char* rs2_format_to_string(rs2_format format);
Expand Down
12 changes: 12 additions & 0 deletions include/librealsense2/hpp/rs_frame.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,18 @@ namespace rs2
return r;
}

/**
* retrieve data size from frame handle
* \return the pointer to the start of the frame data
*/
const int get_data_size() const
{
rs2_error* e = nullptr;
auto r = rs2_get_frame_data_size(frame_ref, &e);
error::handle(e);
return r;
}

/**
* retrieve data from frame handle
* \return the pointer to the start of the frame data
Expand Down
10 changes: 10 additions & 0 deletions src/android/jni/frame.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,16 @@ Java_com_intel_realsense_librealsense_Frame_nGetStreamProfile(JNIEnv *env, jclas
return (jlong) rv;
}

extern "C"
JNIEXPORT jint JNICALL
Java_com_intel_realsense_librealsense_Frame_nGetDataSize(JNIEnv *env, jclass type, jlong handle) {

rs2_error *e = NULL;
auto rv = rs2_get_frame_data_size(reinterpret_cast<const rs2_frame *>(handle), &e);
handle_error(env, e);
return (jint)rv;
}

extern "C" JNIEXPORT void JNICALL
Java_com_intel_realsense_librealsense_Frame_nGetData(JNIEnv *env, jclass type, jlong handle,
jbyteArray data_) {
Expand Down
5 changes: 5 additions & 0 deletions src/archive.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,11 @@ namespace librealsense
return it->second->supports(*this);
}

int frame::get_frame_data_size() const
{
return data.size();
}

const byte* frame::get_frame_data() const
{
const byte* frame_data = data.data();
Expand Down
5 changes: 5 additions & 0 deletions src/archive.h
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,7 @@ namespace librealsense
virtual ~frame() { on_release.reset(); }
rs2_metadata_type get_frame_metadata(const rs2_frame_metadata_value& frame_metadata) const override;
bool supports_frame_metadata(const rs2_frame_metadata_value& frame_metadata) const override;
int get_frame_data_size() const override;
const byte* get_frame_data() const override;
rs2_time_t get_frame_timestamp() const override;
rs2_timestamp_domain get_frame_timestamp_domain() const override;
Expand Down Expand Up @@ -229,6 +230,10 @@ namespace librealsense
{
return first()->supports_frame_metadata(frame_metadata);
}
int get_frame_data_size() const override
{
return first()->get_frame_data_size();
}
const byte* get_frame_data() const override
{
return first()->get_frame_data();
Expand Down
1 change: 1 addition & 0 deletions src/core/streaming.h
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ namespace librealsense
public:
virtual rs2_metadata_type get_frame_metadata(const rs2_frame_metadata_value& frame_metadata) const = 0;
virtual bool supports_frame_metadata(const rs2_frame_metadata_value& frame_metadata) const = 0;
virtual int get_frame_data_size() const = 0;
virtual const byte* get_frame_data() const = 0;
//TODO: add virtual uint64_t get_frame_data_size() const = 0;
virtual rs2_time_t get_frame_timestamp() const = 0;
Expand Down
3 changes: 3 additions & 0 deletions src/ds5/ds5-color.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,9 @@ namespace librealsense
color_ep->register_pu(RS2_OPTION_AUTO_EXPOSURE_PRIORITY);
}

if (color_devices_info.front().pid == ds::RS465_PID)
color_ep->register_pixel_format(pf_mjpg);

auto white_balance_option = std::make_shared<uvc_pu_option>(*color_ep, RS2_OPTION_WHITE_BALANCE);
auto auto_white_balance_option = std::make_shared<uvc_pu_option>(*color_ep, RS2_OPTION_ENABLE_AUTO_WHITE_BALANCE);
color_ep->register_option(RS2_OPTION_WHITE_BALANCE, white_balance_option);
Expand Down
Loading

0 comments on commit 07bc6d9

Please sign in to comment.