1/*
2 * Copyright (C) 2023 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 * @file native_avmemory.h
18 *
19 * @brief Provides audio and video memory.
20 *
21 * @kit AVCodecKit
22 * @library libnative_media_core.so
23 * @syscap SystemCapability.Multimedia.Media.Core
24 * @since 9
25 */
26
27#ifndef NATIVE_AVMEMORY_H
28#define NATIVE_AVMEMORY_H
29
30#include <stdint.h>
31#include "native_averrors.h"
32
33#ifdef __cplusplus
34extern "C" {
35#endif
36
37/**
38 * @brief Forward declaration of OH_AVFormat.
39 *
40 * @since 9
41 */
42typedef struct OH_AVMemory OH_AVMemory;
43
44/**
45 * @brief Create an OH_AVMemory instance
46 * @syscap SystemCapability.Multimedia.Media.Core
47 * @param size the memory's size, bytes.
48 * @return Returns a pointer to an OH_AVMemory instance for success, needs to be freed by OH_AVMemory_Destroy,
49 * otherwise returns nullptr. Possible failure causes: 1. size <= 0. 2. create OH_AVMemory failed.
50 * 3.failed to new OH_AVMemory.
51 * @deprecated since 11
52 * @useinstead OH_AVBuffer_Create
53 * @since 10
54 */
55OH_AVMemory *OH_AVMemory_Create(int32_t size);
56
57/**
58 * @brief Get the memory's virtual address
59 * @syscap SystemCapability.Multimedia.Media.Core
60 * @param mem Encapsulate OH_AVMemory structure instance pointer
61 * @return the memory's virtual address if the memory is valid, otherwise nullptr.
62 * Possible failure causes: 1. input mem is nullptr. 2. mem's magic error. 3. mem's memory is nullptr.
63 * @deprecated since 11
64 * @useinstead OH_AVBuffer_GetAddr
65 * @since 9
66 * @version 1.0
67 */
68uint8_t *OH_AVMemory_GetAddr(struct OH_AVMemory *mem);
69
70/**
71 * @brief Get the memory's size
72 * @syscap SystemCapability.Multimedia.Media.Core
73 * @param mem Encapsulate OH_AVMemory structure instance pointer
74 * @return the memory's size if the memory is valid, otherwise -1.
75 * Possible failure causes: 1. input mem is nullptr. 2. mem's magic error. 3. mem's memory is nullptr.
76 * @deprecated since 11
77 * @useinstead OH_AVBuffer_GetCapacity
78 * @since 9
79 * @version 1.0
80 */
81int32_t OH_AVMemory_GetSize(struct OH_AVMemory *mem);
82
83/**
84 * @brief Clear the internal resources of the memory and destroy the memory
85 * instance
86 * @syscap SystemCapability.Multimedia.Media.Core
87 * @param mem Encapsulate OH_AVMemory structure instance pointer
88 * @return Function result code.
89 *         {@link AV_ERR_OK} if the execution is successful.
90 *         {@link AV_ERR_INVALID_VAL} if input mem is nullptr, mem's magic error or input mem is not user created.
91 * @deprecated since 11
92 * @useinstead OH_AVBuffer_Destroy
93 * @since 10
94 */
95OH_AVErrCode OH_AVMemory_Destroy(struct OH_AVMemory *mem);
96
97#ifdef __cplusplus
98}
99#endif
100
101#endif // NATIVE_AVMEMORY_H
102