From 403246b855bfa62ef8bb91ca923bd23f03ff9091 Mon Sep 17 00:00:00 2001 From: Jeongmo Yang Date: Fri, 30 Aug 2024 13:40:53 +0900 Subject: [PATCH] Update recommend format when default format is not supported - In general, recommend formats in configuration are same with default format. When device capability is supported and it does not support default format in configuration, camera handle creation will be failed because of preview format setting failure. It can be resolved by recommend format replacement. - Minor change : Support MM_PIXEL_FORMAT_ENCODED(JPEG) as preview format. [Version] 1.2.6 [Issue Type] Update Change-Id: I9edfe92b2669e8d91a4bbc68b89838dea8eeb1b1 Signed-off-by: Jeongmo Yang --- packaging/libmm-camcorder.spec | 2 +- src/mm_camcorder_capability.c | 15 +++++++++++++++ src/mm_camcorder_gstcommon.c | 1 + src/mm_camcorder_util.c | 1 + 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/packaging/libmm-camcorder.spec b/packaging/libmm-camcorder.spec index 8895732..fdae282 100755 --- a/packaging/libmm-camcorder.spec +++ b/packaging/libmm-camcorder.spec @@ -1,6 +1,6 @@ Name: libmm-camcorder Summary: Camera and recorder library -Version: 1.2.5 +Version: 1.2.6 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 diff --git a/src/mm_camcorder_capability.c b/src/mm_camcorder_capability.c index f9e5e15..cb1cfb4 100644 --- a/src/mm_camcorder_capability.c +++ b/src/mm_camcorder_capability.c @@ -443,6 +443,21 @@ int _mmcamcorder_capability_update_preview_format_list(MMHandleType handle) return ret; } + if (!is_current_supported) { + MMCAM_LOG_WARNING("update recommend format[%s] for invalid ini", + g_format_string_table[default_mm_format]); + + /* update new default format as recommend format */ + ret = mm_camcorder_set_attributes(handle, NULL, + MMCAM_RECOMMEND_PREVIEW_FORMAT_FOR_CAPTURE, default_mm_format, + MMCAM_RECOMMEND_PREVIEW_FORMAT_FOR_RECORDING, default_mm_format, + NULL); + if (ret != MM_ERROR_NONE) { + MMCAM_LOG_ERROR("update recommend format failed[0x%x]", ret); + return ret; + } + } + MMCAM_LOG_INFO("done"); return _mmcamcorder_capability_update_preview_resolution_list(handle); diff --git a/src/mm_camcorder_gstcommon.c b/src/mm_camcorder_gstcommon.c index ba7ce50..b0a5662 100644 --- a/src/mm_camcorder_gstcommon.c +++ b/src/mm_camcorder_gstcommon.c @@ -857,6 +857,7 @@ int _mmcamcorder_create_preview_elements(MMHandleType handle) case MM_PIXEL_FORMAT_ENCODED_H264: decoder_conf_name = "VideodecoderElementH264"; break; + case MM_PIXEL_FORMAT_ENCODED: /* fall through */ case MM_PIXEL_FORMAT_ENCODED_MJPEG: decoder_conf_name = "VideodecoderElementMJPEG"; break; diff --git a/src/mm_camcorder_util.c b/src/mm_camcorder_util.c index 423b330..788bf0f 100644 --- a/src/mm_camcorder_util.c +++ b/src/mm_camcorder_util.c @@ -2027,6 +2027,7 @@ GstCaps *_mmcamcorder_get_video_caps(MMHandleType handle, MMPixelFormatType form #endif /* _MMCAMCORDER_PRODUCT_TV */ NULL); break; + case MM_PIXEL_FORMAT_ENCODED: /* fall through */ case MM_PIXEL_FORMAT_ENCODED_MJPEG: #ifdef _MMCAMCORDER_PRODUCT_TV caps = gst_caps_new_empty_simple("video/x-jpeg"); -- 2.34.1