/* * Copyright (c) 2020-2021 Huawei Device Co., Ltd. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * @addtogroup format * @{ * * @brief Defines format-related APIs. * * For example, you use this module to define custom data types and to initialize, create, * destroy the muxer and demuxer, and set their parameters. Also, you can read demuxer data frames, * select demuxer tracks, add muxer tracks, and write data frames into a container. * * @since 1.0 * @version 1.0 */ /** * @file parameter_item.h * * @brief Defines format-related structures and enumerations used to configure and obtain dynamic parameters. * * * * @since 1.0 * @version 1.0 */ #ifndef PARAMETER_ITEM_H #define PARAMETER_ITEM_H /** * @brief Enumerates key types used for setting and obtaining parameters. * * @since 1.0 * @version 1.0 */ typedef enum { KEY_TYPE_MIME = 0x6d696d65, /**< MIME type. The value type is cstring. */ KEY_TYPE_HTTP_HEADERS = 0x68706864, /**< HTTP header. The value type is cstring. */ KEY_TYPE_LANGUAGE = 0x6c616e67, /**< Track language, which is usually the language of audio and subtitles. * The value type is cstring. */ KEY_TYPE_PRE_CACHE = 0x70726361, /**< Precapture cache size. The value type is int */ KEY_TYPE_SET_SYNC_BUFFER_MSEC = 0x73796e62, /**< Set sync buffer size, uint ms. The value type is int */ KEY_TYPE_EXTRADATA = 0x65787472, /**< Extra data. The value type is pointer */ KEY_TYPE_THUMBNAIL = 0x74686e6c /**< Thumbnail. The value type is pointer. */ } KeyType; /** * @brief Defines a structure for configuring and obtaining dynamic parameters. */ typedef struct { uint32_t key; /**< Key type. For details, see {@link KeyType} */ int32_t size; /**< Data size, which indicates the size of the buffer memory pointed by pValue */ /** * @brief Defines value types of the parameters. */ union { int32_t s32Value; /**< 32-bit integer */ uint32_t u32Value; /**< 32-bit unsigned integer */ int64_t s64Value; /**< 64-bit integer */ uint64_t u64Value; /**< 64-bit unsigned integer */ float fValue; /**< Single-precision floating point number */ double dValue; /**< Double-precision floating point number */ const void *pValue; /**< Pointer */ } value; } ParameterItem; #endif // PARAMETER_ITEM_H /** @} */