return TRUE;
}
+GstCaps *_mmcamcorder_get_video_caps(MMHandleType handle, MMPixelFormatType format, int width, int height, int fps, int rotate)
+{
+ int codec_type = MM_IMAGE_CODEC_JPEG;
+ guint32 fourcc = 0;
+ char fourcc_string[sizeof(guint32) + 1];
+#ifdef _MMCAMCORDER_PRODUCT_TV
+ int maxwidth = 0;
+ int maxheight = 0;
+ int display_surface_type = MM_DISPLAY_SURFACE_NULL;
+#endif /* _MMCAMCORDER_PRODUCT_TV */
+ gchar *caps_string = NULL;
+ GstCaps *caps = NULL;;
+ mmf_camcorder_t *hcamcorder = MMF_CAMCORDER(handle);
+
+ switch (format) {
+ case MM_PIXEL_FORMAT_ENCODED_H264:
+#ifdef _MMCAMCORDER_PRODUCT_TV
+ mm_camcorder_get_attributes(handle, NULL,
+ MMCAM_DISPLAY_SURFACE, &display_surface_type,
+ NULL);
+ if (display_surface_type != MM_DISPLAY_SURFACE_NULL &&
+ __mmcamcorder_find_max_resolution(handle, &maxwidth, &maxheight) == false) {
+ MMCAM_LOG_ERROR("can not find max resolution limitation");
+ return false;
+ } else if (display_surface_type == MM_DISPLAY_SURFACE_NULL) {
+ maxwidth = width;
+ maxheight = height;
+ }
+#endif /* _MMCAMCORDER_PRODUCT_TV */
+ caps = gst_caps_new_simple("video/x-h264",
+ "stream-format", G_TYPE_STRING, "byte-stream",
+#ifdef _MMCAMCORDER_PRODUCT_TV
+ "maxwidth", G_TYPE_INT, maxwidth,
+ "maxheight", G_TYPE_INT, maxheight,
+ "alignment", G_TYPE_STRING, "au",
+#endif /* _MMCAMCORDER_PRODUCT_TV */
+ NULL);
+ break;
+ case MM_PIXEL_FORMAT_ENCODED_MJPEG:
+#ifdef _MMCAMCORDER_PRODUCT_TV
+ caps = gst_caps_new_empty_simple("video/x-jpeg");
+#else
+ caps = gst_caps_new_empty_simple("image/jpeg");
+#endif
+ break;
+ case MM_PIXEL_FORMAT_ENCODED_VP8:
+ caps = gst_caps_new_empty_simple("video/x-vp8");
+ break;
+ case MM_PIXEL_FORMAT_ENCODED_VP9:
+ caps = gst_caps_new_empty_simple("video/x-vp9");
+ break;
+ default:
+ mm_camcorder_get_attributes(handle, NULL,
+ MMCAM_IMAGE_ENCODER, &codec_type,
+ NULL);
+
+ fourcc = (guint32)_mmcamcorder_get_fourcc(format, codec_type, hcamcorder->use_zero_copy_format);
+ snprintf(fourcc_string, sizeof(fourcc_string), "%"GST_FOURCC_FORMAT, GST_FOURCC_ARGS(fourcc));
+ caps = gst_caps_new_simple("video/x-raw",
+ "format", G_TYPE_STRING, fourcc_string,
+ NULL);
+ break;
+ }
+
+ gst_caps_set_simple(caps,
+ "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height,
+ NULL);
+
+ if (fps > 0) {
+ gst_caps_set_simple(caps,
+ "framerate", GST_TYPE_FRACTION, fps, 1,
+ NULL);
+ }
+
+ if (rotate >= 0) {
+ gst_caps_set_simple(caps,
+ "rotate", G_TYPE_INT, rotate,
+ NULL);
+ }
+
+ caps_string = gst_caps_to_string(caps);
+ MMCAM_LOG_INFO("caps[%s]", caps_string);
+ g_free(caps_string);
+
+ return caps;
+}
+
gboolean _mmcamcorder_resize_frame(unsigned char *src_data, unsigned int src_width, unsigned int src_height, unsigned int src_length, int src_format,
unsigned char **dst_data, unsigned int *dst_width, unsigned int *dst_height, size_t *dst_length)
{