Name: libmm-camcorder
Summary: Camera and recorder library
-Version: 0.10.50
+Version: 0.10.51
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
/* Pipeline element of Video output */
_MMCAMCORDER_VIDEOSINK_QUE,
+ _MMCAMCORDER_VIDEOSINK_CLS,
_MMCAMCORDER_VIDEOSINK_SINK,
_MMCAMCORDER_PIPELINE_ELEMENT_NUM,
int state_change_by_system; /**< MSL changes its state by itself because of system */
GMutex restart_preview_lock; /**< Capture sound mutex */
int use_zero_copy_format; /**< Whether use zero copy format for camera input */
+ int use_videoconvert; /**< Whether use videoconvert element for display */
int support_media_packet_preview_cb; /**< Whether support zero copy format for camera input */
int shutter_sound_policy; /**< shutter sound policy */
int brightness_default; /**< default value of brightness */
{ "VideosinkElementNull", CONFIGURE_VALUE_ELEMENT, {&_videosink_element_null_default} },
{ "UseVideoscale", CONFIGURE_VALUE_INT, {.value_int = 0} },
{ "VideoscaleElement", CONFIGURE_VALUE_ELEMENT, {&_videoscale_element_default} },
+ { "UseVideoconvert", CONFIGURE_VALUE_INT, {.value_int = 0} },
{ "VideoconvertElement", CONFIGURE_VALUE_ELEMENT, {&_videoconvert_element_default} },
{ "VideodecoderElementH264", CONFIGURE_VALUE_ELEMENT, {&_videodecoder_element_h264_default} },
{ "RecreateDecoder", CONFIGURE_VALUE_INT, {.value_int = 0} }
int display_surface_type = MM_DISPLAY_SURFACE_NULL;
const char *videosrc_name = NULL;
const char *videosink_name = NULL;
+ const char *videoconvert_name = NULL;
char *err_name = NULL;
char *socket_path = NULL;
int socket_path_len;
if (display_surface_type == MM_DISPLAY_SURFACE_REMOTE) {
_MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSINK_SINK, videosink_name, "ipc_sink", element_list, err);
+ _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, sc->VideosinkElement);
+
err = mm_camcorder_get_attributes(handle, &err_name,
- MMCAM_DISPLAY_SOCKET_PATH, &socket_path, &socket_path_len,
- NULL);
+ MMCAM_DISPLAY_SOCKET_PATH, &socket_path, &socket_path_len,
+ NULL);
if (err != MM_ERROR_NONE) {
_mmcam_dbg_warn("Get socket path failed 0x%x", err);
SAFE_FREE(err_name);
g_object_set(G_OBJECT(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst), "socket-path", socket_path, NULL);
} else {
+
+ if (hcamcorder->use_videoconvert && !strcmp(videosink_name, "waylandsink")) {
+ /* get video convert name */
+ _mmcamcorder_conf_get_value_element_name(sc->VideoconvertElement, &videoconvert_name);
+
+ if (videoconvert_name) {
+ _mmcam_dbg_log("videoconvert element name : %s", videoconvert_name);
+ _MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSINK_CLS, videoconvert_name, "videosink_cls", element_list, err);
+ } else
+ _mmcam_dbg_err("failed to get videoconvert element name");
+ }
+
_MMCAMCORDER_ELEMENT_MAKE(sc, sc->element, _MMCAMCORDER_VIDEOSINK_SINK, videosink_name, "videosink_sink", element_list, err);
+
+ _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, sc->VideosinkElement);
+
if (_mmcamcorder_videosink_window_set(handle, sc->VideosinkElement) != MM_ERROR_NONE) {
_mmcam_dbg_err("_mmcamcorder_videosink_window_set error");
err = MM_ERROR_CAMCORDER_INVALID_ARGUMENT;
}
}
- _mmcamcorder_conf_set_value_element_property(sc->element[_MMCAMCORDER_VIDEOSINK_SINK].gst, sc->VideosinkElement);
-
/* Set caps by rotation */
_mmcamcorder_set_videosrc_rotation(handle, camera_rotate);
"SupportMediaPacketPreviewCb",
&(hcamcorder->support_media_packet_preview_cb));
+ /* Get UseVideoconvert value from INI */
+ _mmcamcorder_conf_get_value_int((MMHandleType)hcamcorder, hcamcorder->conf_main,
+ CONFIGURE_CATEGORY_MAIN_VIDEO_OUTPUT,
+ "UseVideoconvert",
+ &hcamcorder->use_videoconvert);
+
ret = mm_camcorder_get_attributes((MMHandleType)hcamcorder, NULL,
MMCAM_CAMERA_WIDTH, &resolution_width,
MMCAM_CAMERA_HEIGHT, &resolution_height,
mm_camcorder_get_fps_list_by_resolution((MMHandleType)hcamcorder, resolution_width, resolution_height, &fps_info);
- _mmcam_dbg_log("UseZeroCopyFormat : %d", hcamcorder->use_zero_copy_format);
- _mmcam_dbg_log("SupportMediaPacketPreviewCb : %d", hcamcorder->support_media_packet_preview_cb);
- _mmcam_dbg_log("res : %d X %d, Default FPS by resolution : %d", resolution_width, resolution_height, fps_info.int_array.def);
+ _mmcam_dbg_log("UseZeroCopyFormat %d, UseVideoconvert %d, SupportMediaPacketPreviewCb %d",
+ hcamcorder->use_zero_copy_format, hcamcorder->use_videoconvert, hcamcorder->support_media_packet_preview_cb);
+ _mmcam_dbg_log("res : %d X %d, Default FPS by resolution : %d",
+ resolution_width, resolution_height, fps_info.int_array.def);
if (camera_facing_direction == 1) {
if (rcmd_dpy_rotation == MM_DISPLAY_ROTATION_270 || rcmd_dpy_rotation == MM_DISPLAY_ROTATION_90) {
} else {
camera_default_flip = MM_FLIP_HORIZONTAL;
}
- _mmcam_dbg_log("camera_default_flip : [%d]",camera_default_flip);
+ _mmcam_dbg_log("camera_default_flip : [%d]", camera_default_flip);
}
mm_camcorder_set_attributes((MMHandleType)hcamcorder, &err_attr_name,