1/*
2 * Copyright (C) 2024 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16/**
17 * @addtogroup MediaAssetManager
18 * @{
19 *
20 * @brief Provides APIs of request capability for Media Source.
21 *
22 * @since 13
23 */
24
25/**
26 * @file moving_photo_capi.h
27 *
28 * @brief Defines APIs related to moving photo.
29 *
30 * Provides the ability to obtain moving photo information.
31 *
32 * @kit MediaLibraryKit
33 * @syscap SystemCapability.FileManagement.PhotoAccessHelper.Core
34 * @library libmedia_asset_manager.so
35 * @since 13
36 */
37
38#ifndef MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MOVING_PHOTO_H
39#define MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MOVING_PHOTO_H
40
41#include "media_asset_base_capi.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif
46
47/**
48 * @brief Get uri of the moving photo.
49 *
50 * @param movingPhoto the {@link OH_MovingPhoto} instance.
51 * @param uri the uri of the moving photo.
52 * @return {@link #MEDIA_LIBRARY_OK} if the method call succeeds.
53 *         {@link #MEDIA_LIBRARY_PARAMETER_ERROR} Parameter error. Possible causes:
54 *                                                1. Mandatory parameters are left unspecified.
55 *                                                2. Incorrect parameter types.
56 *                                                3. Parameter verification failed.
57 *         {@link #MEDIA_LIBRARY_INTERNAL_SYSTEM_ERROR} if internal system error.
58 * @since 13
59*/
60MediaLibrary_ErrorCode OH_MovingPhoto_GetUri(OH_MovingPhoto* movingPhoto, const char** uri);
61
62/**
63 * @brief Request the image and video content of the moving photo and write to destination uri.
64 *
65 * @permission ohos.permission.READ_IMAGEVIDEO
66 * @param movingPhoto the {@link OH_MovingPhoto} instance.
67 * @param imageUri the destination file uri to save the image data.
68 * @param videoUri the destination file uri to save the video data.
69 * @return {@link #MEDIA_LIBRARY_OK} if the method call succeeds.
70 *         {@link #MEDIA_LIBRARY_PARAMETER_ERROR} Parameter error. Possible causes:
71 *                                                1. Mandatory parameters are left unspecified.
72 *                                                2. Incorrect parameter types.
73 *                                                3. Parameter verification failed.
74 *         {@link #MEDIA_LIBRARY_PERMISSION_DENIED} if permission is denied.
75 *         {@link #MEDIA_LIBRARY_INTERNAL_SYSTEM_ERROR} if internal system error.
76 * @since 13
77*/
78MediaLibrary_ErrorCode OH_MovingPhoto_RequestContentWithUris(OH_MovingPhoto* movingPhoto, char* imageUri,
79    char* videoUri);
80
81/**
82 * @brief Request the image or video content of the moving photo and write to destination uri.
83 *
84 * @permission ohos.permission.READ_IMAGEVIDEO
85 * @param movingPhoto the {@link OH_MovingPhoto} instance.
86 * @param resourceType the {@link MediaLibrary_ResourceType} of the moving photo content to request.
87 * @param uri the destination file uri to save the data.
88 * @return {@link #MEDIA_LIBRARY_OK} if the method call succeeds.
89 *         {@link #MEDIA_LIBRARY_PARAMETER_ERROR} Parameter error. Possible causes:
90 *                                                1. Mandatory parameters are left unspecified.
91 *                                                2. Incorrect parameter types.
92 *                                                3. Parameter verification failed.
93 *         {@link #MEDIA_LIBRARY_PERMISSION_DENIED} if permission is denied.
94 *         {@link #MEDIA_LIBRARY_INTERNAL_SYSTEM_ERROR} if internal system error.
95 * @since 13
96*/
97MediaLibrary_ErrorCode OH_MovingPhoto_RequestContentWithUri(OH_MovingPhoto* movingPhoto,
98    MediaLibrary_ResourceType resourceType, char* uri);
99
100/**
101 * @brief Request data of the moving photo.
102 *
103 * @permission ohos.permission.READ_IMAGEVIDEO
104 * @param movingPhoto the {@link OH_MovingPhoto} instance.
105 * @param resourceType the {@link MediaLibrary_ResourceType} of the moving photo content to request.
106 * @param buffer the buffer of the content.
107 * @param size the size of the buffer.
108 * @return {@link #MEDIA_LIBRARY_OK} if the method call succeeds.
109 *         {@link #MEDIA_LIBRARY_PARAMETER_ERROR} Parameter error. Possible causes:
110 *                                                1. Mandatory parameters are left unspecified.
111 *                                                2. Incorrect parameter types.
112 *                                                3. Parameter verification failed.
113 *         {@link #MEDIA_LIBRARY_PERMISSION_DENIED} if permission is denied.
114 *         {@link #MEDIA_LIBRARY_INTERNAL_SYSTEM_ERROR} if internal system error.
115 * @since 13
116*/
117MediaLibrary_ErrorCode OH_MovingPhoto_RequestContentWithBuffer(OH_MovingPhoto* movingPhoto,
118    MediaLibrary_ResourceType resourceType, const uint8_t** buffer, uint32_t* size);
119
120/**
121 * @brief Release the {@link OH_MovingPhoto} instance.
122 *
123 * @param movingPhoto the {@link OH_MovingPhoto} instance.
124 * @return {@link #MEDIA_LIBRARY_OK} if the method call succeeds.
125 *         {@link #MEDIA_LIBRARY_PARAMETER_ERROR} Parameter error. Possible causes:
126 *                                                1. Mandatory parameters are left unspecified.
127 *                                                2. Incorrect parameter types.
128 *                                                3. Parameter verification failed.
129 * @since 13
130*/
131MediaLibrary_ErrorCode OH_MovingPhoto_Release(OH_MovingPhoto* movingPhoto);
132
133#ifdef __cplusplus
134}
135#endif
136
137#endif // MULTIMEDIA_MEDIA_LIBRARY_NATIVE_MOVING_PHOTO_H
138/** @} */