17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (C) 2024 Huawei Device Co., Ltd. 37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License. 57777dab0Sopenharmony_ci * You may obtain a copy of the License at 67777dab0Sopenharmony_ci * 77777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87777dab0Sopenharmony_ci * 97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and 137777dab0Sopenharmony_ci * limitations under the License. 147777dab0Sopenharmony_ci */ 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci/** 177777dab0Sopenharmony_ci * @addtogroup MediaAssetManager 187777dab0Sopenharmony_ci * @{ 197777dab0Sopenharmony_ci * 207777dab0Sopenharmony_ci * @brief Provides APIs of request capability for Media Source. 217777dab0Sopenharmony_ci * 227777dab0Sopenharmony_ci * The OH_MediaAssetManager structure and MediaLibrary_RequestId type are used to request media library resources. 237777dab0Sopenharmony_ci * The request can be cancelled using the request ID. 247777dab0Sopenharmony_ci * 257777dab0Sopenharmony_ci * @since 12 267777dab0Sopenharmony_ci */ 277777dab0Sopenharmony_ci 287777dab0Sopenharmony_ci/** 297777dab0Sopenharmony_ci * @file media_asset_base_capi.h 307777dab0Sopenharmony_ci * 317777dab0Sopenharmony_ci * @brief Defines the structure and enumeration for Media Asset Manager. 327777dab0Sopenharmony_ci * 337777dab0Sopenharmony_ci * OH_MediaAssetManager structure: This structure provides the ability to request resources from a media library. \n 347777dab0Sopenharmony_ci * MediaLibrary_RequestId type: This type is returned when requesting a media library resource. 357777dab0Sopenharmony_ci * The request ID is used to cancel the request. \n 367777dab0Sopenharmony_ci * MediaLibrary_DeliveryMode enumeration: This enumeration defines the delivery mode of the requested resources. \n 377777dab0Sopenharmony_ci * OH_MediaLibrary_OnDataPrepared function pointer: This function is called when the requested source is prepared. \n 387777dab0Sopenharmony_ci * MediaLibrary_RequestOptions structure: This structure provides options for requesting media library resources. \n 397777dab0Sopenharmony_ci * 407777dab0Sopenharmony_ci * @kit MediaLibraryKit 417777dab0Sopenharmony_ci * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core 427777dab0Sopenharmony_ci * @library libmedia_asset_manager.so 437777dab0Sopenharmony_ci * @since 12 447777dab0Sopenharmony_ci */ 457777dab0Sopenharmony_ci 467777dab0Sopenharmony_ci#ifndef MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MEDIA_ASSET_BASE_H 477777dab0Sopenharmony_ci#define MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MEDIA_ASSET_BASE_H 487777dab0Sopenharmony_ci 497777dab0Sopenharmony_ci#include <stdint.h> 507777dab0Sopenharmony_ci 517777dab0Sopenharmony_ci#include "multimedia/image_framework/image/image_source_native.h" 527777dab0Sopenharmony_ci 537777dab0Sopenharmony_ci#ifdef __cplusplus 547777dab0Sopenharmony_ciextern "C" { 557777dab0Sopenharmony_ci#endif 567777dab0Sopenharmony_ci 577777dab0Sopenharmony_ci/** 587777dab0Sopenharmony_ci * @brief Define UUID max length 597777dab0Sopenharmony_ci * 607777dab0Sopenharmony_ci * This constant defines the maximum length of a UUID string. 617777dab0Sopenharmony_ci * 627777dab0Sopenharmony_ci * @since 12 637777dab0Sopenharmony_ci */ 647777dab0Sopenharmony_cistatic const int32_t UUID_STR_MAX_LENGTH = 37; 657777dab0Sopenharmony_ci 667777dab0Sopenharmony_ci/** 677777dab0Sopenharmony_ci * @brief Define Media Asset Manager 687777dab0Sopenharmony_ci * 697777dab0Sopenharmony_ci * This structure provides the ability to request media library resources. 707777dab0Sopenharmony_ci * Null pointer is returned if the creation fails. 717777dab0Sopenharmony_ci * 727777dab0Sopenharmony_ci * @since 12 737777dab0Sopenharmony_ci */ 747777dab0Sopenharmony_citypedef struct OH_MediaAssetManager OH_MediaAssetManager; 757777dab0Sopenharmony_ci 767777dab0Sopenharmony_ci/** 777777dab0Sopenharmony_ci * @brief Define Media Asset Change Request 787777dab0Sopenharmony_ci * 797777dab0Sopenharmony_ci * This structure provides the ability to handle a media asset change request. 807777dab0Sopenharmony_ci * 817777dab0Sopenharmony_ci * @since 12 827777dab0Sopenharmony_ci */ 837777dab0Sopenharmony_citypedef struct OH_MediaAssetChangeRequest OH_MediaAssetChangeRequest; 847777dab0Sopenharmony_ci 857777dab0Sopenharmony_ci/** 867777dab0Sopenharmony_ci * @brief Define Moving Photo 877777dab0Sopenharmony_ci * 887777dab0Sopenharmony_ci * This structure provides the ability to obtain information about moving photo. 897777dab0Sopenharmony_ci * 907777dab0Sopenharmony_ci * @since 13 917777dab0Sopenharmony_ci */ 927777dab0Sopenharmony_citypedef struct OH_MovingPhoto OH_MovingPhoto; 937777dab0Sopenharmony_ci 947777dab0Sopenharmony_ci/** 957777dab0Sopenharmony_ci * @brief Define Media Asset 967777dab0Sopenharmony_ci * 977777dab0Sopenharmony_ci * This structure provides the ability to encapsulate file asset attributes. 987777dab0Sopenharmony_ci * 997777dab0Sopenharmony_ci * @since 12 1007777dab0Sopenharmony_ci */ 1017777dab0Sopenharmony_citypedef struct OH_MediaAsset OH_MediaAsset; 1027777dab0Sopenharmony_ci 1037777dab0Sopenharmony_ci/** 1047777dab0Sopenharmony_ci * @brief Define MediaLibrary_RequestId 1057777dab0Sopenharmony_ci * 1067777dab0Sopenharmony_ci * This type is returned when requesting a media library resource. 1077777dab0Sopenharmony_ci * The request id is used to cancel the request. 1087777dab0Sopenharmony_ci * The value is all zero like "00000000-0000-0000-0000-000000000000" if the request fails. 1097777dab0Sopenharmony_ci * 1107777dab0Sopenharmony_ci * @since 12 1117777dab0Sopenharmony_ci */ 1127777dab0Sopenharmony_citypedef struct MediaLibrary_RequestId { 1137777dab0Sopenharmony_ci /*request id*/ 1147777dab0Sopenharmony_ci char requestId[UUID_STR_MAX_LENGTH]; 1157777dab0Sopenharmony_ci} MediaLibrary_RequestId; 1167777dab0Sopenharmony_ci 1177777dab0Sopenharmony_ci/** 1187777dab0Sopenharmony_ci * @brief Enum for media library error code. 1197777dab0Sopenharmony_ci * 1207777dab0Sopenharmony_ci * @since 12 1217777dab0Sopenharmony_ci */ 1227777dab0Sopenharmony_citypedef enum MediaLibrary_ErrorCode { 1237777dab0Sopenharmony_ci /** 1247777dab0Sopenharmony_ci * @error Media library result is ok. 1257777dab0Sopenharmony_ci */ 1267777dab0Sopenharmony_ci MEDIA_LIBRARY_OK = 0, 1277777dab0Sopenharmony_ci 1287777dab0Sopenharmony_ci /** 1297777dab0Sopenharmony_ci * @error Permission is denied. 1307777dab0Sopenharmony_ci */ 1317777dab0Sopenharmony_ci MEDIA_LIBRARY_PERMISSION_DENIED = 201, 1327777dab0Sopenharmony_ci 1337777dab0Sopenharmony_ci /** 1347777dab0Sopenharmony_ci * @error Mandatory parameters are left unspecified 1357777dab0Sopenharmony_ci * or incorrect parameter types or parameter verification failed. 1367777dab0Sopenharmony_ci */ 1377777dab0Sopenharmony_ci MEDIA_LIBRARY_PARAMETER_ERROR = 401, 1387777dab0Sopenharmony_ci 1397777dab0Sopenharmony_ci /** 1407777dab0Sopenharmony_ci * @error File does not exist. 1417777dab0Sopenharmony_ci */ 1427777dab0Sopenharmony_ci MEDIA_LIBRARY_NO_SUCH_FILE = 23800101, 1437777dab0Sopenharmony_ci 1447777dab0Sopenharmony_ci /** 1457777dab0Sopenharmony_ci * @error Invalid display name. 1467777dab0Sopenharmony_ci */ 1477777dab0Sopenharmony_ci MEDIA_LIBRARY_INVALID_DISPLAY_NAME = 23800102, 1487777dab0Sopenharmony_ci 1497777dab0Sopenharmony_ci /** 1507777dab0Sopenharmony_ci * @error Invalid asset uri. 1517777dab0Sopenharmony_ci */ 1527777dab0Sopenharmony_ci MEDIA_LIBRARY_INVALID_ASSET_URI = 23800103, 1537777dab0Sopenharmony_ci 1547777dab0Sopenharmony_ci /** 1557777dab0Sopenharmony_ci * @error Member is not a valid PhotoKey. 1567777dab0Sopenharmony_ci */ 1577777dab0Sopenharmony_ci MEDIA_LIBRARY_INVALID_PHOTO_KEY = 23800104, 1587777dab0Sopenharmony_ci 1597777dab0Sopenharmony_ci /** 1607777dab0Sopenharmony_ci * @error Operation is not supported. 1617777dab0Sopenharmony_ci */ 1627777dab0Sopenharmony_ci MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED = 23800201, 1637777dab0Sopenharmony_ci 1647777dab0Sopenharmony_ci /** 1657777dab0Sopenharmony_ci * @error Internal system error. 1667777dab0Sopenharmony_ci * It is recommended to retry and check the logs. 1677777dab0Sopenharmony_ci * Possible causes: 1687777dab0Sopenharmony_ci * 1. Database corrupted. 1697777dab0Sopenharmony_ci * 2. The file system is abnormal. 1707777dab0Sopenharmony_ci * 3. The IPC request timed out. 1717777dab0Sopenharmony_ci */ 1727777dab0Sopenharmony_ci MEDIA_LIBRARY_INTERNAL_SYSTEM_ERROR = 23800301, 1737777dab0Sopenharmony_ci} MediaLibrary_ErrorCode; 1747777dab0Sopenharmony_ci 1757777dab0Sopenharmony_ci/** 1767777dab0Sopenharmony_ci * @brief Delivery Mode 1777777dab0Sopenharmony_ci * 1787777dab0Sopenharmony_ci * This enumeration defines the delivery mode of the requested resources. 1797777dab0Sopenharmony_ci * The delivery mode can be set to fast mode, high quality mode, or balanced mode. 1807777dab0Sopenharmony_ci * 1817777dab0Sopenharmony_ci * @since 12 1827777dab0Sopenharmony_ci */ 1837777dab0Sopenharmony_citypedef enum MediaLibrary_DeliveryMode { 1847777dab0Sopenharmony_ci /*delivery fast mode*/ 1857777dab0Sopenharmony_ci MEDIA_LIBRARY_FAST_MODE = 0, 1867777dab0Sopenharmony_ci /*delivery high quality mode*/ 1877777dab0Sopenharmony_ci MEDIA_LIBRARY_HIGH_QUALITY_MODE = 1, 1887777dab0Sopenharmony_ci /*delivery balanced mode*/ 1897777dab0Sopenharmony_ci MEDIA_LIBRARY_BALANCED_MODE = 2 1907777dab0Sopenharmony_ci} MediaLibrary_DeliveryMode; 1917777dab0Sopenharmony_ci 1927777dab0Sopenharmony_ci/** 1937777dab0Sopenharmony_ci * @brief Request Options 1947777dab0Sopenharmony_ci * 1957777dab0Sopenharmony_ci * This structure provides options for requesting media library resources. 1967777dab0Sopenharmony_ci * 1977777dab0Sopenharmony_ci * @since 12 1987777dab0Sopenharmony_ci */ 1997777dab0Sopenharmony_citypedef struct MediaLibrary_RequestOptions { 2007777dab0Sopenharmony_ci /*delivery mode*/ 2017777dab0Sopenharmony_ci MediaLibrary_DeliveryMode deliveryMode; 2027777dab0Sopenharmony_ci} MediaLibrary_RequestOptions; 2037777dab0Sopenharmony_ci 2047777dab0Sopenharmony_ci/** 2057777dab0Sopenharmony_ci * @brief Enum for media type. 2067777dab0Sopenharmony_ci * 2077777dab0Sopenharmony_ci * @since 12 2087777dab0Sopenharmony_ci */ 2097777dab0Sopenharmony_citypedef enum MediaLibrary_MediaType { 2107777dab0Sopenharmony_ci /*image asset*/ 2117777dab0Sopenharmony_ci MEDIA_LIBRARY_IMAGE = 1, 2127777dab0Sopenharmony_ci /*video asset*/ 2137777dab0Sopenharmony_ci MEDIA_LIBRARY_VIDEO = 2 2147777dab0Sopenharmony_ci} MediaLibrary_MediaType; 2157777dab0Sopenharmony_ci 2167777dab0Sopenharmony_ci/** 2177777dab0Sopenharmony_ci * @brief Enum for media asset subtype. 2187777dab0Sopenharmony_ci * 2197777dab0Sopenharmony_ci * @since 12 2207777dab0Sopenharmony_ci */ 2217777dab0Sopenharmony_citypedef enum MediaLibrary_MediaSubType { 2227777dab0Sopenharmony_ci /*default Photo Type*/ 2237777dab0Sopenharmony_ci MEDIA_LIBRARY_DEFAULT = 0, 2247777dab0Sopenharmony_ci /*moving Photo Type*/ 2257777dab0Sopenharmony_ci MEDIA_LIBRARY_MOVING_PHOTO = 3, 2267777dab0Sopenharmony_ci /*burst Photo Type*/ 2277777dab0Sopenharmony_ci MEDIA_LIBRARY_BURST = 4 2287777dab0Sopenharmony_ci} MediaLibrary_MediaSubType; 2297777dab0Sopenharmony_ci 2307777dab0Sopenharmony_ci/** 2317777dab0Sopenharmony_ci * @brief Enum for resource types. 2327777dab0Sopenharmony_ci * 2337777dab0Sopenharmony_ci * @since 12 2347777dab0Sopenharmony_ci */ 2357777dab0Sopenharmony_citypedef enum MediaLibrary_ResourceType { 2367777dab0Sopenharmony_ci /*image resource*/ 2377777dab0Sopenharmony_ci MEDIA_LIBRARY_IMAGE_RESOURCE = 1, 2387777dab0Sopenharmony_ci /*video resource*/ 2397777dab0Sopenharmony_ci MEDIA_LIBRARY_VIDEO_RESOURCE = 2 2407777dab0Sopenharmony_ci} MediaLibrary_ResourceType; 2417777dab0Sopenharmony_ci 2427777dab0Sopenharmony_ci/** 2437777dab0Sopenharmony_ci * @brief Enum for image file Type. 2447777dab0Sopenharmony_ci * 2457777dab0Sopenharmony_ci * @since 12 2467777dab0Sopenharmony_ci */ 2477777dab0Sopenharmony_citypedef enum MediaLibrary_ImageFileType { 2487777dab0Sopenharmony_ci /*JPEG type*/ 2497777dab0Sopenharmony_ci MEDIA_LIBRARY_IMAGE_JPEG = 1 2507777dab0Sopenharmony_ci} MediaLibrary_ImageFileType; 2517777dab0Sopenharmony_ci 2527777dab0Sopenharmony_ci/** 2537777dab0Sopenharmony_ci * @brief Enum for media quality. 2547777dab0Sopenharmony_ci * 2557777dab0Sopenharmony_ci * @since 12 2567777dab0Sopenharmony_ci */ 2577777dab0Sopenharmony_citypedef enum MediaLibrary_MediaQuality { 2587777dab0Sopenharmony_ci /*fast quality*/ 2597777dab0Sopenharmony_ci MEDIA_LIBRARY_QUALITY_FAST = 1, 2607777dab0Sopenharmony_ci /*full quality*/ 2617777dab0Sopenharmony_ci MEDIA_LIBRARY_QUALITY_FULL = 2 2627777dab0Sopenharmony_ci} MediaLibrary_MediaQuality; 2637777dab0Sopenharmony_ci 2647777dab0Sopenharmony_ci/** 2657777dab0Sopenharmony_ci * @brief Enum for media content type. 2667777dab0Sopenharmony_ci * 2677777dab0Sopenharmony_ci * @since 12 2687777dab0Sopenharmony_ci */ 2697777dab0Sopenharmony_citypedef enum MediaLibrary_MediaContentType { 2707777dab0Sopenharmony_ci /*compressed media content type*/ 2717777dab0Sopenharmony_ci MEDIA_LIBRARY_COMPRESSED = 1, 2727777dab0Sopenharmony_ci /*picture object media content type*/ 2737777dab0Sopenharmony_ci MEDIA_LIBRARY_PICTURE_OBJECT = 2 2747777dab0Sopenharmony_ci} MediaLibrary_MediaContentType; 2757777dab0Sopenharmony_ci 2767777dab0Sopenharmony_ci/** 2777777dab0Sopenharmony_ci * @brief Called when a requested source is prepared. 2787777dab0Sopenharmony_ci * 2797777dab0Sopenharmony_ci * This function is called when the requested source is prepared. 2807777dab0Sopenharmony_ci * 2817777dab0Sopenharmony_ci * @param result Results of the processing of the requested resources. 2827777dab0Sopenharmony_ci * @param requestId Request ID. 2837777dab0Sopenharmony_ci * @since 12 2847777dab0Sopenharmony_ci */ 2857777dab0Sopenharmony_citypedef void (*OH_MediaLibrary_OnDataPrepared)(int32_t result, MediaLibrary_RequestId requestId); 2867777dab0Sopenharmony_ci 2877777dab0Sopenharmony_ci/** 2887777dab0Sopenharmony_ci * @brief Called when a requested image source is prepared. 2897777dab0Sopenharmony_ci * 2907777dab0Sopenharmony_ci * This function is called when the requested image source is prepared. 2917777dab0Sopenharmony_ci * 2927777dab0Sopenharmony_ci * @param result results {@link MediaLibrary_ErrorCode} of the processing of the requested resources. 2937777dab0Sopenharmony_ci * @param requestId indicates the {@link MediaLibrary_RequestId} of the request. 2947777dab0Sopenharmony_ci * @param mediaQuality the {@link MediaLibrary_MediaQuality} of the requested source. 2957777dab0Sopenharmony_ci * @param type the {@link MediaLibrary_MediaContentType} of the requested source. 2967777dab0Sopenharmony_ci * @param imageSourceNative it used to obtain {@link OH_ImageSourceNative} information when image source is prepared. 2977777dab0Sopenharmony_ci * @since 12 2987777dab0Sopenharmony_ci */ 2997777dab0Sopenharmony_citypedef void (*OH_MediaLibrary_OnImageDataPrepared)(MediaLibrary_ErrorCode result, 3007777dab0Sopenharmony_ci MediaLibrary_RequestId requestId, MediaLibrary_MediaQuality mediaQuality, MediaLibrary_MediaContentType type, 3017777dab0Sopenharmony_ci OH_ImageSourceNative* imageSourceNative); 3027777dab0Sopenharmony_ci 3037777dab0Sopenharmony_ci/** 3047777dab0Sopenharmony_ci * @brief Called when a requested moving photo is prepared. 3057777dab0Sopenharmony_ci * 3067777dab0Sopenharmony_ci * This function is called when the requested moving photo is prepared. 3077777dab0Sopenharmony_ci * 3087777dab0Sopenharmony_ci * @param result results {@link MediaLibrary_ErrorCode} of the processing of the requested resources. 3097777dab0Sopenharmony_ci * @param requestId indicates the {@link MediaLibrary_RequestId} of the request. 3107777dab0Sopenharmony_ci * @param mediaQuality the {@link MediaLibrary_MediaQuality} of the requested source. 3117777dab0Sopenharmony_ci * @param type the {@link MediaLibrary_MediaContentType} of the requested source. 3127777dab0Sopenharmony_ci * @param movingPhoto it used to obtain {@link OH_MovingPhoto} information when the data is prepared. 3137777dab0Sopenharmony_ci * @since 13 3147777dab0Sopenharmony_ci */ 3157777dab0Sopenharmony_citypedef void (*OH_MediaLibrary_OnMovingPhotoDataPrepared)(MediaLibrary_ErrorCode result, 3167777dab0Sopenharmony_ci MediaLibrary_RequestId requestId, MediaLibrary_MediaQuality mediaQuality, MediaLibrary_MediaContentType type, 3177777dab0Sopenharmony_ci OH_MovingPhoto* movingPhoto); 3187777dab0Sopenharmony_ci 3197777dab0Sopenharmony_ci#ifdef __cplusplus 3207777dab0Sopenharmony_ci} 3217777dab0Sopenharmony_ci#endif 3227777dab0Sopenharmony_ci 3237777dab0Sopenharmony_ci#endif // MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MEDIA_ASSET_BASE_H 3247777dab0Sopenharmony_ci/** @} */ 325