AC_SUBST(STORAGE_CFLAGS)
AC_SUBST(STORAGE_LIBS)
+PKG_CHECK_MODULES(TTRACE, ttrace)
+AC_SUBST(TTRACE_CFLAGS)
+AC_SUBST(TTRACE_LIBS)
+
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h memory.h stdlib.h string.h sys/time.h unistd.h])
Name: libmm-camcorder
Summary: Camera and recorder library
-Version: 0.10.21
+Version: 0.10.22
Release: 0
Group: Multimedia/Libraries
License: Apache-2.0
BuildRequires: pkgconfig(storage)
BuildRequires: pkgconfig(murphy-resource)
BuildRequires: pkgconfig(murphy-glib)
+BuildRequires: pkgconfig(ttrace)
%description
Camera and recorder function supported library.
$(STORAGE_CFLAGS) \
$(MURPHY_RESOURCE_CFLAGS) \
$(MURPHY_GLIB_CFLAGS) \
+ $(TTRACE_CFLAGS) \
$(SYSTEMINFO_CFLAGS)
libmmfcamcorder_la_LIBADD = \
$(TBM_LIBS) \
$(MURPHY_RESOURCE_LIBS) \
$(MURPHY_GLIB_LIBS) \
+ $(TTRACE_LIBS) \
$(STORAGE_LIBS)
libmmfcamcorder_la_CFLAGS += -DMMF_LOG_OWNER=0x010 -D_FILE_OFFSET_BITS=64
#include <sndfile.h>
#include <vconf.h>
#include <gst/video/video-format.h>
+#include <ttrace.h>
#include "mm_camcorder.h"
#include "mm_debug.h"
_mmcam_dbg_err("The element is existed. element_id=[%d], name=[%s]", eid, name); \
gst_object_unref(element[eid].gst); \
} \
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:ELEMENT_MAKE:%s", name); \
element[eid].gst = gst_element_factory_make(name, nickname); \
+ traceEnd(TTRACE_TAG_CAMERA); \
if (element[eid].gst == NULL) { \
_mmcam_dbg_err("Element creation fail. element_id=[%d], name=[%s]", eid, name); \
err = MM_ERROR_CAMCORDER_RESOURCE_CREATION; \
_mmcam_dbg_err("");
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:CREATE");
+
error = _mmcamcorder_create(camcorder, info);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_mmcam_dbg_err("END");
return error;
_mmcam_dbg_err("");
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:DESTROY");
+
error = _mmcamcorder_destroy(camcorder);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_mmcam_dbg_err("END!!!");
return error;
_MMCAMCORDER_LOCK_ASM(camcorder);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:REALIZE");
+
error = _mmcamcorder_realize(camcorder);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_MMCAMCORDER_UNLOCK_ASM(camcorder);
_mmcam_dbg_err("END");
_MMCAMCORDER_LOCK_ASM(camcorder);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:UNREALIZE");
+
error = _mmcamcorder_unrealize(camcorder);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_MMCAMCORDER_UNLOCK_ASM(camcorder);
_mmcam_dbg_err("END");
_MMCAMCORDER_LOCK_ASM(camcorder);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:START");
+
error = _mmcamcorder_start(camcorder);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_MMCAMCORDER_UNLOCK_ASM(camcorder);
_mmcam_dbg_err("END");
_MMCAMCORDER_LOCK_ASM(camcorder);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:STOP");
+
error = _mmcamcorder_stop(camcorder);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_MMCAMCORDER_UNLOCK_ASM(camcorder);
_mmcam_dbg_err("END");
structure = gst_caps_get_structure( caps, 0 );
gst_structure_get_int(structure, "width", &(stream.width));
gst_structure_get_int(structure, "height", &(stream.height));
- string_format = gst_structure_get_string(structure, "format");
- if (string_format == NULL) {
- gst_caps_unref(caps);
- caps = NULL;
- _mmcam_dbg_warn("get string error!!");
- return GST_PAD_PROBE_OK;
+ if (sc->info_image->preview_format == MM_PIXEL_FORMAT_ENCODED_H264) {
+ stream.format = MM_PIXEL_FORMAT_ENCODED_H264;
+ } else {
+ string_format = gst_structure_get_string(structure, "format");
+ if (string_format == NULL) {
+ gst_caps_unref(caps);
+ caps = NULL;
+ _mmcam_dbg_warn("get string error!!");
+ return GST_PAD_PROBE_OK;
+ }
+ fourcc = _mmcamcorder_convert_fourcc_string_to_value(string_format);
+ stream.format = _mmcamcorder_get_pixtype(fourcc);
}
-
- fourcc = _mmcamcorder_convert_fourcc_string_to_value(string_format);
- stream.format = _mmcamcorder_get_pixtype(fourcc);
gst_caps_unref(caps);
caps = NULL;
stream.data_type = MM_CAM_STREAM_DATA_YUV422;
stream.data.yuv422.yuv = mapinfo.data;
stream.data.yuv422.length_yuv = stream.length_total;
+ } else if (stream.format == MM_PIXEL_FORMAT_ENCODED_H264) {
+ stream.data_type = MM_CAM_STREAM_DATA_ENCODED;
+ stream.data.encoded.data = mapinfo.data;
+ stream.data.encoded.length_data = stream.length_total;
+ _mmcam_dbg_log("H264[num_planes:%d] [0]p:0x%x,size:%d",
+ fourcc, fourcc>>8, fourcc>>16, fourcc>>24, stream.num_planes,
+ stream.data.encoded.data, stream.data.encoded.length_data);
} else {
stream.data_type = MM_CAM_STREAM_DATA_YUV420;
stream.data.yuv420.yuv = mapinfo.data;
if (ret != MM_ERROR_NONE) {
_mmcam_dbg_err("failed to initialize resource manager");
ret = MM_ERROR_CAMCORDER_INTERNAL;
- goto _ERR_DEFAULT_VALUE_INIT;
- }
+ goto _ERR_DEFAULT_VALUE_INIT;
+ }
+
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:CREATE:INIT_GSTREAMER");
ret = __mmcamcorder_gstreamer_init(hcamcorder->conf_main);
+
+ traceEnd(TTRACE_TAG_CAMERA);
+
if (!ret) {
_mmcam_dbg_err( "Failed to initialize gstreamer!!" );
ret = MM_ERROR_CAMCORDER_NOT_INITIALIZED;
}
/* create pipeline */
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:REALIZE:CREATE_PIPELINE");
+
ret = _mmcamcorder_create_pipeline(handle, hcamcorder->type);
+
+ traceEnd(TTRACE_TAG_CAMERA);
+
if (ret != MM_ERROR_NONE) {
/* check internal error of gstreamer */
if (hcamcorder->error_code != MM_ERROR_NONE) {
pipeline = sc->element[_MMCAMCORDER_MAIN_PIPE].gst;
if (type != MM_CAMCORDER_MODE_AUDIO) {
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:REALIZE:SET_READY_TO_PIPELINE");
+
ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_READY);
+
+ traceEnd(TTRACE_TAG_CAMERA);
}
#ifdef _MMCAMCORDER_GET_DEVICE_INFO
if (!_mmcamcorder_get_device_info(handle)) {
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_QUE].gst, "empty-buffers", TRUE);
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_QUE].gst, "empty-buffers", TRUE);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:UNREALIZE:SET_NULL_TO_PIPELINE");
+
_mmcamcorder_gst_set_state(handle, sc->element[_MMCAMCORDER_MAIN_PIPE].gst, GST_STATE_NULL);
+ traceEnd(TTRACE_TAG_CAMERA);
+
_mmcamcorder_remove_all_handlers(handle, _MMCAMCORDER_HANDLER_CATEGORY_ALL);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:UNREALIZE:UNREF_PIPELINE");
+
gst_object_unref(sc->element[_MMCAMCORDER_MAIN_PIPE].gst);
+ traceEnd(TTRACE_TAG_CAMERA);
+
/* NULL initialization will be done in _mmcamcorder_element_release_noti */
}
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_QUE].gst, "empty-buffers", FALSE);
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_QUE].gst, "empty-buffers", FALSE);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:START:SET_PLAYING_TO_PIPELINE");
+
ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_PLAYING);
+ traceEnd(TTRACE_TAG_CAMERA);
+
if (ret != MM_ERROR_NONE) {
goto cmd_error;
}
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_QUE].gst, "empty-buffers", TRUE);
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_QUE].gst, "empty-buffers", TRUE);
+ traceBegin(TTRACE_TAG_CAMERA, "MMCAMCORDER:STOP:SET_READY_TO_PIPELINE");
+
ret = _mmcamcorder_gst_set_state(handle, pipeline, GST_STATE_READY);
+ traceEnd(TTRACE_TAG_CAMERA);
+
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSINK_QUE].gst, "empty-buffers", FALSE);
MMCAMCORDER_G_OBJECT_SET(sc->element[_MMCAMCORDER_VIDEOSRC_QUE].gst, "empty-buffers", FALSE);