1fa7767c5Sopenharmony_ci/* 2fa7767c5Sopenharmony_ci * Copyright (C) 2023 Huawei Device Co., Ltd. 3fa7767c5Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fa7767c5Sopenharmony_ci * you may not use this file except in compliance with the License. 5fa7767c5Sopenharmony_ci * You may obtain a copy of the License at 6fa7767c5Sopenharmony_ci * 7fa7767c5Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fa7767c5Sopenharmony_ci * 9fa7767c5Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fa7767c5Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fa7767c5Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fa7767c5Sopenharmony_ci * See the License for the specific language governing permissions and 13fa7767c5Sopenharmony_ci * limitations under the License. 14fa7767c5Sopenharmony_ci */ 15fa7767c5Sopenharmony_ci 16fa7767c5Sopenharmony_ci#ifndef NATIVE_AVFORMAT_H 17fa7767c5Sopenharmony_ci#define NATIVE_AVFORMAT_H 18fa7767c5Sopenharmony_ci 19fa7767c5Sopenharmony_ci#include <stdint.h> 20fa7767c5Sopenharmony_ci#include <stdbool.h> 21fa7767c5Sopenharmony_ci#include <stdio.h> 22fa7767c5Sopenharmony_ci 23fa7767c5Sopenharmony_ci#ifdef __cplusplus 24fa7767c5Sopenharmony_ciextern "C" { 25fa7767c5Sopenharmony_ci#endif 26fa7767c5Sopenharmony_ci 27fa7767c5Sopenharmony_citypedef struct OH_AVFormat OH_AVFormat; 28fa7767c5Sopenharmony_ci 29fa7767c5Sopenharmony_ci/** 30fa7767c5Sopenharmony_ci * @brief Enumerates AVPixel Format. 31fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 32fa7767c5Sopenharmony_ci * @since 9 33fa7767c5Sopenharmony_ci * @version 1.0 34fa7767c5Sopenharmony_ci */ 35fa7767c5Sopenharmony_citypedef enum OH_AVPixelFormat { 36fa7767c5Sopenharmony_ci /** 37fa7767c5Sopenharmony_ci * yuv 420 planar. 38fa7767c5Sopenharmony_ci */ 39fa7767c5Sopenharmony_ci AV_PIXEL_FORMAT_YUVI420 = 1, 40fa7767c5Sopenharmony_ci /** 41fa7767c5Sopenharmony_ci * NV12. yuv 420 semiplanar. 42fa7767c5Sopenharmony_ci */ 43fa7767c5Sopenharmony_ci AV_PIXEL_FORMAT_NV12 = 2, 44fa7767c5Sopenharmony_ci /** 45fa7767c5Sopenharmony_ci * NV21. yvu 420 semiplanar. 46fa7767c5Sopenharmony_ci */ 47fa7767c5Sopenharmony_ci AV_PIXEL_FORMAT_NV21 = 3, 48fa7767c5Sopenharmony_ci /** 49fa7767c5Sopenharmony_ci * format from surface. 50fa7767c5Sopenharmony_ci */ 51fa7767c5Sopenharmony_ci AV_PIXEL_FORMAT_SURFACE_FORMAT = 4, 52fa7767c5Sopenharmony_ci /** 53fa7767c5Sopenharmony_ci * RGBA8888 54fa7767c5Sopenharmony_ci */ 55fa7767c5Sopenharmony_ci AV_PIXEL_FORMAT_RGBA = 5, 56fa7767c5Sopenharmony_ci} OH_AVPixelFormat; 57fa7767c5Sopenharmony_ci 58fa7767c5Sopenharmony_ci/** 59fa7767c5Sopenharmony_ci * @briefCreate an OH_AVFormat handle pointer to read and write data 60fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 61fa7767c5Sopenharmony_ci * @return Returns a pointer to an OH_AVFormat instance 62fa7767c5Sopenharmony_ci * @since 9 63fa7767c5Sopenharmony_ci * @version 1.0 64fa7767c5Sopenharmony_ci */ 65fa7767c5Sopenharmony_cistruct OH_AVFormat *OH_AVFormat_Create(void); 66fa7767c5Sopenharmony_ci 67fa7767c5Sopenharmony_ci/** 68fa7767c5Sopenharmony_ci * @briefCreate an audio OH_AVFormat handle pointer to read and write data 69fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 70fa7767c5Sopenharmony_ci * @param mimeType mime type 71fa7767c5Sopenharmony_ci * @param sampleRate sample rate 72fa7767c5Sopenharmony_ci * @param channelCount channel count 73fa7767c5Sopenharmony_ci * @return Returns a pointer to an OH_AVFormat instance 74fa7767c5Sopenharmony_ci * @since 10 75fa7767c5Sopenharmony_ci * @version 1.0 76fa7767c5Sopenharmony_ci */ 77fa7767c5Sopenharmony_cistruct OH_AVFormat *OH_AVFormat_CreateAudioFormat(const char *mimeType, 78fa7767c5Sopenharmony_ci int32_t sampleRate, 79fa7767c5Sopenharmony_ci int32_t channelCount); 80fa7767c5Sopenharmony_ci 81fa7767c5Sopenharmony_ci/** 82fa7767c5Sopenharmony_ci * @briefCreate an video OH_AVFormat handle pointer to read and write data 83fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 84fa7767c5Sopenharmony_ci * @param mimeType mime type 85fa7767c5Sopenharmony_ci * @param width width 86fa7767c5Sopenharmony_ci * @param height height 87fa7767c5Sopenharmony_ci * @return Returns a pointer to an OH_AVFormat instance 88fa7767c5Sopenharmony_ci * @since 10 89fa7767c5Sopenharmony_ci * @version 1.0 90fa7767c5Sopenharmony_ci */ 91fa7767c5Sopenharmony_cistruct OH_AVFormat *OH_AVFormat_CreateVideoFormat(const char *mimeType, 92fa7767c5Sopenharmony_ci int32_t width, 93fa7767c5Sopenharmony_ci int32_t height); 94fa7767c5Sopenharmony_ci 95fa7767c5Sopenharmony_ci/** 96fa7767c5Sopenharmony_ci * @brief Destroy the specified OH_AVFormat handle resource 97fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 98fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 99fa7767c5Sopenharmony_ci * @return void 100fa7767c5Sopenharmony_ci * @since 9 101fa7767c5Sopenharmony_ci * @version 1.0 102fa7767c5Sopenharmony_ci */ 103fa7767c5Sopenharmony_civoid OH_AVFormat_Destroy(struct OH_AVFormat *format); 104fa7767c5Sopenharmony_ci 105fa7767c5Sopenharmony_ci/** 106fa7767c5Sopenharmony_ci * @brief Copy OH_AVFormat handle resource 107fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 108fa7767c5Sopenharmony_ci * @param to OH_AVFormat handle pointer to receive data 109fa7767c5Sopenharmony_ci * @param from pointer to the OH_AVFormat handle of the copied data 110fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 111fa7767c5Sopenharmony_ci * @since 9 112fa7767c5Sopenharmony_ci * @version 1.0 113fa7767c5Sopenharmony_ci */ 114fa7767c5Sopenharmony_cibool OH_AVFormat_Copy(struct OH_AVFormat *to, struct OH_AVFormat *from); 115fa7767c5Sopenharmony_ci 116fa7767c5Sopenharmony_ci/** 117fa7767c5Sopenharmony_ci * @brief Write Int data to OH_AVFormat 118fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 119fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 120fa7767c5Sopenharmony_ci * @param key key to write data 121fa7767c5Sopenharmony_ci * @param value written data 122fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 123fa7767c5Sopenharmony_ci * @since 9 124fa7767c5Sopenharmony_ci * @version 1.0 125fa7767c5Sopenharmony_ci */ 126fa7767c5Sopenharmony_cibool OH_AVFormat_SetIntValue(struct OH_AVFormat *format, const char *key, int32_t value); 127fa7767c5Sopenharmony_ci 128fa7767c5Sopenharmony_ci/** 129fa7767c5Sopenharmony_ci * @brief Write Long data to OH_AVFormat 130fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 131fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 132fa7767c5Sopenharmony_ci * @param key key to write data 133fa7767c5Sopenharmony_ci * @param value written data 134fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 135fa7767c5Sopenharmony_ci * @since 9 136fa7767c5Sopenharmony_ci * @version 1.0 137fa7767c5Sopenharmony_ci */ 138fa7767c5Sopenharmony_cibool OH_AVFormat_SetLongValue(struct OH_AVFormat *format, const char *key, int64_t value); 139fa7767c5Sopenharmony_ci 140fa7767c5Sopenharmony_ci/** 141fa7767c5Sopenharmony_ci * @brief Write Float data to OH_AVFormat 142fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 143fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 144fa7767c5Sopenharmony_ci * @param key key to write data 145fa7767c5Sopenharmony_ci * @param value written data 146fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 147fa7767c5Sopenharmony_ci * @since 9 148fa7767c5Sopenharmony_ci * @version 1.0 149fa7767c5Sopenharmony_ci */ 150fa7767c5Sopenharmony_cibool OH_AVFormat_SetFloatValue(struct OH_AVFormat *format, const char *key, float value); 151fa7767c5Sopenharmony_ci 152fa7767c5Sopenharmony_ci/** 153fa7767c5Sopenharmony_ci * @brief Write Double data to OH_AVFormat 154fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 155fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 156fa7767c5Sopenharmony_ci * @param key key to write data 157fa7767c5Sopenharmony_ci * @param value written data 158fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 159fa7767c5Sopenharmony_ci * @since 9 160fa7767c5Sopenharmony_ci * @version 1.0 161fa7767c5Sopenharmony_ci */ 162fa7767c5Sopenharmony_cibool OH_AVFormat_SetDoubleValue(struct OH_AVFormat *format, const char *key, double value); 163fa7767c5Sopenharmony_ci 164fa7767c5Sopenharmony_ci/** 165fa7767c5Sopenharmony_ci * @brief Write String data to OH_AVFormat 166fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 167fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 168fa7767c5Sopenharmony_ci * @param key key to write data 169fa7767c5Sopenharmony_ci * @param value written data 170fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 171fa7767c5Sopenharmony_ci * @since 9 172fa7767c5Sopenharmony_ci * @version 1.0 173fa7767c5Sopenharmony_ci */ 174fa7767c5Sopenharmony_cibool OH_AVFormat_SetStringValue(struct OH_AVFormat *format, const char *key, const char *value); 175fa7767c5Sopenharmony_ci 176fa7767c5Sopenharmony_ci/** 177fa7767c5Sopenharmony_ci * @brief Write a block of data of a specified length to OH_AVFormat 178fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 179fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 180fa7767c5Sopenharmony_ci * @param key key to write data 181fa7767c5Sopenharmony_ci * @param addr written data addr 182fa7767c5Sopenharmony_ci * @param size written data length 183fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 184fa7767c5Sopenharmony_ci * @since 9 185fa7767c5Sopenharmony_ci * @version 1.0 186fa7767c5Sopenharmony_ci */ 187fa7767c5Sopenharmony_cibool OH_AVFormat_SetBuffer(struct OH_AVFormat *format, const char *key, const uint8_t *addr, size_t size); 188fa7767c5Sopenharmony_ci 189fa7767c5Sopenharmony_ci/** 190fa7767c5Sopenharmony_ci * @brief Read Int data from OH_AVFormat 191fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 192fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 193fa7767c5Sopenharmony_ci * @param key read key value 194fa7767c5Sopenharmony_ci * @param out read data 195fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 196fa7767c5Sopenharmony_ci * @since 9 197fa7767c5Sopenharmony_ci * @version 1.0 198fa7767c5Sopenharmony_ci */ 199fa7767c5Sopenharmony_cibool OH_AVFormat_GetIntValue(struct OH_AVFormat *format, const char *key, int32_t *out); 200fa7767c5Sopenharmony_ci 201fa7767c5Sopenharmony_ci/** 202fa7767c5Sopenharmony_ci * @brief Read Long data from OH_AVFormat 203fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 204fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 205fa7767c5Sopenharmony_ci * @param key read key value 206fa7767c5Sopenharmony_ci * @param out read data 207fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 208fa7767c5Sopenharmony_ci * @since 9 209fa7767c5Sopenharmony_ci * @version 1.0 210fa7767c5Sopenharmony_ci */ 211fa7767c5Sopenharmony_cibool OH_AVFormat_GetLongValue(struct OH_AVFormat *format, const char *key, int64_t *out); 212fa7767c5Sopenharmony_ci 213fa7767c5Sopenharmony_ci/** 214fa7767c5Sopenharmony_ci * @brief Read Float data from OH_AVFormat 215fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 216fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 217fa7767c5Sopenharmony_ci * @param key read key value 218fa7767c5Sopenharmony_ci * @param out read data 219fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 220fa7767c5Sopenharmony_ci * @since 9 221fa7767c5Sopenharmony_ci * @version 1.0 222fa7767c5Sopenharmony_ci */ 223fa7767c5Sopenharmony_cibool OH_AVFormat_GetFloatValue(struct OH_AVFormat *format, const char *key, float *out); 224fa7767c5Sopenharmony_ci 225fa7767c5Sopenharmony_ci/** 226fa7767c5Sopenharmony_ci * @brief Read Double data from OH_AVFormat 227fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 228fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 229fa7767c5Sopenharmony_ci * @param key read key value 230fa7767c5Sopenharmony_ci * @param out read data 231fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 232fa7767c5Sopenharmony_ci * @since 9 233fa7767c5Sopenharmony_ci * @version 1.0 234fa7767c5Sopenharmony_ci */ 235fa7767c5Sopenharmony_cibool OH_AVFormat_GetDoubleValue(struct OH_AVFormat *format, const char *key, double *out); 236fa7767c5Sopenharmony_ci 237fa7767c5Sopenharmony_ci/** 238fa7767c5Sopenharmony_ci * @brief Read String data from OH_AVFormat 239fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 240fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 241fa7767c5Sopenharmony_ci * @param key read key value 242fa7767c5Sopenharmony_ci * @param out The read string pointer, the data life cycle pointed to is updated with GetString, 243fa7767c5Sopenharmony_ci * and Format is destroyed. If the caller needs to hold it for a long time, it must copy the memory 244fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 245fa7767c5Sopenharmony_ci * @since 9 246fa7767c5Sopenharmony_ci * @version 1.0 247fa7767c5Sopenharmony_ci */ 248fa7767c5Sopenharmony_cibool OH_AVFormat_GetStringValue(struct OH_AVFormat *format, const char *key, const char **out); 249fa7767c5Sopenharmony_ci 250fa7767c5Sopenharmony_ci/** 251fa7767c5Sopenharmony_ci * @brief Read a block of data of specified length from OH_AVFormat 252fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 253fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 254fa7767c5Sopenharmony_ci * @param key Key value for reading and writing data 255fa7767c5Sopenharmony_ci * @param addr The life cycle is held by the format, with the destruction of the format, 256fa7767c5Sopenharmony_ci * if the caller needs to hold it for a long time, it must copy the memory 257fa7767c5Sopenharmony_ci * @param size Length of read and write data 258fa7767c5Sopenharmony_ci * @return The return value is TRUE for success, FALSE for failure 259fa7767c5Sopenharmony_ci * @since 9 260fa7767c5Sopenharmony_ci * @version 1.0 261fa7767c5Sopenharmony_ci */ 262fa7767c5Sopenharmony_cibool OH_AVFormat_GetBuffer(struct OH_AVFormat *format, const char *key, uint8_t **addr, size_t *size); 263fa7767c5Sopenharmony_ci 264fa7767c5Sopenharmony_ci/** 265fa7767c5Sopenharmony_ci * @brief Output the information contained in OH_AVFormat as a string. 266fa7767c5Sopenharmony_ci * @syscap SystemCapability.Multimedia.Media.Core 267fa7767c5Sopenharmony_ci * @param format pointer to an OH_AVFormat instance 268fa7767c5Sopenharmony_ci * @return Returns a string consisting of key and data 269fa7767c5Sopenharmony_ci * @since 9 270fa7767c5Sopenharmony_ci * @version 1.0 271fa7767c5Sopenharmony_ci */ 272fa7767c5Sopenharmony_ciconst char *OH_AVFormat_DumpInfo(struct OH_AVFormat *format); 273fa7767c5Sopenharmony_ci 274fa7767c5Sopenharmony_ci#ifdef __cplusplus 275fa7767c5Sopenharmony_ci} 276fa7767c5Sopenharmony_ci#endif 277fa7767c5Sopenharmony_ci 278fa7767c5Sopenharmony_ci#endif // NATIVE_AVFORMAT_H