CAMERA_PIXEL_FORMAT_ARGB, /**< ARGB pixel format */
CAMERA_PIXEL_FORMAT_JPEG, /**< Encoded pixel format */
CAMERA_PIXEL_FORMAT_H264 = 15, /**< Encoded pixel format : H264 (Since 3.0) */
- CAMERA_PIXEL_FORMAT_INVZ /**< Depth pixel format : INVZ (Since 5.0) */
+ CAMERA_PIXEL_FORMAT_INVZ, /**< Depth pixel format : INVZ (Since 5.0) */
+ CAMERA_PIXEL_FORMAT_MJPEG /**< Encoded pixel format : Motion JPEG for preview (Since 6.0) */
} camera_pixel_format_e;
/**
struct {
unsigned char *data; /**< The encoded data pointer */
unsigned int size; /**< The size of encoded data */
+ bool is_delta_frame; /**< The flag indicating whether it's delta frame or not (Since 6.0) */
} encoded_plane; /**< Encoded plane frame data */
struct {
*
* @remarks This function is issued in the context of internal framework so the UI update code should not be directly invoked.\n
* If the camera is used as a recorder then this callback function won't be called.
+ * @remarks The @a frame should not be released and it's available until the callback returns.
*
* @param[in] frame The reference pointer to preview stream data
* @param[in] user_data The user data passed from the callback registration function
if (stream->format == MM_PIXEL_FORMAT_ENCODED_H264) {
frame->data.encoded_plane.data = buf_pos;
frame->data.encoded_plane.size = stream->data.encoded.length_data;
+ frame->data.encoded_plane.is_delta_frame = (bool)stream->data.encoded.is_delta_frame;
total_size = stream->data.encoded.length_data;
} else if (stream->format == MM_PIXEL_FORMAT_INVZ) {
frame->data.depth_plane.data = buf_pos;
| LOCAL #defines: |
-----------------------------------------------------------------------*/
#define DEFAULT_FILE_PATH "/home/owner/media"
+#define PREVIEW_CB_DUMP_FILE_NAME "preview.data"
#define MAX_FILE_NAME_LENGTH 256
#define MAX_FILE_PATH_LENGTH (MAX_FILE_NAME_LENGTH - 20)
void _camera_preview_cb(camera_preview_data_s *frame, void *user_data)
{
#if 1
- FILE *fp = fopen(DEFAULT_FILE_PATH"/test.raw", "a");
+ char preview_dump[MAX_FILE_NAME_LENGTH] = {'\0',};
+ FILE *fp = NULL;
+
+ snprintf(preview_dump, MAX_FILE_NAME_LENGTH, "%s/%s", DEFAULT_FILE_PATH, PREVIEW_CB_DUMP_FILE_NAME);
+
+ fp = fopen(preview_dump, "a");
if (fp == NULL) {
- g_print("\n==== file[%s] open failed ====\n", DEFAULT_FILE_PATH"/test.raw");
+ g_print("\n==== file[%s] open failed ====\n", preview_dump);
return;
}
fwrite(frame->data.rgb_plane.data, 1, frame->data.rgb_plane.size, fp);
} else if (frame->format == CAMERA_PIXEL_FORMAT_INVZ) {
fwrite(frame->data.depth_plane.data, 1, frame->data.depth_plane.size, fp);
+ } else if (frame->format == CAMERA_PIXEL_FORMAT_MJPEG) {
+ fwrite(frame->data.encoded_plane.data, 1, frame->data.encoded_plane.size, fp);
} else {
switch (frame->num_of_planes) {
case 1:
}
}
- g_print("==== file[%s] write done ====\n", DEFAULT_FILE_PATH"/test.raw");
+ g_print("==== file[%s] write done ====\n", preview_dump);
fclose(fp);
fp = NULL;