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 #include "media_asset_change_request_capi.h"
17
18 #include "media_log.h"
19 #include "oh_media_asset.h"
20 #include "oh_media_asset_change_request.h"
21 #include "media_asset_change_request.h"
22 #include "userfile_manager_types.h"
23
24 using namespace OHOS::Media;
25
OH_MediaAssetChangeRequest_GetWriteCacheHandler(OH_MediaAssetChangeRequest * changeRequest,int32_t * fd)26 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_GetWriteCacheHandler(OH_MediaAssetChangeRequest* changeRequest,
27 int32_t* fd)
28 {
29 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
30 CHECK_AND_RETURN_RET_LOG(changeRequest->request_ != nullptr, MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED,
31 "request_ is nullptr!");
32
33 return changeRequest->request_->GetWriteCacheHandler(fd);
34 }
35
OH_MediaAssetChangeRequest_SaveCameraPhoto(OH_MediaAssetChangeRequest * changeRequest,MediaLibrary_ImageFileType imageFileType)36 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_SaveCameraPhoto(OH_MediaAssetChangeRequest* changeRequest,
37 MediaLibrary_ImageFileType imageFileType)
38 {
39 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
40 CHECK_AND_RETURN_RET_LOG(changeRequest->request_ != nullptr, MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED,
41 "request_ is nullptr!");
42
43 return changeRequest->request_->SaveCameraPhoto(imageFileType);
44 }
45
OH_MediaAssetChangeRequest_DiscardCameraPhoto(OH_MediaAssetChangeRequest * changeRequest)46 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_DiscardCameraPhoto(OH_MediaAssetChangeRequest* changeRequest)
47 {
48 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
49 CHECK_AND_RETURN_RET_LOG(changeRequest->request_ != nullptr, MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED,
50 "request_ is nullptr!");
51
52 return changeRequest->request_->DiscardCameraPhoto();
53 }
54
OH_MediaAssetChangeRequest_Create(OH_MediaAsset * mediaAsset)55 OH_MediaAssetChangeRequest* OH_MediaAssetChangeRequest_Create(OH_MediaAsset* mediaAsset)
56 {
57 CHECK_AND_RETURN_RET_LOG(mediaAsset != nullptr, nullptr, "mediaAsset is nullptr!");
58 CHECK_AND_RETURN_RET_LOG(mediaAsset->mediaAsset_ != nullptr, nullptr, "mediaAsset_ is nullptr!");
59 auto fileAssetPtr = mediaAsset->mediaAsset_->GetFileAssetInstance();
60 CHECK_AND_RETURN_RET_LOG(fileAssetPtr != nullptr, nullptr, "fileAssetPtr is nullptr!");
61
62 OH_MediaAssetChangeRequest* changeRequest = nullptr;
63 if (fileAssetPtr->GetMediaType() == OHOS::Media::MEDIA_TYPE_IMAGE ||
64 fileAssetPtr->GetMediaType() == OHOS::Media::MEDIA_TYPE_VIDEO) {
65 auto mediaAssetChangeRequest =
66 MediaAssetChangeRequestFactory::CreateMediaAssetChangeRequest(mediaAsset->mediaAsset_);
67 CHECK_AND_RETURN_RET_LOG(mediaAssetChangeRequest != nullptr, nullptr,
68 "create CreateMediaAssetChangeRequest failed!");
69 changeRequest = new OH_MediaAssetChangeRequest(mediaAssetChangeRequest);
70 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, nullptr, "create OH_MediaAssetChangeRequest failed!");
71 }
72 return changeRequest;
73 }
74
OH_MediaAssetChangeRequest_AddResourceWithUri(OH_MediaAssetChangeRequest * changeRequest,MediaLibrary_ResourceType resourceType,char * fileUri)75 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_AddResourceWithUri(OH_MediaAssetChangeRequest* changeRequest,
76 MediaLibrary_ResourceType resourceType, char* fileUri)
77 {
78 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
79 CHECK_AND_RETURN_RET_LOG(changeRequest->request_ != nullptr, MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED,
80 "request_ is nullptr!");
81 CHECK_AND_RETURN_RET_LOG(fileUri != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "fileUri is nullptr!");
82
83 return changeRequest->request_->AddResourceWithUri(resourceType, fileUri);
84 }
85
OH_MediaAssetChangeRequest_AddResourceWithBuffer(OH_MediaAssetChangeRequest * changeRequest,MediaLibrary_ResourceType resourceType,uint8_t * buffer,uint32_t length)86 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_AddResourceWithBuffer(OH_MediaAssetChangeRequest* changeRequest,
87 MediaLibrary_ResourceType resourceType, uint8_t* buffer, uint32_t length)
88 {
89 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
90 CHECK_AND_RETURN_RET_LOG(changeRequest->request_ != nullptr, MEDIA_LIBRARY_OPERATION_NOT_SUPPORTED,
91 "request_ is nullptr!");
92 CHECK_AND_RETURN_RET_LOG(buffer != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "buffer is null");
93 CHECK_AND_RETURN_RET_LOG(length > 0, MEDIA_LIBRARY_PARAMETER_ERROR, "length is zero");
94
95 return changeRequest->request_->AddResourceWithBuffer(resourceType, buffer, length);
96 }
97
OH_MediaAssetChangeRequest_Release(OH_MediaAssetChangeRequest * changeRequest)98 MediaLibrary_ErrorCode OH_MediaAssetChangeRequest_Release(OH_MediaAssetChangeRequest* changeRequest)
99 {
100 CHECK_AND_RETURN_RET_LOG(changeRequest != nullptr, MEDIA_LIBRARY_PARAMETER_ERROR, "changeRequest is nullptr!");
101
102 delete changeRequest;
103 changeRequest = nullptr;
104 return MEDIA_LIBRARY_OK;
105 }