mirror of
https://github.com/openharmony/interface_sdk_c.git
synced 2026-08-24 14:32:50 -04:00
aa25f5e3c7
Signed-off-by: yang-xiaoyu5 <yangxiaoyu5@huawei.com>
3752 lines
104 KiB
C
3752 lines
104 KiB
C
/*
|
|
* Copyright (C) 2023 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 CodecBase
|
|
* @{
|
|
*
|
|
* @brief The CodecBase module provides variables, properties, and functions
|
|
* for audio and video muxer, demuxer, and basic encoding and decoding functions.
|
|
*
|
|
* @since 9
|
|
*/
|
|
|
|
/**
|
|
* @file native_avcodec_base.h
|
|
*
|
|
* @brief Declare the Native API used for audio and video muxer,
|
|
* demuxer and basic encoding and decoding functions.
|
|
*
|
|
* @kit AVCodecKit
|
|
* @library libnative_media_codecbase.so
|
|
* @syscap SystemCapability.Multimedia.Media.CodecBase
|
|
* @since 9
|
|
*/
|
|
#ifndef NATIVE_AVCODEC_BASE_H
|
|
#define NATIVE_AVCODEC_BASE_H
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include "native_avbuffer.h"
|
|
#include "native_avmemory.h"
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Describes a native object for the graphics interface.
|
|
*
|
|
* @since 9
|
|
*/
|
|
typedef struct NativeWindow OHNativeWindow;
|
|
|
|
/**
|
|
* @brief Describes a native object for the audio and video codec interface.
|
|
*
|
|
* @since 9
|
|
*/
|
|
typedef struct OH_AVCodec OH_AVCodec;
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called to report error information when an error occurs during
|
|
* the running of an OH_AVCodec instance.
|
|
*
|
|
* | Use Case| Error Code|
|
|
* | -------- | -------- |
|
|
* | Audio encoding/decoding| **AV_ERR_DRM_DECRYPT_FAILED**: DRM decryption failed. |
|
|
* | Video encoding/decoding| **AV_ERROR_NO_MEMORY**: System resources are insufficient.<br>**AV_ERROR_UNKNOWN**: An unknown error occurs. Analyze the error based on specific logs.<br>**AV_ERR_SERVICE_DIED**: The service is dead. |
|
|
* | Video decoding| **AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION**: The current input does not support CSC. |
|
|
* <!--RP1--><!--RP1End-->
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param errorCode Error code.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @since 9
|
|
*/
|
|
typedef void (*OH_AVCodecOnError)(OH_AVCodec *codec, int32_t errorCode, void *userData);
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called to report the new stream description when the resolution
|
|
* of the input video stream being decoded or the output video stream that has been encoded changes.
|
|
*
|
|
* Starting from API version 15, this function pointer is called to report the new stream description when the stream
|
|
* sampling rate, number of audio channels, or audio sampling format changes during audio decoding. The decoding
|
|
* formats that can detect these changes include <!--RP3--><!--RP3End-->AAC, FLAC, MP3, and VORBIS.
|
|
*
|
|
* Note that the lifecycle of the pointer to the OH_AVFormat instance is valid only when the function pointer is being
|
|
* called. Do not access the pointer to the instance after the function pointer is called.
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param format Pointer to the description information about the new output stream.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @since 9
|
|
*/
|
|
typedef void (*OH_AVCodecOnStreamChanged)(OH_AVCodec *codec, OH_AVFormat *format, void *userData);
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called when new input data is required during the running of an
|
|
* OH_AVCodec instance. The function carries a buffer to fill in new input data.
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param index Index of the new input buffer.
|
|
* @param data Pointer to the data to fill in the new input buffer.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @deprecated since 11
|
|
* @useinstead OH_AVCodecOnNeedInputBuffer
|
|
* @since 9
|
|
*/
|
|
typedef void (*OH_AVCodecOnNeedInputData)(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data, void *userData);
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called when new output data is generated during the running of an
|
|
* OH_AVCodec instance. The function carries a buffer filled with new output data. Note that the lifecycle of the
|
|
* pointer to the OH_AVCodecBufferAttr instance is valid only when the function pointer is being called. Do not access
|
|
* the pointer to the instance after the function pointer is called.
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param index Index of the new output buffer.
|
|
* @param data Pointer to the data filled in the new output buffer.
|
|
* @param attr Pointer to the description information about the new output buffer.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @deprecated since 11
|
|
* @useinstead OH_AVCodecOnNewOutputBuffer
|
|
* @since 9
|
|
*/
|
|
typedef void (*OH_AVCodecOnNewOutputData)(OH_AVCodec *codec, uint32_t index, OH_AVMemory *data,
|
|
OH_AVCodecBufferAttr *attr, void *userData);
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called when new input data is required during the running of an
|
|
* OH_AVCodec instance. The function carries a buffer to fill in new input data.
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param index Index of the new input buffer.
|
|
* @param buffer Pointer to the data to fill in the new input buffer.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @since 11
|
|
*/
|
|
typedef void (*OH_AVCodecOnNeedInputBuffer)(OH_AVCodec *codec, uint32_t index, OH_AVBuffer *buffer, void *userData);
|
|
|
|
/**
|
|
* @brief Defines the pointer to the function that is called when new output data is generated during the running of an
|
|
* OH_AVCodec instance. The function carries a buffer filled with new output data.
|
|
*
|
|
* @param codec Pointer to an OH_AVCodec instance.
|
|
* @param index Index of the new output buffer.
|
|
* @param buffer Pointer to the data filled in the new output buffer.
|
|
* @param userData Pointer to the data on which the caller depends when executing the callback.
|
|
* @since 11
|
|
*/
|
|
typedef void (*OH_AVCodecOnNewOutputBuffer)(OH_AVCodec *codec, uint32_t index, OH_AVBuffer *buffer, void *userData);
|
|
|
|
/**
|
|
* @brief The struct defines all the asynchronous callback function pointers of an OH_AVCodec instance. To ensure the
|
|
* normal running of OH_AVCodec, you must register the instance of this struct with the OH_AVCodec instance and process
|
|
* the information reported by the callback function.
|
|
*
|
|
* @param onError Monitor OH_AVCodec operation errors, refer to {@link OH_AVCodecOnError}
|
|
* @param onStreamChanged Monitor codec stream information, refer to {@link OH_AVCodecOnStreamChanged}
|
|
* @param onNeedInputData Monitoring codec requires input data, refer to {@link OH_AVCodecOnNeedInputData}
|
|
* @param onNeedOutputData Monitor codec to generate output data, refer to {@link OH_AVCodecOnNewOutputData}
|
|
* @deprecated since 11
|
|
* @useinstead OH_AVCodecCallback
|
|
* @since 9
|
|
*/
|
|
typedef struct OH_AVCodecAsyncCallback {
|
|
OH_AVCodecOnError onError;
|
|
OH_AVCodecOnStreamChanged onStreamChanged;
|
|
OH_AVCodecOnNeedInputData onNeedInputData;
|
|
OH_AVCodecOnNewOutputData onNeedOutputData;
|
|
} OH_AVCodecAsyncCallback;
|
|
|
|
/**
|
|
* @brief The struct defines all the asynchronous callback function pointers of an OH_AVCodec instance. To ensure the
|
|
* normal running of OH_AVCodec, you must register the instance of this struct with the OH_AVCodec instance and process
|
|
* the information reported by the callback function.
|
|
*
|
|
* @param onError Monitor OH_AVCodec operation errors, refer to {@link OH_AVCodecOnError}
|
|
* @param onStreamChanged Monitor codec stream information, refer to {@link OH_AVCodecOnStreamChanged}
|
|
* @param onNeedInputBuffer Monitoring codec requires input buffer, refer to {@link OH_AVCodecOnNeedInputBuffer}
|
|
* @param onNewOutputBuffer Monitor codec to generate output buffer, refer to {@link OH_AVCodecOnNewOutputBuffer}
|
|
* @since 11
|
|
*/
|
|
typedef struct OH_AVCodecCallback {
|
|
OH_AVCodecOnError onError;
|
|
OH_AVCodecOnStreamChanged onStreamChanged;
|
|
OH_AVCodecOnNeedInputBuffer onNeedInputBuffer;
|
|
OH_AVCodecOnNewOutputBuffer onNewOutputBuffer;
|
|
} OH_AVCodecCallback;
|
|
|
|
/**
|
|
* @brief Defines a function pointer used to provide the capability of obtaining user-defined media data.
|
|
*
|
|
* @param data Pointer to the buffer to be filled in.
|
|
* @param length Length of the data to read.
|
|
* @param pos Offset from which the data is read.
|
|
* @return Actual length of the data read to the buffer.
|
|
* @since 12
|
|
*/
|
|
typedef int32_t (*OH_AVDataSourceReadAt)(OH_AVBuffer *data, int32_t length, int64_t pos);
|
|
|
|
/**
|
|
* @brief The struct describes a user-defined data source.
|
|
*
|
|
* @since 12
|
|
*/
|
|
typedef struct OH_AVDataSource {
|
|
/**
|
|
* Size of the data source.
|
|
* @since 12
|
|
*/
|
|
int64_t size;
|
|
/**
|
|
* Callback of the data source.
|
|
* @since 12
|
|
*/
|
|
OH_AVDataSourceReadAt readAt;
|
|
} OH_AVDataSource;
|
|
|
|
/**
|
|
* @brief Defines a function pointer used to provide the capability of obtaining user-defined media data.
|
|
*
|
|
* @param data Pointer to the buffer to be filled in.
|
|
* @param length Length of the data to read.
|
|
* @param pos Offset from which the data is read.
|
|
* @param userData Pointer to user-defined data.
|
|
* @return Actual length of the data read to the buffer.
|
|
* @since 20
|
|
*/
|
|
typedef int32_t (*OH_AVDataSourceReadAtExt)(OH_AVBuffer *data, int32_t length, int64_t pos, void *userData);
|
|
|
|
/**
|
|
* @brief The struct describes a user-defined data source. User-defined data can be passed to its callback functions
|
|
* through the **userData** parameter.
|
|
*
|
|
* @since 20
|
|
*/
|
|
typedef struct OH_AVDataSourceExt {
|
|
/**
|
|
* Size of the data source.
|
|
* @since 20
|
|
*/
|
|
int64_t size;
|
|
/**
|
|
* Callback of the data source.
|
|
* @since 20
|
|
*/
|
|
OH_AVDataSourceReadAtExt readAt;
|
|
} OH_AVDataSourceExt;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the AVC (H.264) video codec.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_AVC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the AAC audio codec.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_AAC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the FLAC audio codec.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_FLAC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Vorbis audio decoder.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_VORBIS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the MP3 audio codec.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_MPEG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the HEVC (H.265) video codec.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_HEVC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the MPEG4 video encoder, which is used only for
|
|
* multiplexing MPEG4 video streams.
|
|
*
|
|
* @deprecated since 11
|
|
* @useinstead OH_AVCODEC_MIMETYPE_VIDEO_MPEG4_PART2
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MPEG4;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the JPG image encoder, which is used only for multiplexing
|
|
* JPG covers.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_IMAGE_JPG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the PNG image encoder, which is used only for multiplexing
|
|
* PNG covers.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_IMAGE_PNG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the BMP image encoder, which is used only for multiplexing
|
|
* BMP covers.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_IMAGE_BMP;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Audio Vivid audio codec.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_VIVID;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the AMR-NB audio <!--RP4--><!--RP4End--> decoder.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_AMR_NB;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the AMR-WB audio <!--RP4--><!--RP4End--> decoder.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_AMR_WB;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Opus audio codec.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_OPUS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the G.711 mu-law audio codec.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_G711MU;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the APE audio decoder.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_APE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the VVC (H.266) video codec.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_VVC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the SRT subtitle demuxer.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_SUBTITLE_SRT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the WEBVTT subtitle demuxer.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_SUBTITLE_WEBVTT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of raw audio streams.
|
|
*
|
|
* @since 18
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_RAW;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the G.711 a-law audio decoder.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_G711A;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Apple Lossless Audio Codec (ALAC) audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_ALAC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Dolby Audio Coding 3 (AC 3) audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_AC3;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Enhanced AC-3 (EAC3) audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_EAC3;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Windows Media Audio (WMA) V1 audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_WMAV1;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the WMA V2 audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_WMAV2;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the WMA Pro audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_WMAPRO;
|
|
|
|
/**
|
|
* @brief Size of the audio data block, in bytes. The value type is int32_t. This key is used only for WMA (V1, V2, and
|
|
* PRO) decoders.
|
|
*
|
|
* The allowed MIME types include **OH_AVCODEC_MIMETYPE_AUDIO_WMAV1**, **OH_AVCODEC_MIMETYPE_AUDIO_WMAV2**, and **
|
|
* OH_AVCODEC_MIMETYPE_AUDIO_WMAPRO**.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_MD_KEY_BLOCK_ALIGN;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Global System for Mobile Communications (GSM) audio
|
|
* decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_GSM;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the GSM Microsoft variant (MS) audio decoder.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_GSM_MS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Transform-domain Weighted Interleave Vector
|
|
* Quantization (TWINVQ) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_TWINVQ;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Internet Low Bitrate Codec (ILBC) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_ILBC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the True High Definition (TRUEHD) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_TRUEHD;
|
|
|
|
/**
|
|
* @brief MIME type of the DVAUDIO (Digital Video Audio) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_DVAUDIO;
|
|
|
|
/**
|
|
* @brief MIME type of the DTS (Digital Theater Systems) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_DTS;
|
|
|
|
/**
|
|
* @brief MIME type of the Cook (RealAudio Cook) audio decoder.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_AUDIO_COOK;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the MPEG2 video codec.
|
|
*
|
|
* @since 17
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MPEG2;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the MPEG4 video encoder, which is used only for
|
|
* multiplexing MPEG4 video streams.
|
|
*
|
|
* @since 17
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MPEG4_PART2;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the H.263 video codec.
|
|
*
|
|
* @since 17
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_H263;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the VC-1 video codec.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_VC1;
|
|
|
|
/**
|
|
* @brief MIME type of the AV1 video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_AV1;
|
|
|
|
/**
|
|
* @brief MIME type of the VP9 video codec.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_VP9;
|
|
|
|
/**
|
|
* @brief MIME type of the VP8 video codec.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_VP8;
|
|
|
|
/**
|
|
* @brief MIME type of the RV30 video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_RV30;
|
|
|
|
/**
|
|
* @brief MIME type of the RV40 video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_RV40;
|
|
|
|
/**
|
|
* @brief MIME type of the WVC1 video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_WVC1;
|
|
|
|
/**
|
|
* @brief MIME type of the DVVIDEO (Digital Video) video codec. Supports DV NTSC, DV PAL, and DVCPRO HD.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_DVVIDEO;
|
|
|
|
/**
|
|
* @brief MIME type of the RAWVIDEO video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_RAWVIDEO;
|
|
|
|
/**
|
|
* @brief MIME type of the MPEG1 video codec.
|
|
*
|
|
* @since 23
|
|
* */
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MPEG1;
|
|
|
|
/**
|
|
* @brief MIME type of the Cinepak video codec.
|
|
*
|
|
* @since 24
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_CINEPAK;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Microsoft Video 1 (MSVIDEO1) video codec.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MSVIDEO1;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the WMV3 video codec.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_WMV3;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the Motion JPEG (MJPEG) video codec.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_AVCODEC_MIMETYPE_VIDEO_MJPEG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the surface buffer timestamp. The value is of the int64_t type.
|
|
*
|
|
* @deprecated since 14
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_ED_KEY_TIME_STAMP;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the end of stream for the surface buffer. The value type is int32_t.
|
|
*
|
|
* @deprecated since 14
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_ED_KEY_EOS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the track type in a media file. The value type is int32_t. For details, see
|
|
* {@link OH_MediaType}.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_TRACK_TYPE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the MIME type of the codec. The value type is char *.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_CODEC_MIME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the duration in a media file, in microseconds. The value type is int64_t.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_DURATION;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the bit rate. The value type is int64_t.
|
|
* You can call {@link OH_AVCapability_GetEncoderBitrateRange} to obtain the value range.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_BITRATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum size of an input stream to decode. The value type is int32_t.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_MAX_INPUT_SIZE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video width. The value type is int32_t.
|
|
*
|
|
* For video encoding, this key is used to set the target encoding resolution. For video decoding, this key serves
|
|
* as a resolution hint for the decoder to pre-allocate internal buffers.
|
|
* The actual decoded output dimensions are provided by **OH_MD_KEY_VIDEO_PIC_WIDTH**.
|
|
* This key is mainly used to control memory allocation. You can call {@link OH_AVCapability_GetVideoWidthRange}
|
|
* to obtain the recommended value range. This API defines the decoding width range supported by the codec.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_WIDTH;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video height. The value type is int32_t.
|
|
*
|
|
* For video encoding, this key is used to set the target encoding resolution. For video decoding,
|
|
* this key serves as a resolution hint for the decoder to pre-allocate internal buffers.
|
|
* The actual decoded output dimensions are provided by **OH_MD_KEY_VIDEO_PIC_HEIGHT**.
|
|
* This key is mainly used to control memory allocation. You can call {@link OH_AVCapability_GetVideoHeightRange}
|
|
* to obtain the recommended value range. This API defines the decoding height range supported by the codec.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_HEIGHT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video pixel format. The value type is int32_t.
|
|
* For details, see {@link OH_AVPixelFormat}.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_PIXEL_FORMAT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the original audio format. The value type is int32_t.
|
|
* For details, see {@link OH_BitsPerSample}.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_SAMPLE_FORMAT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video frame rate. The value type is double. The value must be greater
|
|
* than **0**. You can call {@link OH_AVCapability_GetVideoFrameRateRange} to obtain the value range.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_FRAME_RATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video encoding bit rate mode. The value type is int32_t. For details,
|
|
* see {@link OH_BitrateMode}.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODE_BITRATE_MODE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the encoding grading. The value type is int32_t. For details,
|
|
* see {@link OH_AVCProfile}, {@link OH_HEVCProfile}, and {@link OH_AACProfile}.
|
|
* You can call {@link OH_AVCapability_GetSupportedProfiles} to obtain the supported profiles.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_PROFILE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of audio channels. The value type is int32_t.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_AUD_CHANNEL_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the audio sampling rate. The value type is int32_t.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_AUD_SAMPLE_RATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the key frame interval, in milliseconds. The value type is int32_t. This
|
|
* key is optional and is used only for video encoding.
|
|
*
|
|
* A negative value means that only the first frame is a keyframe. The value **0** means that all frames are keyframes.
|
|
* A positive value means one keyframe every (frameRate * value)/1000 frames. The default value is **1000**.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_I_FRAME_INTERVAL;
|
|
|
|
/**
|
|
* @brief Key for video transform type, value type is int32_t, see {@link OH_NativeBuffer_TransformType}.
|
|
*
|
|
* This key is used to set the surface transform for video decoders (surface mode).
|
|
* If not specified, the default value is 0 ({@link NATIVEBUFFER_ROTATE_NONE}).
|
|
*
|
|
* This key and {@link OH_MD_KEY_ROTATION} are mutually exclusive. If both are provided,
|
|
* OH_MD_KEY_VIDEO_TRANSFORM_TYPE takes precedence.
|
|
*
|
|
* Note that the degrees specified in {@link OH_NativeBuffer_TransformType} represent counter-clockwise rotation,
|
|
* which are opposite to the direction of rotation defined by {@link OH_MD_KEY_ROTATION}.
|
|
*
|
|
*The correspondence is:
|
|
*
|
|
* - {@link NATIVEBUFFER_ROTATE_NONE} => same as OH_MD_KEY_ROTATION = 0
|
|
*
|
|
* - {@link NATIVEBUFFER_ROTATE_90} => same as OH_MD_KEY_ROTATION = 270
|
|
*
|
|
* - {@link NATIVEBUFFER_ROTATE_180} => same as OH_MD_KEY_ROTATION = 180
|
|
*
|
|
* - {@link NATIVEBUFFER_ROTATE_270} => same as OH_MD_KEY_ROTATION = 90
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_TRANSFORM_TYPE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the rotation angle of the surface, with a clockwise direction. The value
|
|
* type is int32_t, and the value range is {0, 90, 180, 270}. The default value is 0.
|
|
*
|
|
* This key is optional and is used only for video decoding in surface mode
|
|
*
|
|
* You are advised to use the **OH_MD_KEY_VIDEO_TRANSFORM_TYPE** key to set the rotation angle of the surface for video
|
|
* decoding.
|
|
*
|
|
* @since 9
|
|
*/
|
|
extern const char *OH_MD_KEY_ROTATION;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video YUV value range flag. The value type is int32_t. The value **1**
|
|
* means a full range, and **0** means a limited range. The default value is **0**. If this parameter is set to a non-
|
|
* zero value, the value **1** is used.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_RANGE_FLAG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video primary colors. The value type is int32_t. The default value is
|
|
* **COLOR_PRIMARY_UNSPECIFIED**. For details, see {@link OH_ColorPrimary}. The value complies with Table 2 in H.273.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_COLOR_PRIMARIES;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video transfer characteristics. The value type is int32_t. The default
|
|
* value is **TRANSFER_CHARACTERISTIC_UNSPECIFIED**. For details, see {@link OH_TransferCharacteristic}. The value
|
|
* complies with Table 3 in H.273.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_TRANSFER_CHARACTERISTICS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video matrix coefficients. The value type is int32_t. The default value
|
|
* is **MATRIX_COEFFICIENT_UNSPECIFIED**. For details, see {@link OH_MatrixCoefficient}. The value must comply with
|
|
* Table 4 in H.273.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_MATRIX_COEFFICIENTS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the request for immediate encoding of I-frames. The value type is int32_t.
|
|
* This key is used in {@link OH_VideoEncoder_SetParameter} or takes effect immediately with each frame.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_REQUEST_I_FRAME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the required encoding quality. The value type is int32_t. The default value
|
|
* is **50**. In H.264 and H.265 encoding scenarios, the value range can be obtained by calling
|
|
* {@link OH_AVCapability_GetEncoderQualityRange}. This key applies only to the encoder in constant quality mode.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_QUALITY;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the codec-specific data. In the case of video, data carried in **SPS/PPS**
|
|
* is transferred. In the case of audio, data carried in **extraData** is transferred. The value type is uint8_t\*.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_CODEC_CONFIG;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the title of a media file . The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_TITLE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the artist in a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_ARTIST;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the album in a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_ALBUM;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the album artist of the input media. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_ALBUM_ARTIST;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the date in a media file, for example, 2024. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_DATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the comment in a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_COMMENT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the genre in a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_GENRE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the copyright of a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_COPYRIGHT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes language of a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_LANGUAGE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the description of a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_DESCRIPTION;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the lyrics in a media file. The value type is char *.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_LYRICS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of tracks in a media file. The value type is int32_t.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_TRACK_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the required encoding channel layout. The value type is int64_t. This key
|
|
* applies only to encoders. For details, see {@link OH_AudioChannelLayout}.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_CHANNEL_LAYOUT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of bits per sample. The value type is int32_t.
|
|
*
|
|
* In versions earlier than API version 20, this parameter must be set to **1** for FLAC encoding. Otherwise,
|
|
* {@link OH_AudioCodec_Configure} returns the error code {@link AV_ERR_INVALID_VAL}.
|
|
* However, this parameter has no actual effect and does not affect the encoding result.
|
|
*
|
|
* Starting from API version 20, you do not need to set it anymore.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_BITS_PER_CODED_SAMPLE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the AAC format, which can be ADTS or LATM. The value type is int32_t. The
|
|
* value **0** means the LATM format, and **1** means the ADTS format. This key is supported by AAC decoders.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_AAC_IS_ADTS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the AAC SBR format. The value type is int32_t. This key applies to AAC
|
|
* encoders.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_SBR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the FLAC compliance level. The value type is int32_t. This key is used only
|
|
* for audio encoding.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_COMPLIANCE_LEVEL;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the vorbis identification header. The value type is uint8_t*. This key
|
|
* applies only to Vorbis decoders.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_IDENTIFICATION_HEADER;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the vorbis setup header. The value type is uint8_t*. This key applies only
|
|
* to Vorbis decoders.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_SETUP_HEADER;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the video scaling mode. The value type is int32_t.
|
|
* For details, see {@link OH_ScalingMode}.
|
|
*
|
|
* You are advised to set the scaling mode by calling {@link OH_NativeWindow_NativeWindowSetScalingModeV2}. This key is
|
|
* optional and is used only for video decoding in surface mode.
|
|
*
|
|
* @deprecated since 14
|
|
* @useinstead OH_NativeWindow_NativeWindowSetScalingModeV2
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_KEY_SCALING_MODE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of input buffers. The value type is int32_t.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_MAX_INPUT_BUFFER_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of output buffers. The value type is int32_t.
|
|
*
|
|
* @since 10
|
|
*/
|
|
extern const char *OH_MD_MAX_OUTPUT_BUFFER_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the audio codec compression level. The value type is int32_t type. This key
|
|
* is used only for audio encoding.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_COMPRESSION_LEVEL;
|
|
|
|
/**
|
|
* @brief Pointer to the key that specifies whether the video track in a media file is HDR Vivid. The value type is
|
|
* int32_t. This key is used for both multiplexing and demultiplexing.
|
|
*
|
|
* The value **1** means the HDR Vivid video track, and **0** means other cases.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_IS_HDR_VIVID;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of audio objects. The value type is int32_t. This key is used
|
|
* for Audio Vivid.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_OBJECT_NUMBER;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the Audio Vivid metadata. The value type is uint8_t*. This key is used
|
|
* for Audio Vivid.
|
|
*
|
|
* @since 11
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_VIVID_METADATA;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of long-term reference (LTR) frames obtained during
|
|
* video encoding. The value type is int32_t.
|
|
*
|
|
* You can use the API {@link OH_AVCapability_GetFeatureProperties} and the enumerated value
|
|
* **VIDEO_ENCODER_LONG_TERM_REFERENCE** in {@link OH_AVCapabilityFeature} to query the maximum number.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_FEATURE_PROPERTY_KEY_VIDEO_ENCODER_MAX_LTR_FRAME_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the enabled status of temporal scalability. The value type is int32_t. **1**
|
|
* if enabled, **0** otherwise. The default value is **0**. If this parameter is set to a non-zero value, the value **
|
|
* 1** is used.
|
|
*
|
|
* You can use the API {@link OH_AVCapability_IsFeatureSupported} and the enumerated value
|
|
* **VIDEO_ENCODER_TEMPORAL_SCALABILITY** in {@link OH_AVCapabilityFeature}
|
|
* to check whether the current video encoder supports temporal scalability.
|
|
*
|
|
* For details, see {@link Temporally Scalable Video Coding}.
|
|
*
|
|
* This key is optional and used only in the configuration phase of video encoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_ENABLE_TEMPORAL_SCALABILITY;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the size of a temporal image group. The value type is int32_t. This key is
|
|
* valid only when temporal scalability is enabled.
|
|
*
|
|
* This key is optional and used only in the configuration phase of video encoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_SIZE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the reference mode in a temporal image group. The value type is int32_t.
|
|
* For details, see {@link OH_TemporalGopReferenceMode}. This key is valid only when temporal scalability is enabled.
|
|
*
|
|
* This key is optional and used only in the configuration phase of video encoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_REFERENCE_MODE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the temporal layer ID in a group of pictures (GOP).
|
|
* The value type is int32_t.
|
|
*
|
|
* Temporal layer ID **0** indicates the base layer. Temporal layer IDs **1** and above indicate enhancement layers.
|
|
* The maximum temporal layer ID is determined by **OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_REFERENCE_MODE** and
|
|
* **OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_GOP_SIZE**.
|
|
* Currently, this key is used only to query the temporal layer ID carried in **AVBuffer** output by the encoder.
|
|
* The process is as follows:
|
|
* 1. Use {@link OH_AVCodecOnNewOutputBuffer} or {@link OH_VideoEncoder_GetOutputBuffer} to
|
|
* obtain the buffer instance (**AVBuffer**).
|
|
* 2. Use {@link OH_AVBuffer_GetParameter} to obtain the parameter instance (**OH_AVFormat**),
|
|
* which does not contain basic properties.
|
|
* 3. Use {@link OH_AVFormat_GetIntValue} and this key to obtain the temporal layer ID of the corresponding frame.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_TEMPORAL_LAYER_ID;
|
|
|
|
/**
|
|
* @brief Key for describing the downsampling width in video encoder preprocess, value type is int32_t.
|
|
*
|
|
* It is used in configure or set parameter.
|
|
* This key must be used with {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_HEIGHT} together.
|
|
*
|
|
* Using restrictions:
|
|
* 1. The downsampling width and height must be configured or set together.
|
|
* If only one of them is configured, {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 2. When the downsampling width and height are the same and qualified as zero, the downsampling is disabled.
|
|
* 3. When the downsampling width and height are within the supported range, the downsampling is enabled.
|
|
* It's recommended to query the supported downsampling range through
|
|
* the interface {@link OH_AVCapability_IsVideoSizeSupported}.
|
|
* 4. When the downsampling width and height are not within the supported range,
|
|
* {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 5. Cannot be used together with crop parameters ({@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_TOP}, {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_RIGHT},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_BOTTOM}).
|
|
* If both downsampling and crop parameters are set through {@link OH_VideoEncoder_Configure} or
|
|
* {@link OH_VideoEncoder_SetParameter}, {@link AV_ERR_INVALID_VAL} will be returned.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_WIDTH;
|
|
|
|
/**
|
|
* @brief Key for describing the downsampling height in video encoder preprocess, value type is int32_t.
|
|
*
|
|
* It is used in configure or set parameter.
|
|
* This key must be used with {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_WIDTH} together.
|
|
* Refer to {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_WIDTH} for more details on usage and restrictions.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_HEIGHT;
|
|
|
|
/**
|
|
* @brief Key for describing the left-coordinate (x) of the crop rectangle in video encoder preprocess,
|
|
* value type is int32_t.
|
|
*
|
|
* The value represents the left-most column included in the crop frame, where column indices start at 0.
|
|
* The Caller must use "left, top, right, bottom" together to define the crop rectangle, corresponding to:
|
|
* - {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT}
|
|
* - {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_TOP}
|
|
* - {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_RIGHT}
|
|
* - {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_BOTTOM}
|
|
* (left, top) is the coordinate of the top-left corner of the crop rectangle.
|
|
* (right, bottom) is the coordinate of the bottom-right corner of the crop rectangle.
|
|
* The width and height of the crop rectangle can be calculated as:
|
|
* - width = right - left + 1
|
|
* - height = bottom - top + 1
|
|
*
|
|
* Using restrictions:
|
|
* 1. Crop left, top, right, bottom must be configured together. If only part of them is configured,
|
|
* {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 2. When crop left, top, right, bottom are all 0, the crop is disabled.
|
|
* 3. When the crop width, height are within the supported range, the crop is enabled.
|
|
* It's recommended to query the supported crop range through
|
|
* the interface {@link OH_AVCapability_IsVideoSizeSupported}.
|
|
* 4. When the crop values are not within the supported range,
|
|
* {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 5. Cannot be used together with downsampling parameters
|
|
* ({@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_WIDTH},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_HEIGHT}).
|
|
* If both crop and downsampling parameters are set through {@link OH_VideoEncoder_Configure} or
|
|
* {@link OH_VideoEncoder_SetParameter}, {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 6. When crop is enabled, the encoder will only encode the cropped area of the input frame.
|
|
* The content outside the crop rectangle will be discarded and not participate in encoding.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT;
|
|
|
|
/**
|
|
* @brief Key for describing the top-coordinate (y) of the crop rectangle in video encoder preprocess,
|
|
* value type is int32_t.
|
|
*
|
|
* The value represents the top-most row included in the crop frame, where row indices start at 0.
|
|
* Refer to {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT} for more details on usage and restrictions.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_TOP;
|
|
|
|
/**
|
|
* @brief Key for describing the right-coordinate (x) of the crop rectangle in video encoder preprocess,
|
|
* value type is int32_t.
|
|
*
|
|
* The value represents the right-most column included in the crop frame, where column indices start at 0.
|
|
* Refer to {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT} for more details on usage and restrictions.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_RIGHT;
|
|
|
|
/**
|
|
* @brief Key for describing the bottom-coordinate (y) of the crop rectangle in video encoder preprocess,
|
|
* value type is int32_t.
|
|
*
|
|
* The value represents the bottom-most row included in the crop frame, where row indices start at 0.
|
|
* Refer to {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT} for more details on usage and restrictions.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_BOTTOM;
|
|
|
|
/**
|
|
* @brief Key for describing the drop frame rate in video encoder preprocess, value type is double.
|
|
*
|
|
* It is used in configure or set parameter.
|
|
* The caller must ensure original frame rate is set, refer to {@link OH_MD_KEY_FRAME_RATE}.
|
|
* The value precision is retained to 2 decimal places using round half up.
|
|
*
|
|
* Using restrictions:
|
|
* 1. When value is set to 0.0, the drop frame is disabled.
|
|
* 2. When value is set to positive value and less than original frame rate,
|
|
* it will drop frames to match the set frame rate.
|
|
* 3. When value is set to negative value or equal to or greater than original frame rate,
|
|
* {@link AV_ERR_INVALID_VAL} will be returned.
|
|
* 4. Can be used together with downsampling parameters
|
|
* ({@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_WIDTH},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_DOWNSAMPLING_HEIGHT}).
|
|
* 5. Can be used together with crop parameters
|
|
* ({@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_LEFT},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_TOP},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_RIGHT},
|
|
* {@link OH_MD_KEY_VIDEO_ENCODER_PREPROC_CROP_BOTTOM}).
|
|
* 6. Processing order when combined: drop frame will be executed first, then downsampling or crop.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PREPROC_DROP_TO_FRAME_RATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of LTR frames. The value type is int32_t. The value must be
|
|
* within the supported value range.
|
|
*
|
|
* Before using this key, you can use the API {@link OH_AVCapability_GetFeatureProperties} and the enumerated value
|
|
* **VIDEO_ENCODER_LONG_TERM_REFERENCE** in {@link OH_AVCapabilityFeature} to query the number of supported LTR frames.
|
|
* This key is optional and used only in the configuration phase of video encoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_LTR_FRAME_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that specifies whether the current frame is marked as an LTR frame. The value type is
|
|
* int32_t. **1** if marked, **0** otherwise. The default value is **0**. If this parameter is set to a non-zero value,
|
|
* the value **1** is used.
|
|
*
|
|
* This key takes effect only after the number of LTR frames is configured.
|
|
*
|
|
* This key is optional and is used only for video encoding input rotation. The configuration takes effect immediately.
|
|
*
|
|
* For details, see {@link Temporally Scalable Video Coding}.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PER_FRAME_MARK_LTR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the POC number of the LTR frame referenced by the current frame. The value
|
|
* type is int32_t.
|
|
*
|
|
* This key is optional and is used only for video encoding input rotation. The configuration takes effect immediately.
|
|
*
|
|
* For details, see {@link Temporally Scalable Video Coding}.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_PER_FRAME_USE_LTR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that specifies whether the frame corresponding to the stream output from the current
|
|
* OH_AVBuffer is marked as an LTR frame. The value type is int32_t. **1** if marked, **0** otherwise. The default
|
|
* value is **0**. If this parameter is set to a non-zero value, the value **1** is used.
|
|
*
|
|
* This key is optional and is used only for video encoding output rotation.
|
|
*
|
|
* It indicates the attribute of a frame.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_PER_FRAME_IS_LTR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the POC of the frame. The value type is int32_t.
|
|
*
|
|
* This key is optional and is used only for video encoding output rotation.
|
|
*
|
|
* It indicates the attribute of a frame.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_PER_FRAME_POC;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the top coordinate (y) of the cropped rectangle. The value type is int32_t.
|
|
*
|
|
* The row at the top of the cropped rectangle is contained, and the row index starts from 0.
|
|
*
|
|
* This key is used only for video decoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_CROP_TOP;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the bottom coordinate (y) of the cropped rectangle. The value type is
|
|
* int32_t.
|
|
*
|
|
* The row at the bottom of the cropped rectangle is contained, and the row index starts from 0.
|
|
*
|
|
* This key is used only for video decoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_CROP_BOTTOM;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the left coordinate (x) of the cropped rectangle. The value type is int32_t.
|
|
*
|
|
* The leftmost column of the cropped rectangle is contained, and the column index starts from 0.
|
|
*
|
|
* This key is used only for video decoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_CROP_LEFT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the right coordinate (x) of the cropped rectangle. The value type is
|
|
* int32_t.
|
|
*
|
|
* The rightmost column of the cropped rectangle is contained, and the column index starts from 0.
|
|
*
|
|
* This key is used only for video decoding.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_CROP_RIGHT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the stride of the video frame. The value type is int32_t.
|
|
*
|
|
* Stride indicates the byte distance between the start positions of two consecutive rows in memory.
|
|
* Due to hardware alignment requirements, the stride is typically greater than or equal to the image's active width.
|
|
* When the stride equals the width, there is no horizontal padding. You should always obtain the actual stride through
|
|
* {@link OH_VideoEncoder_GetInputDescription} (for encoding),
|
|
* {@link OH_VideoDecoder_GetOutputDescription} (for decoding), or **OH_AVFormat** in
|
|
* the {@link OH_AVCodecOnStreamChanged} callback, instead of assuming a fixed value.
|
|
* For details about the example, see step 8 in [video encoding](docroot://media/avcodec/video-encoding.md#buffer-mode)
|
|
* in buffer mode or step 11 in [video decoding](docroot://media/avcodec/video-decoding.md#buffer-mode) in buffer mode.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_STRIDE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the height of the video frame. The value type is int32_t.
|
|
*
|
|
* Height indicates the total number of rows allocated in the memory for a single plane. Due to hardware alignment
|
|
* requirements, **sliceHeight** is typically greater than or equal to the image's active height.
|
|
* The offset of the start address of the U plane relative to the origin of the Y plane is **sliceHeight** x **stride**.
|
|
* You should always obtain the actual height through {@link OH_VideoEncoder_GetInputDescription} (for encoding),
|
|
* {@link OH_VideoDecoder_GetOutputDescription} (for decoding), or **OH_AVFormat** in
|
|
* the {@link OH_AVCodecOnStreamChanged} callback, instead of assuming a fixed value.
|
|
* For details about the example, see step 8 in [video encoding](docroot://media/avcodec/video-encoding.md#buffer-mode)
|
|
* in buffer mode or step 11 in [video decoding](docroot://media/avcodec/video-decoding.md#buffer-mode) in buffer mode.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_SLICE_HEIGHT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the actual active width of a decoded video frame. The value type is int32_t.
|
|
* This key is read-only and used only for video decoding.
|
|
*
|
|
* You can obtain the width from the returned **OH_AVFormat** instance when {@link OH_VideoDecoder_GetOutputDescription}
|
|
* is called or decoded output stream changes are detected through the {@link OH_AVCodecOnStreamChanged}
|
|
* callback. This value indicates the visible width after cropping, which is different from **OH_MD_KEY_WIDTH** set in
|
|
* the configuration phase. The latter is a configuration hint used for pre-allocating buffers. When cropping is
|
|
* applied, this value (rather than the stride) should be used as the actual width for displaying or saving the image.
|
|
* For details about the image layout and usage example, see step 8 in
|
|
* [video encoding](docroot://media/avcodec/video-encoding.md#buffer-mode) in buffer mode or
|
|
* step 11 in [video decoding](docroot://media/avcodec/video-decoding.md#buffer-mode) in buffer mode.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_PIC_WIDTH;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the actual active height of a decoded video frame.
|
|
* The value type is int32_t. This key is read-only and used only for video decoding.
|
|
*
|
|
* You can obtain the height from the returned **OH_AVFormat** instance when
|
|
* {@link OH_VideoDecoder_GetOutputDescription} is called or decoded output bitstream changes are detected through
|
|
* the {@link OH_AVCodecOnStreamChanged} callback. This value indicates the visible height after cropping,
|
|
* which is different from **OH_MD_KEY_HEIGHT** set in the configuration phase. The latter is a configuration hint used
|
|
* for pre-allocating buffers. When cropping is applied, this value (rather than **sliceHeight**) should be used as the
|
|
* actual height for displaying or saving the image.
|
|
* For details about the image layout and usage example, see step 8
|
|
* in [video encoding](docroot://media/avcodec/video-encoding.md#buffer-mode) in buffer mode or
|
|
* step 11 in [video decoding](docroot://media/avcodec/video-decoding.md#buffer-mode) in buffer mode.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_PIC_HEIGHT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the enabled status of low-latency video decoding. The value type is int32_t.
|
|
* **1** if enabled, **0** otherwise. The default value is **0**. If this parameter is set to a non-zero value, the
|
|
* value **1** is used.
|
|
*
|
|
* This key is optional and used only in the configuration phase.
|
|
*
|
|
* If enabled, the input and output data held by the video decoder does not exceed the amount required by the decoder
|
|
* standard.
|
|
*
|
|
* You can call {@link OH_AVCapability_IsFeatureSupported} to check whether a specific decoder supports low-latency
|
|
* decoding. If supported, the video decoder outputs frames in the decoding sequence when low-latency video codec is
|
|
* enabled.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENABLE_LOW_LATENCY;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum Quantization Parameter (QP) allowed by the video encoder. The
|
|
* value type is int32_t.
|
|
*
|
|
* Tt is used in configure/setparameter or takes effect immediately with the frame.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_QP_MAX;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the minimum QP allowed by the video encoder. The value type is int32_t.
|
|
*
|
|
* It is used in configure/setparameter or takes effect immediately with the frame.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_QP_MIN;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the average QP of video frames. The value type is int32_t.
|
|
*
|
|
* Pointer to the key that describes the average QP value of the current frame encoding block.
|
|
* It is output with {@link OH_AVBuffer}.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_QP_AVERAGE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the Mean Squared Error (MSE) of video frames. The value type is double.
|
|
*
|
|
* Pointer to the key that describes the average MSE value of the current frame encoding block.
|
|
* It is output with {@link OH_AVBuffer}.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_MSE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the decoding timestamp corresponding to the audio, video, or subtitle
|
|
* sample carried in AVBuffer, in microseconds. The value type is int64_t.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_DECODING_TIMESTAMP;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the duration corresponding to the audio, video, or subtitle sample carried
|
|
* in AVBuffer, in microseconds. The value type is int64_t.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_BUFFER_DURATION;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the aspect ratio of the sample. The value type is double.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_SAR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the start time of the first frame in a media file, measured in microseconds.
|
|
* The value type is int64_t.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_START_TIME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the start time of the track, measured in microseconds. The value type is
|
|
* int64_t.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_TRACK_START_TIME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the output color space of the video decoder. The value type is int32_t.
|
|
*
|
|
* The supported value is **OH_COLORSPACE_BT709_LIMIT**. For details, see {@link OH_NativeBuffer_ColorSpace}.
|
|
*
|
|
* It is used in {@link OH_VideoDecoder_Configure}.
|
|
*
|
|
* Before calling {@link OH_VideoDecoder_Start}, you must call {@link OH_VideoDecoder_Prepare}.
|
|
*
|
|
* If Color Space Conversion (CSC) is supported and this key is configured, the video decoder automatically transcodes
|
|
* the HDR Vivid video to the specified color space.
|
|
*
|
|
* If CSC is not supported, the error code **AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION** in {@link OH_AVErrCode}
|
|
* is returned when {@link OH_VideoDecoder_Configure} is called. If the input video is not an HDR Vivid video,
|
|
* the callback function {@link OH_AVCodecOnError} is invoked to report the error code
|
|
* **AV_ERR_VIDEO_UNSUPPORTED_COLOR_SPACE_CONVERSION** in {@link OH_AVErrCode}.
|
|
*
|
|
* @since 12
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_OUTPUT_COLOR_SPACE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that specifies whether the decoder enables the video variable frame rate feature. The
|
|
* value type is int32_t.
|
|
* **1** if enabled, **0** otherwise.
|
|
*
|
|
* @since 15
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_OUTPUT_ENABLE_VRR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the media file creation time. The value type is char *. The value must be
|
|
* in the UTC time format complying with ISO 8601. Time format example: 2024-12-28T00:00:00:000000Z
|
|
*
|
|
* @since 14
|
|
*/
|
|
extern const char *OH_MD_KEY_CREATION_TIME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the duration (in milliseconds) for which the last frame will be resubmitted
|
|
* repeatedly, if no new frame is available after the previous frame is submitted to the encoder. The value type is
|
|
* int32_t.
|
|
*
|
|
* This key is used only in the configuration phase of video encoding in surface mode.
|
|
*
|
|
* Configured value:
|
|
*
|
|
* - If the value is less than or equal to 0, the request is intercepted in the configuration phase and {@link ERROR
|
|
* AV_ERR_INVALID_VAL} is returned.
|
|
*
|
|
* - If the value is greater than 0, the last frame will be resubmitted repeatedly in the specified duration, measured
|
|
* in milliseconds.
|
|
*
|
|
* @since 18
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_FRAME_AFTER;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of times the encoder can repeat encoding the previous
|
|
* frame when no new frame is available. The value type is int32_t.
|
|
*
|
|
* This key takes effect only when **OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_FRAME_AFTER** is available and is used
|
|
* only in the configuration phase.
|
|
*
|
|
* Configured value.
|
|
*
|
|
* - If the value is equal to 0, the request is intercepted in the configuration phase and **ERROR AV_ERR_INVALID_VAL**
|
|
* is returned.
|
|
*
|
|
* - If the value is less than 0 and no new frame is available, the encoder repeatedly encodes the previous frame until
|
|
* the upper limit of the system is reached.
|
|
*
|
|
* - If the value is greater than 0 and no new frame is available, the encoder repeatedly encodes the previous frame
|
|
* until the maximum number specified is reached.
|
|
*
|
|
* @since 18
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_PREVIOUS_MAX_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the enabled status of B-frame encoding. The value type is int32_t (**0** or
|
|
* **1**). **1** if enabled, **0** otherwise. This key is optional and used only for video encoding. The default value
|
|
* is **0**.
|
|
*
|
|
* If enabled, the video encoder uses B-frames, resulting in a different decoding order from the display order.
|
|
*
|
|
* If the platform does not support this feature, the configuration of this key does not take effect.
|
|
*
|
|
* To check whether the platform supports B-frame encoding, use the {@link OH_AVCapability_IsFeatureSupported} API and
|
|
* the enumerated value {@link OH_AVCapabilityFeature} VIDEO_ENCODER_B_FRAME.
|
|
*
|
|
* This key is used only in the configuration phase.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_ENABLE_B_FRAME;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of consecutive B-frames supported by the video encoder.
|
|
* The value type is int32_t. Note: This key is used only to query the encoder capability.
|
|
*
|
|
* The usage specifications are as follows:
|
|
*
|
|
* 1. To check whether the platform supports B-frame encoding, use the {@link OH_AVCapability_IsFeatureSupported} API
|
|
* and the enumerated value {@link OH_AVCapabilityFeature} VIDEO_ENCODER_B_FRAME.
|
|
*
|
|
* 2. Obtain the OH_AVFormat pointer through the {@link OH_AVCapability_GetFeatureProperties} API and
|
|
* the enumerated value {@link OH_AVCapabilityFeature} VIDEO_ENCODER_B_FRAME.
|
|
*
|
|
* 3. Obtain the maximum number of B-frames through the {@link OH_AVFormat_GetIntValue} API and this key.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_MAX_B_FRAMES;
|
|
|
|
/**
|
|
* @brief Key to set the region of interest(ROI) parameters. Value type is string in the format
|
|
* "Top1,Left1-Bottom1,Right1[=Params1];Top2,Left2-Bottom2,Right2[=Params2];".
|
|
*
|
|
* Each "Top,Left-Bottom,Right" represents the coordinate information of one ROI.
|
|
* The "[=Params]" is optional.
|
|
* The format of "[=Params]" varies by version:
|
|
* 1. Prior to version 26.0.0: Only a single int32_t value representing the
|
|
* quantization parameter offset is supported (e.g., "=Offset").
|
|
* 2. Since version 26.0.0: A Key-Value format is additionally supported and recommended.
|
|
* It uses comma-separated key-value pairs (e.g., "=dqp:-6,slb:1").
|
|
* Supported keys:
|
|
* - "dqp": Quantization parameter offset.
|
|
* - "slb": Semantic label. The value must correspond to {@link OH_VideoMetadataRoiSemanticLabel}.
|
|
*
|
|
* If "=Params" is omitted entirely, like "Top1,Left1-Bottom1,Right1;Top2,Left2-Bottom2,Right2=dqp:-6;",
|
|
* the encoder will use the default parameters to perform the ROI encoding on the first ROI and
|
|
* use the specified parameters on the second ROI.
|
|
* Note that the number of ROIs that can be applied simultaneously does not exceed six, and the total area must
|
|
* not exceed one-fifth of the total image area.
|
|
*
|
|
* This is an optional key that applies only to video encoder.
|
|
* It is used in running process and is set with each frame.
|
|
* In surface mode, it is used in {@link OH_VideoEncoder_OnNeedInputParameter}.
|
|
* In buffer mode, it is configured via {@link OH_AVBuffer_SetParameter}.
|
|
*
|
|
* @note Since version 26.0.0, it is highly recommended to use {@link OH_VideoMetadata_AppendRoiString} to format
|
|
* and append ROI configurations safely instead of concatenating the string manually.
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_ROI_PARAMS;
|
|
|
|
/**
|
|
*
|
|
* @brief Pointer to the key that specifies whether the moov metadata should be at the front of a media file. The value
|
|
* type is int32_t. The value **1** indicates that the moov metadata should be at the front of a media file, and **0**
|
|
* indicates that the moov metadata should not be at the front of a media file. The default value is **0**.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_ENABLE_MOOV_FRONT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the quality parameter in SQR mode. The value range is [0, 51] (same as the
|
|
* QP value in encoding). A smaller value indicates a higher output bit rate and better quality.
|
|
*
|
|
* It is used in the configuration or parameter setting phase.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_SQR_FACTOR;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum bit rate in SQR mode. The value range can be obtained by
|
|
* calling {@link OH_AVCapability_GetEncoderBitrateRange} and is the same as that of **OH_MD_KEY_BITRATE**. The unit is
|
|
* bit/s. The value type is int64_t.
|
|
*
|
|
* It is used in the configuration or parameter setting phase.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_MAX_BITRATE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the reference relationship between media file tracks. The value type is
|
|
* int32_t*.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_REFERENCE_TRACK_IDS;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the auxiliary track type of a media file. The value type is char *.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_TRACK_REFERENCE_TYPE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the auxiliary track description of a media file. The value type is char *.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_TRACK_DESCRIPTION;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the enabled status of the PTS-based bit rate control mode. The value type
|
|
* is int32_t. **1** if enabled, **0** otherwise. The default value is **0**. If this parameter is set to a non-zero
|
|
* value, the value **1** is used.
|
|
*
|
|
* This key is optional and is used only for video encoding.
|
|
*
|
|
* If this feature is enabled, each video frame must contain PTS information and be sent to the encoder. In surface
|
|
* mode, the PTS is set by calling {@link OH_NativeWindow_NativeWindowHandleOpt}, in units of nanosecond (ns).
|
|
* In buffer mode, the PTS is set by calling {@link OH_AVBuffer_SetBufferAttr}, in units of microsecond (us).
|
|
*
|
|
* It is used in the configuration phase.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_ENABLE_PTS_BASED_RATECONTROL;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the enabled status of audio/video codec synchronization. The value type is
|
|
* int32_t. **1** if enabled, **0** otherwise. The default value is **0**. If this parameter is set to a non-zero value,
|
|
* the value **1** is used. This key is optional.
|
|
*
|
|
* If this feature is enabled, pay attention to the following:
|
|
* 1. The codec cannot have a callback function.
|
|
* 2. You must use the buffer query API instead of the callback function.
|
|
* 3. The key can be used only in the configuration phase.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_ENABLE_SYNC_MODE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that specifies whether to output blank frames when the video decoder is disabled. The
|
|
* value type is int32_t. **1** to output, **0** otherwise. The default value is **0**. If this parameter is set to a
|
|
* non-zero value, the value **1** is used. This key is optional and is used only for video decoding in surface mode.
|
|
*
|
|
* After this function is enabled, the video decoder outputs a blank frame (usually black) when the
|
|
* {@link OH_VideoDecoder_Stop} or {@link OH_VideoDecoder_Destroy} API is called.
|
|
* This mechanism prevents frozen frames caused by sudden termination of the decoder.
|
|
*
|
|
* @since 20
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_BLANK_FRAME_ON_SHUTDOWN;
|
|
|
|
/**
|
|
* @brief Pointer to the key that is used to query the native buffer pixel format in video encoding and decoding. The
|
|
* value type is int32_t.
|
|
*
|
|
* For details, see the pixel formats defined in {@link OH_NativeBuffer_Format}. This key is used in the following
|
|
* scenarios:
|
|
*
|
|
* 1. Video decoding: Call {@link OH_VideoDecoder_GetOutputDescription} or {@link OH_AVCodecOnStreamChanged} to obtain
|
|
* the current output format from the returned OH_AVFormat object.
|
|
*
|
|
* 2. Video encoding: Call {@link OH_VideoEncoder_GetInputDescription} to obtain the current input format from the
|
|
* returned OH_AVFormat object.
|
|
*
|
|
* @since 22
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_NATIVE_BUFFER_FORMAT;
|
|
|
|
/**
|
|
* @brief Pointer to the key carried in the OH_AVBuffer used to skip part of the decoded audio data. It is measured in
|
|
* sample points, with a value type of uint8_t*. This key is supported when using MP3, Vorbis, or OPUS decoders.
|
|
*
|
|
* It is carried only by the first and last frames of an audio stream and is optional. Method 1: Obtain the information
|
|
* during demultiplexing and set it to the input OH_AVBuffer used for decoding.
|
|
*
|
|
* 1. Obtain the OH_AVBuffer used for decoding from the callback function {@link OH_AVCodecOnNeedInputBuffer} of
|
|
* {@link OH_AVCodecCallback}.
|
|
*
|
|
* 2. Call {@link OH_AVDemuxer_ReadSampleBuffer} to read audio data. This function automatically sets **
|
|
* OH_MD_KEY_BUFFER_SKIP_SAMPLES_INFO** when needed.
|
|
*
|
|
* 3. Call {@link OH_AudioCodec_PushInputBuffer} to push the input OH_AVBuffer for decoding.
|
|
*
|
|
* Method 2: Construct the data required by the key and set it to the input OH_AVBuffer used for decoding.
|
|
*
|
|
* Create a 10-byte uint8_t[] array with the structure as follows:
|
|
*
|
|
* 1. Bytes 0-3 (uint32_t, little-endian): number of samples to skip from the beginning of this frame.
|
|
*
|
|
* 2. Bytes 4-7 (uint32_t, little-endian): number of samples to skip from the end of this frame (must not exceed the
|
|
* frame's total sample count).
|
|
*
|
|
* 3. Bytes 8-9: reserved; set to **0**.
|
|
*
|
|
* @since 23
|
|
*/
|
|
extern const char *OH_MD_KEY_BUFFER_SKIP_SAMPLES_INFO;
|
|
|
|
/**
|
|
* @brief Pointer to the key for enabling {@link OH_MD_KEY_BUFFER_SKIP_SAMPLES_INFO} in the audio decoder.
|
|
* The value type is int32_t. **1** to enable, **0** otherwise. The default value is **0**.
|
|
* If this parameter is set to a value other than **1**, the value **0** is used.
|
|
*
|
|
* This key is optional. It is for the audio decoder only.
|
|
*
|
|
* @since 24
|
|
*/
|
|
extern const char *OH_MD_KEY_ENABLE_BUFFER_SKIP_SAMPLES;
|
|
|
|
/**
|
|
* @brief Key for latitude, value type is float, The range is [-90.0, 90.0].
|
|
*
|
|
* Represents the latitude of the geographic location.
|
|
*
|
|
* @since 24
|
|
*/
|
|
extern const char *OH_MD_KEY_LATITUDE;
|
|
|
|
/**
|
|
* @brief Longitude key. The value is of the float type, and the value range is [-180.0, 180.0]. It indicates the
|
|
* longitude in geographic location information.
|
|
*
|
|
* @since 24
|
|
*/
|
|
extern const char *OH_MD_KEY_LONGITUDE;
|
|
|
|
/**
|
|
* @brief Altitude key. The value is of the float type. This key is optional. It indicates the altitude in geographic
|
|
* location information.
|
|
*
|
|
* @since 24
|
|
*/
|
|
extern const char *OH_MD_KEY_ALTITUDE;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the number of pending frames in the video encoder.
|
|
* The value type is int32_t.
|
|
*
|
|
* This key is read-only and used to query the current number of frames that are pending for encoding.
|
|
* It can be obtained through {@link OH_VideoEncoder_GetInputDescription}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_NUMBER_OF_PENDING_FRAMES;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the decoder output mode. The value type is int32_t (0 or 1).
|
|
* 1 indicates outputting frames in decoding order, and 0 indicates outputting frames in display order (default).
|
|
*
|
|
* This is an optional key that applies only to video decoder and is used only in the Configure phase.
|
|
* The default value is 0, which means the decoder outputs frames in display order.
|
|
* Before setting this key, you can use {@link OH_AVCapability_IsFeatureSupported} and the enumerated value
|
|
* **VIDEO_DECODER_OUTPUT_IN_DECODING_ORDER** in {@link OH_AVCapabilityFeature} to check
|
|
* whether this feature is supported.
|
|
* If the video decoder does not support this feature, setting this key through {@link OH_VideoDecoder_Configure} return
|
|
* {@link AV_ERR_INVALID_VAL}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_OUTPUT_IN_DECODING_ORDER;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes the maximum number of frames that the video encoder is allowed to hold
|
|
* before outputting a compressed frame. The value type is int32_t, and the value range is [1, 5].
|
|
*
|
|
* This is an optional key that applies only to video encoder and is used only in the Configure phase.
|
|
* If the value is within [1, 5], it takes effect normally.
|
|
* If the value is out of range (<1 or >5), {@link OH_VideoEncoder_Configure} returns {@link AV_ERR_INVALID_VAL}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_MAX_FRAME_DELAY_COUNT;
|
|
|
|
/**
|
|
* @brief Pointer to the key that describes whether to repeat headers before sync frames. The value type is
|
|
* int32_t (0 or 1): 1 is enabled, 0 disabled.
|
|
*
|
|
* This is an optional key that applies only to video encoder and is used only in the Configure phase.
|
|
* The default value is 0, which means this feature is disabled by default.
|
|
* When enabled, the encoder inserts codec-specific configuration data (such as SPS/PPS for H.264/H.265) before each
|
|
* sync frame.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_ENCODER_REPEAT_HEADER_BEFORE_SYNC_FRAMES;
|
|
|
|
/**
|
|
* @brief Key for setting the Audio Vivid signal input format.
|
|
*
|
|
* Required for Audio Vivid encoder. Specifies the signal format of input data.
|
|
* The value should be from {@link OH_AudioVividSignalFormat}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_VIVID_SIGNAL_FORMAT;
|
|
|
|
/**
|
|
* @brief Key for setting the soundbed channel layout.
|
|
*
|
|
* Configures the channel layout for soundbed. The value should be from {@link OH_AudioChannelLayout}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_SOUNDBED_LAYOUT;
|
|
|
|
/**
|
|
* @brief Key for setting the soundbed bitrate in bits per second.
|
|
*
|
|
* Configures the bitrate for soundbed channels. The actual bitrate may be adjusted by the encoder
|
|
* based on codec capabilities and constraints.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_SOUNDBED_BITRATE;
|
|
|
|
/**
|
|
* @brief Key for setting the audio object bitrate in bits per second.
|
|
*
|
|
* Configures the bitrate for audio objects. The actual bitrate may be adjusted by the encoder
|
|
* based on codec capabilities and constraints.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_OBJECT_BITRATE;
|
|
|
|
/**
|
|
* @brief Key for setting the video decoding frame retention mode. The value type is int32_t.
|
|
*
|
|
* The value represents a frame retention mode defined in {@link OH_FrameRetentionMode}.
|
|
* Please refer to the enumeration definition for detailed descriptions of each mode
|
|
* and their behaviors.This key can be configured via the {@link OH_VideoDecoder_Configure} and
|
|
* {@link OH_VideoDecoder_SetParameter} interfaces.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_FRAME_RETENTION_MODE;
|
|
|
|
/**
|
|
* @brief Key for setting the video decoding frame retention ratio. The value type is double.
|
|
*
|
|
* This parameter takes effect when {@link OH_MD_KEY_VIDEO_DECODER_FRAME_RETENTION_MODE} is set to
|
|
* {@link OH_FrameRetentionMode#OH_FRAME_RETENTION_MODE_UNIFORM}, or when the retention mode is not
|
|
* configured (implicitly defaulting to uniform behavior). This configuration is ignored ONLY when
|
|
* the retention mode is explicitly set to {@link OH_FrameRetentionMode#OH_FRAME_RETENTION_MODE_ADAPTIVE}
|
|
* or {@link OH_FrameRetentionMode#OH_FRAME_RETENTION_MODE_FULL}.
|
|
* The valid range is [0.01, 1.0] (where 1.0 means all frames retained and 0.01 is the minimum limit);
|
|
* any value outside this range is considered invalid and will be ignored. This key can be configured
|
|
* via the {@link OH_VideoDecoder_Configure} and {@link OH_VideoDecoder_SetParameter} interfaces.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_FRAME_RETENTION_RATIO;
|
|
|
|
/**
|
|
* @brief Key for configuring the video decoder playback speed. The value type is double.
|
|
*
|
|
* This key specifies the target playback speed of the video. It is primarily recommended
|
|
* for use in conjunction with {@link OH_FrameRetentionMode#OH_FRAME_RETENTION_MODE_ADAPTIVE}
|
|
* to assist the adaptive algorithm in accurately evaluating the perceptual impact of frame
|
|
* drops. The value must be strictly greater than 0.0, with recommended standard values
|
|
* including 0.5, 0.75, 1.0 (normal speed), 1.25, 1.5, 2.0, and 3.0; any value less than
|
|
* or equal to 0.0 is considered invalid. This key can be configured via the
|
|
* {@link OH_VideoDecoder_Configure} and {@link OH_VideoDecoder_SetParameter} interfaces.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_VIDEO_DECODER_SPEED;
|
|
|
|
/**
|
|
* @brief Key for setting or querying the maximum input buffer size (in bytes) for audio codec, value type is int32_t.
|
|
*
|
|
* This key is used to configure or retrieve the maximum size of the input buffer for audio codec.
|
|
* The actual buffer size is limited by the codec implementation. Setting a value larger than the
|
|
* codec's maximum supported size can not take effect.
|
|
* This configuration is optional. If not set, the codec will use its default buffer size.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_MAX_INPUT_BUFFER_SIZE;
|
|
|
|
/**
|
|
* @brief Key for configuring the PTS output mode of the audio encoder.
|
|
*
|
|
* Sets the PTS output behavior mode. The value type is int32_t from {@link OH_AudioEncoderPTSMode}.
|
|
* Optional. Defaults to {@link OH_AUDIO_ENCODER_PTS_MODE_DEFAULT} if not set.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_ENCODER_PTS_MODE;
|
|
|
|
/**
|
|
* @brief Key for enabling sample format conversion in the audio encoder.
|
|
* Optional. The value type is int32_t (0 or 1). 1 is enabled, 0 is disabled. Defaults to 0.
|
|
*
|
|
* The audio encoder supports only a limited number of sample formats. After this configuration is enabled, if
|
|
* an unsupported sampling format is used, the audio encoder will convert the sample format to an supported one for
|
|
* encoding. The supported sample formats before conversion are as follows: {@link SAMPLE_U8}, {@link SAMPLE_S16LE},
|
|
* {@link SAMPLE_S24LE}, {@link SAMPLE_S32LE}, {@link SAMPLE_F32LE}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
extern const char *OH_MD_KEY_AUDIO_ENCODER_ENABLE_SAMPLE_FORMAT_CONVERT;
|
|
|
|
/**
|
|
* @brief Enumerates the media types.
|
|
*
|
|
* @since 9
|
|
*/
|
|
typedef enum OH_MediaType {
|
|
/**
|
|
* Audio track.
|
|
* @since 9
|
|
*/
|
|
MEDIA_TYPE_AUD = 0,
|
|
|
|
/**
|
|
* Video track.
|
|
* @since 9
|
|
*/
|
|
MEDIA_TYPE_VID = 1,
|
|
|
|
/**
|
|
* Subtitle track.
|
|
* @since 12
|
|
*/
|
|
MEDIA_TYPE_SUBTITLE = 2,
|
|
|
|
/**
|
|
* Timed metadata track.
|
|
* @since 20
|
|
*/
|
|
MEDIA_TYPE_TIMED_METADATA = 5,
|
|
|
|
/**
|
|
* Auxiliary track.
|
|
* @since 20
|
|
*/
|
|
MEDIA_TYPE_AUXILIARY = 6
|
|
} OH_MediaType;
|
|
|
|
/**
|
|
* @brief Enumerates the AAC profiles.
|
|
*
|
|
* @since 9
|
|
*/
|
|
typedef enum OH_AACProfile {
|
|
/**
|
|
* AAC profile of the low complexity level.
|
|
* @since 9
|
|
*/
|
|
AAC_PROFILE_LC = 0,
|
|
|
|
/**
|
|
* AAC profile of the high efficiency level. Audio object types AAC LC and SBR are included.
|
|
* @since 14
|
|
*/
|
|
AAC_PROFILE_HE = 3,
|
|
/**
|
|
* AAC profile of the high efficiency V2 level. Audio object types AAC LC, SBR, and PS are included.
|
|
* @since 14
|
|
*/
|
|
AAC_PROFILE_HE_V2 = 4
|
|
} OH_AACProfile;
|
|
|
|
/**
|
|
* @brief Enumerates the AVC profiles.
|
|
*
|
|
* @since 9
|
|
*/
|
|
typedef enum OH_AVCProfile {
|
|
/**
|
|
* AVC baseline profile.
|
|
* @since 9
|
|
*/
|
|
AVC_PROFILE_BASELINE = 0,
|
|
|
|
/**
|
|
* AVC high profile.
|
|
* @since 9
|
|
*/
|
|
AVC_PROFILE_HIGH = 4,
|
|
|
|
/**
|
|
* AVC main profile.
|
|
* @since 9
|
|
*/
|
|
AVC_PROFILE_MAIN = 8
|
|
} OH_AVCProfile;
|
|
|
|
/**
|
|
* @brief Enumerates the HEVC profiles.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_HEVCProfile {
|
|
/**
|
|
* HEVC profile of the main level.
|
|
* @since 10
|
|
*/
|
|
HEVC_PROFILE_MAIN = 0,
|
|
|
|
/**
|
|
* HEVC profile of the 10-bit main level.
|
|
* @since 10
|
|
*/
|
|
HEVC_PROFILE_MAIN_10 = 1,
|
|
|
|
/**
|
|
* HEVC profile of the main still picture level.
|
|
* @since 10
|
|
*/
|
|
HEVC_PROFILE_MAIN_STILL = 2,
|
|
|
|
/**
|
|
* HEVC profile of the main 10 HDR10 level.
|
|
* @deprecated since 14
|
|
* @since 10
|
|
*/
|
|
HEVC_PROFILE_MAIN_10_HDR10 = 3,
|
|
/**
|
|
* HEVC profile of the main 10 HDR10+ level.
|
|
* @deprecated since 14
|
|
* @since 10
|
|
*/
|
|
HEVC_PROFILE_MAIN_10_HDR10_PLUS = 4
|
|
} OH_HEVCProfile;
|
|
|
|
/**
|
|
* @brief Enumerates the VVC profiles.
|
|
*
|
|
* @since 15
|
|
*/
|
|
typedef enum OH_VVCProfile {
|
|
/**
|
|
* VVC profile of the 10-bit main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_10 = 1,
|
|
/**
|
|
* VVC profile of the 12-bit main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12 = 2,
|
|
/**
|
|
* VVC profile of the 12-bit intra main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12_INTRA = 10,
|
|
/**
|
|
* VVC profile of the 10-bit main level for multi-layer encoding.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MULTI_MAIN_10 = 17,
|
|
/**
|
|
* VVC profile of the 10-bit full-sample main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_10_444 = 33,
|
|
/**
|
|
* VVC profile of the 12-bit full-sample main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12_444 = 34,
|
|
/**
|
|
* VVC profile of the 16-bit full-sample main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_16_444 = 36,
|
|
/**
|
|
* VVC profile of the 12-bit full-sample intra main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12_444_INTRA = 42,
|
|
/**
|
|
* VVC profile of the 16-bit full-sample intra main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_16_444_INTRA = 44,
|
|
/**
|
|
* VVC profile of the 10-bit full-sample main level for multi-layer encoding.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MULTI_MAIN_10_444 = 49,
|
|
/**
|
|
* VVC profile of the 10-bit still picture main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_10_STILL = 65,
|
|
/**
|
|
* VVC profile of the 12-bit still picture main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12_STILL = 66,
|
|
/**
|
|
* VVC profile of the 10-bit full-sample still picture main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_10_444_STILL = 97,
|
|
/**
|
|
* VVC profile of the 12-bit full-sample still picture main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_12_444_STILL = 98,
|
|
/**
|
|
* VVC profile of the 16-bit full-sample still picture main level.
|
|
* @since 15
|
|
*/
|
|
VVC_PROFILE_MAIN_16_444_STILL = 100
|
|
} OH_VVCProfile;
|
|
|
|
/**
|
|
* @brief Enumerates the MPEG2 profiles.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_MPEG2Profile {
|
|
/**
|
|
* Simple profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_SIMPLE = 0,
|
|
/**
|
|
* Main profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_MAIN = 1,
|
|
/**
|
|
* Signal-to-Noise Ratio (SNR) scalable profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_SNR_SCALABLE = 2,
|
|
/**
|
|
* Spatial scalable profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_SPATIALLY_SCALABLE = 3,
|
|
/**
|
|
* High profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_HIGH = 4,
|
|
/**
|
|
* 4:2:2 profile.
|
|
* @since 17
|
|
*/
|
|
MPEG2_PROFILE_422 = 5
|
|
} OH_MPEG2Profile;
|
|
|
|
/**
|
|
* @brief Enumerates the MPEG4 profiles.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_MPEG4Profile {
|
|
/**
|
|
* Simple profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_SIMPLE = 0,
|
|
/**
|
|
* Simple scalable profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_SIMPLE_SCALABLE = 1,
|
|
/**
|
|
* Core profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_CORE = 2,
|
|
/**
|
|
* Main profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_MAIN = 3,
|
|
/**
|
|
* N-bit profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_N_BIT = 4,
|
|
/**
|
|
* Hybrid profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_HYBRID = 5,
|
|
/**
|
|
* Basic animated texture profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_BASIC_ANIMATED_TEXTURE = 6,
|
|
/**
|
|
* Scalable texture profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_SCALABLE_TEXTURE = 7,
|
|
/**
|
|
* Simple FA profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_SIMPLE_FA = 8,
|
|
/**
|
|
* Advanced real-time simple profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_ADVANCED_REAL_TIME_SIMPLE = 9,
|
|
/**
|
|
* Core scalable profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_CORE_SCALABLE = 10,
|
|
/**
|
|
* Advanced coding efficiency profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_ADVANCED_CODING_EFFICIENCY = 11,
|
|
/**
|
|
* Advanced core profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_ADVANCED_CORE = 12,
|
|
/**
|
|
* Advanced scalable texture profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_ADVANCED_SCALABLE_TEXTURE = 13,
|
|
/**
|
|
* Advanced simple profile.
|
|
* @since 17
|
|
*/
|
|
MPEG4_PROFILE_ADVANCED_SIMPLE = 17
|
|
} OH_MPEG4Profile;
|
|
|
|
/**
|
|
* @brief Enumerates the H.263 profiles.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_H263Profile {
|
|
/**
|
|
* Baseline profile.
|
|
* @since 17
|
|
*/
|
|
H263_PROFILE_BASELINE = 0,
|
|
/**
|
|
* Version 1 backward compatibility.
|
|
* @since 17
|
|
*/
|
|
H263_PROFILE_VERSION_1_BACKWARD_COMPATIBILITY = 2
|
|
} OH_H263Profile;
|
|
|
|
/**
|
|
* @brief Enumerates the VC-1 profiles.
|
|
*
|
|
* @since 22
|
|
*/
|
|
typedef enum OH_VC1Profile {
|
|
/**
|
|
* Simple profile.
|
|
* @since 22
|
|
*/
|
|
VC1_PROFILE_SIMPLE = 0,
|
|
/**
|
|
* Main profile.
|
|
* @since 22
|
|
*/
|
|
VC1_PROFILE_MAIN = 1,
|
|
/**
|
|
* High profile.
|
|
* @since 22
|
|
*/
|
|
VC1_PROFILE_ADVANCED = 2
|
|
} OH_VC1Profile;
|
|
|
|
/**
|
|
* @brief AV1 profile.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_AV1Profile {
|
|
/**
|
|
* Main profile.
|
|
* @since 23
|
|
*/
|
|
AV1_PROFILE_MAIN = 0,
|
|
/**
|
|
* High profile.
|
|
* @since 23
|
|
*/
|
|
AV1_PROFILE_HIGH = 1,
|
|
/**
|
|
* Professional profile.
|
|
* @since 23
|
|
*/
|
|
AV1_PROFILE_PROFESSIONAL = 2
|
|
} OH_AV1Profile;
|
|
|
|
/**
|
|
* @brief VP9 profile.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_VP9Profile {
|
|
/**
|
|
* Profile 0.
|
|
* @since 23
|
|
*/
|
|
VP9_PROFILE_0 = 0,
|
|
/**
|
|
* Profile 1.
|
|
* @since 23
|
|
*/
|
|
VP9_PROFILE_1 = 1,
|
|
/**
|
|
* Profile 2.
|
|
* @since 23
|
|
*/
|
|
VP9_PROFILE_2 = 2,
|
|
/**
|
|
* Profile 3.
|
|
* @since 23
|
|
*/
|
|
VP9_PROFILE_3 = 3
|
|
} OH_VP9Profile;
|
|
|
|
/**
|
|
* @brief WVC1 profile.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_WVC1Profile {
|
|
/**
|
|
* High profile.
|
|
* @since 23
|
|
*/
|
|
WVC1_PROFILE_ADVANCED = 0
|
|
} OH_WVC1Profile;
|
|
|
|
/**
|
|
* @brief Enumerates the WMV3 profiles.
|
|
*
|
|
* @since 22
|
|
*/
|
|
typedef enum OH_WMV3Profile {
|
|
/**
|
|
* Simple profile.
|
|
* @since 22
|
|
*/
|
|
WMV3_PROFILE_SIMPLE = 0,
|
|
/**
|
|
* Main profile.
|
|
* @since 22
|
|
*/
|
|
WMV3_PROFILE_MAIN = 1
|
|
} OH_WMV3Profile;
|
|
|
|
/**
|
|
* @brief Enumerates the output file formats supported by a muxer.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_AVOutputFormat {
|
|
/**
|
|
* @brief Default format, which is MP4.
|
|
*
|
|
* @since 10
|
|
*/
|
|
AV_OUTPUT_FORMAT_DEFAULT = 0,
|
|
/**
|
|
* @brief The muxer output MP4 file format.
|
|
*
|
|
* @since 10
|
|
*/
|
|
AV_OUTPUT_FORMAT_MPEG_4 = 2,
|
|
/**
|
|
* @brief The muxer output M4A file format.
|
|
*
|
|
* @since 10
|
|
*/
|
|
AV_OUTPUT_FORMAT_M4A = 6,
|
|
/**
|
|
* @brief The muxer output amr file format.
|
|
*
|
|
* @since 12
|
|
*/
|
|
AV_OUTPUT_FORMAT_AMR = 8,
|
|
/**
|
|
* @brief The muxer output mp3 file format.
|
|
*
|
|
* @since 12
|
|
*/
|
|
AV_OUTPUT_FORMAT_MP3 = 9,
|
|
/**
|
|
* @brief The muxer output wav file format.
|
|
*
|
|
* @since 12
|
|
*/
|
|
AV_OUTPUT_FORMAT_WAV = 10,
|
|
/**
|
|
* @brief The muxer output aac file format.
|
|
*
|
|
* @since 18
|
|
*/
|
|
AV_OUTPUT_FORMAT_AAC = 11,
|
|
/**
|
|
* @brief The muxer output flac file format.
|
|
*
|
|
* @since 20
|
|
*/
|
|
AV_OUTPUT_FORMAT_FLAC = 12,
|
|
/**
|
|
* @brief The muxer output ogg file format.
|
|
*
|
|
* @since 23
|
|
*/
|
|
AV_OUTPUT_FORMAT_OGG = 13,
|
|
/**
|
|
* @brief The muxer output flv file format.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
AV_OUTPUT_FORMAT_FLV = 14
|
|
} OH_AVOutputFormat;
|
|
|
|
/**
|
|
* @brief Enumerates the seek modes.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_AVSeekMode {
|
|
/**
|
|
* @brief Seeks to the next I-frame at the specified position. If there is no I-frame after the specified position,
|
|
* the seek operation may fail.
|
|
*
|
|
* @since 10
|
|
*/
|
|
SEEK_MODE_NEXT_SYNC = 0,
|
|
/**
|
|
* @brief Seeks to the previous I-frame at the specified position.
|
|
*
|
|
* @since 10
|
|
*/
|
|
SEEK_MODE_PREVIOUS_SYNC,
|
|
/**
|
|
* @brief Seeks to the closest I-frame at the specified position.
|
|
*
|
|
* @since 10
|
|
*/
|
|
SEEK_MODE_CLOSEST_SYNC
|
|
} OH_AVSeekMode;
|
|
|
|
/**
|
|
* @brief Enumerates the scaling modes. This enum is used only in surface mode.
|
|
*
|
|
* @deprecated since 14
|
|
* @useinstead OHScalingModeV2
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_ScalingMode {
|
|
/**
|
|
* @brief Scales the image based on the window size.
|
|
* @deprecated since 14
|
|
* @useinstead OH_SCALING_MODE_SCALE_TO_WINDOW_V2
|
|
* @since 10
|
|
*/
|
|
SCALING_MODE_SCALE_TO_WINDOW = 1,
|
|
/**
|
|
* @brief Crops the image based on the window size.
|
|
* @deprecated since 14
|
|
* @useinstead OH_SCALING_MODE_SCALE_CROP_V2
|
|
* @since 10
|
|
*/
|
|
SCALING_MODE_SCALE_CROP = 2
|
|
} OH_ScalingMode;
|
|
|
|
/**
|
|
* @brief Enumerates the number of audio bits for each coded sample.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_BitsPerSample {
|
|
/**
|
|
* 8-bit unsigned integer sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_U8 = 0,
|
|
/**
|
|
* 16-bit signed integer sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S16LE = 1,
|
|
/**
|
|
* 24-bit signed integer sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S24LE = 2,
|
|
/**
|
|
* 32-bit signed integer sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S32LE = 3,
|
|
/**
|
|
* 32-bit floating-point sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_F32LE = 4,
|
|
/**
|
|
* 8-bit unsigned integer plane sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_U8P = 5,
|
|
/**
|
|
* 16-bit signed integer plane sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S16P = 6,
|
|
/**
|
|
* 24-bit signed integer plane sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S24P = 7,
|
|
/**
|
|
* 32-bit signed integer plane sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_S32P = 8,
|
|
/**
|
|
* 32-bit floating-point plane sampling.
|
|
* @since 10
|
|
*/
|
|
SAMPLE_F32P = 9,
|
|
/**
|
|
* Invalid sampling format.
|
|
* @since 10
|
|
*/
|
|
INVALID_WIDTH = -1
|
|
} OH_BitsPerSample;
|
|
|
|
/**
|
|
* @brief Enumerates the primary colors. This enum is used for both encoding and decoding.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_ColorPrimary {
|
|
/**
|
|
* BT709 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_BT709 = 1,
|
|
/**
|
|
* Unspecified color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_UNSPECIFIED = 2,
|
|
/**
|
|
* BT470_M color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_BT470_M = 4,
|
|
/**
|
|
* BT601_625 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_BT601_625 = 5,
|
|
/**
|
|
* BT601_525 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_BT601_525 = 6,
|
|
/**
|
|
* SMPTE_ST240 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_SMPTE_ST240 = 7,
|
|
/**
|
|
* GENERIC_FILM color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_GENERIC_FILM = 8,
|
|
/**
|
|
* BT2020 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_BT2020 = 9,
|
|
/**
|
|
* SMPTE_ST428 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_SMPTE_ST428 = 10,
|
|
/**
|
|
* P3DCI color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_P3DCI = 11,
|
|
/**
|
|
* P3D65 color gamut.
|
|
* @since 10
|
|
*/
|
|
COLOR_PRIMARY_P3D65 = 12
|
|
} OH_ColorPrimary;
|
|
|
|
/**
|
|
* @brief Enumerates the transfer characteristics. This enum is used for both encoding and decoding.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_TransferCharacteristic {
|
|
/**
|
|
* BT709 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_BT709 = 1,
|
|
/**
|
|
* Unspecified transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_UNSPECIFIED = 2,
|
|
/**
|
|
* GAMMA_2_2 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_GAMMA_2_2 = 4,
|
|
/**
|
|
* GAMMA_2_8 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_GAMMA_2_8 = 5,
|
|
/**
|
|
* BT601 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_BT601 = 6,
|
|
/**
|
|
* SMPTE_ST240 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_SMPTE_ST240 = 7,
|
|
/**
|
|
* Linear transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_LINEAR = 8,
|
|
/**
|
|
* Log transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_LOG = 9,
|
|
/**
|
|
* LOG_SQRT transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_LOG_SQRT = 10,
|
|
/**
|
|
* IEC_61966_2_4 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_IEC_61966_2_4 = 11,
|
|
/**
|
|
* BT1361 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_BT1361 = 12,
|
|
/**
|
|
* IEC_61966_2_1 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_IEC_61966_2_1 = 13,
|
|
/**
|
|
* BT2020_10BIT transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_BT2020_10BIT = 14,
|
|
/**
|
|
* BT2020_12BIT transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_BT2020_12BIT = 15,
|
|
/**
|
|
* PQ transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_PQ = 16,
|
|
/**
|
|
* SMPTE_ST428 transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_SMPTE_ST428 = 17,
|
|
/**
|
|
* HLG transfer function.
|
|
* @since 10
|
|
*/
|
|
TRANSFER_CHARACTERISTIC_HLG = 18
|
|
} OH_TransferCharacteristic;
|
|
|
|
/**
|
|
* @brief Enumerates the matrix coefficients. This enum is used for both encoding and decoding.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_MatrixCoefficient {
|
|
/**
|
|
* Identity matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_IDENTITY = 0,
|
|
/**
|
|
* BT709 conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_BT709 = 1,
|
|
/**
|
|
* Unspecified conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_UNSPECIFIED = 2,
|
|
/**
|
|
* FCC conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_FCC = 4,
|
|
/**
|
|
* BT601_625 conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_BT601_625 = 5,
|
|
/**
|
|
* BT601_525 conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_BT601_525 = 6,
|
|
/**
|
|
* SMPTE_ST240 conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_SMPTE_ST240 = 7,
|
|
/**
|
|
* YCGCO conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_YCGCO = 8,
|
|
/**
|
|
* BT2020_NCL conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_BT2020_NCL = 9,
|
|
/**
|
|
* BT2020_CL conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_BT2020_CL = 10,
|
|
/**
|
|
* SMPTE_ST2085 conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_SMPTE_ST2085 = 11,
|
|
/**
|
|
* CHROMATICITY_NCL conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_CHROMATICITY_NCL = 12,
|
|
/**
|
|
* CHROMATICITY_CL conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_CHROMATICITY_CL = 13,
|
|
/**
|
|
* ICTCP conversion matrix.
|
|
* @since 10
|
|
*/
|
|
MATRIX_COEFFICIENT_ICTCP = 14
|
|
} OH_MatrixCoefficient;
|
|
|
|
/**
|
|
* @brief Enumerates the AVC levels.
|
|
*
|
|
* @since 12
|
|
*/
|
|
typedef enum OH_AVCLevel {
|
|
/**
|
|
* Level 1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_1 = 0,
|
|
/**
|
|
* Level 1b.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_1b = 1,
|
|
/**
|
|
* Level 1.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_11 = 2,
|
|
/**
|
|
* Level 1.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_12 = 3,
|
|
/**
|
|
* Level 1.3.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_13 = 4,
|
|
/**
|
|
* Level 2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_2 = 5,
|
|
/**
|
|
* Level 2.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_21 = 6,
|
|
/**
|
|
* Level 2.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_22 = 7,
|
|
/**
|
|
* Level 3.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_3 = 8,
|
|
/**
|
|
* Level 3.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_31 = 9,
|
|
/**
|
|
* Level 3.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_32 = 10,
|
|
/**
|
|
* Level 4.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_4 = 11,
|
|
/**
|
|
* Level 4.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_41 = 12,
|
|
/**
|
|
* Level 4.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_42 = 13,
|
|
/**
|
|
* Level 5.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_5 = 14,
|
|
/**
|
|
* Level 5.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_51 = 15,
|
|
/**
|
|
* Level 5.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_52 = 16,
|
|
/**
|
|
* Level 6.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_6 = 17,
|
|
/**
|
|
* Level 6.1.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_61 = 18,
|
|
/**
|
|
* Level 6.2.
|
|
* @since 12
|
|
*/
|
|
AVC_LEVEL_62 = 19
|
|
} OH_AVCLevel;
|
|
|
|
/**
|
|
* @brief Enumerates the HEVC levels.
|
|
*
|
|
* @since 12
|
|
*/
|
|
typedef enum OH_HEVCLevel {
|
|
/**
|
|
* Level 1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_1 = 0,
|
|
/**
|
|
* Level 2.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_2 = 1,
|
|
/**
|
|
* Level 2.1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_21 = 2,
|
|
/**
|
|
* Level 3.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_3 = 3,
|
|
/**
|
|
* Level 3.1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_31 = 4,
|
|
/**
|
|
* Level 4.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_4 = 5,
|
|
/**
|
|
* Level 4.1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_41 = 6,
|
|
/**
|
|
* Level 5.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_5 = 7,
|
|
/**
|
|
* Level 5.1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_51 = 8,
|
|
/**
|
|
* Level 5.2.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_52 = 9,
|
|
/**
|
|
* Level 6.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_6 = 10,
|
|
/**
|
|
* Level 6.1.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_61 = 11,
|
|
/**
|
|
* Level 6.2.
|
|
* @since 12
|
|
*/
|
|
HEVC_LEVEL_62 = 12
|
|
} OH_HEVCLevel;
|
|
|
|
/**
|
|
* @brief Enumerates the VVC levels.
|
|
*
|
|
* @since 15
|
|
*/
|
|
typedef enum OH_VVCLevel {
|
|
/**
|
|
* Level 1.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_1 = 16,
|
|
/**
|
|
* Level 2.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_2 = 32,
|
|
/**
|
|
* Level 2.1.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_21 = 35,
|
|
/**
|
|
* Level 3.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_3 = 48,
|
|
/**
|
|
* Level 3.1.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_31 = 51,
|
|
/**
|
|
* Level 4.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_4 = 64,
|
|
/**
|
|
* Level 4.1.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_41 = 67,
|
|
/**
|
|
* Level 5.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_5 = 80,
|
|
/**
|
|
* Level 5.1.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_51 = 83,
|
|
/**
|
|
* Level 5.2.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_52 = 86,
|
|
/**
|
|
* Level 6.0.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_6 = 96,
|
|
/**
|
|
* Level 6.1.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_61 = 99,
|
|
/**
|
|
* Level 6.2.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_62 = 102,
|
|
/**
|
|
* Level 6.3.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_63 = 105,
|
|
/**
|
|
* Level 15.5.
|
|
* @since 15
|
|
*/
|
|
VVC_LEVEL_155 = 255
|
|
} OH_VVCLevel;
|
|
|
|
/**
|
|
* @brief Enumerates the MPEG2 levels.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_MPEG2Level {
|
|
/**
|
|
* Low level.
|
|
* @since 17
|
|
*/
|
|
MPEG2_LEVEL_LOW = 0,
|
|
/**
|
|
* Main level.
|
|
* @since 17
|
|
*/
|
|
MPEG2_LEVEL_MAIN = 1,
|
|
/**
|
|
* High 1440 level.
|
|
* @since 17
|
|
*/
|
|
MPEG2_LEVEL_HIGH_1440 = 2,
|
|
/**
|
|
* High level.
|
|
* @since 17
|
|
*/
|
|
MPEG2_LEVEL_HIGH = 3
|
|
} OH_MPEG2Level;
|
|
|
|
/**
|
|
* @brief Enumerates the MPEG4 levels.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_MPEG4Level {
|
|
/**
|
|
* Level 0.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_0 = 0,
|
|
/**
|
|
* Level 0B.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_0B = 1,
|
|
/**
|
|
* Level 1.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_1 = 2,
|
|
/**
|
|
* Level 2.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_2 = 3,
|
|
/**
|
|
* Level 3.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_3 = 4,
|
|
/**
|
|
* Level 3B.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_3B = 5,
|
|
/**
|
|
* Level 4.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_4 = 6,
|
|
/**
|
|
* Level 4A.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_4A = 7,
|
|
/**
|
|
* Level 5.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_5 = 8,
|
|
/**
|
|
* Level 6.
|
|
* @since 17
|
|
*/
|
|
MPEG4_LEVEL_6 = 9
|
|
} OH_MPEG4Level;
|
|
|
|
/**
|
|
* @brief Enumerates the H.263 levels.
|
|
*
|
|
* @since 17
|
|
*/
|
|
typedef enum OH_H263Level {
|
|
/**
|
|
* Level 10.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_10 = 0,
|
|
/**
|
|
* Level 20.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_20 = 1,
|
|
/**
|
|
* Level 30.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_30 = 2,
|
|
/**
|
|
* Level 40.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_40 = 3,
|
|
/**
|
|
* Level 45.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_45 = 4,
|
|
/**
|
|
* Level 50.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_50 = 5,
|
|
/**
|
|
* Level 60.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_60 = 6,
|
|
/**
|
|
* Level 70.
|
|
* @since 17
|
|
*/
|
|
H263_LEVEL_70 = 7
|
|
} OH_H263Level;
|
|
|
|
/**
|
|
* @brief Enumerates the VC-1 levels.
|
|
*
|
|
* @since 22
|
|
*/
|
|
typedef enum OH_VC1Level {
|
|
/**
|
|
* Level L0.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_L0 = 0,
|
|
/**
|
|
* Level L1.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_L1 = 1,
|
|
/**
|
|
* Level L2.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_L2 = 2,
|
|
/**
|
|
* Level L3.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_L3 = 3,
|
|
/**
|
|
* Level L4.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_L4 = 4,
|
|
/**
|
|
* Low level.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_LOW = 5,
|
|
/**
|
|
* Medium level.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_MEDIUM = 6,
|
|
/**
|
|
* High level.
|
|
* @since 22
|
|
*/
|
|
VC1_LEVEL_HIGH = 7
|
|
} OH_VC1Level;
|
|
|
|
/**
|
|
* @brief AV1 level.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_AV1Level {
|
|
/**
|
|
* Level 2.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_20 = 0,
|
|
/**
|
|
* Level 2.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_21 = 1,
|
|
/**
|
|
* Level 2.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_22 = 2,
|
|
/**
|
|
* Level 2.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_23 = 3,
|
|
/**
|
|
* Level 3.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_30 = 4,
|
|
/**
|
|
* Level 3.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_31 = 5,
|
|
/**
|
|
* Level 3.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_32 = 6,
|
|
/**
|
|
* Level 3.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_33 = 7,
|
|
/**
|
|
* Level 4.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_40 = 8,
|
|
/**
|
|
* Level 4.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_41 = 9,
|
|
/**
|
|
* Level 4.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_42 = 10,
|
|
/**
|
|
* Level 4.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_43 = 11,
|
|
|
|
/**
|
|
* Level 5.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_50 = 12,
|
|
|
|
/**
|
|
* Level 5.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_51 = 13,
|
|
/**
|
|
* Level 5.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_52 = 14,
|
|
/**
|
|
* Level 5.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_53 = 15,
|
|
/**
|
|
* Level 6.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_60 = 16,
|
|
/**
|
|
* Level 6.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_61 = 17,
|
|
/**
|
|
* Level 6.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_62 = 18,
|
|
/**
|
|
* Level 6.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_63 = 19,
|
|
/**
|
|
* Level 7.0.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_70 = 20,
|
|
/**
|
|
* Level 7.1.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_71 = 21,
|
|
/**
|
|
* Level 7.2.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_72 = 22,
|
|
/**
|
|
* Level 7.3.
|
|
* @since 23
|
|
*/
|
|
AV1_LEVEL_73 = 23
|
|
} OH_AV1Level;
|
|
|
|
/**
|
|
* @brief VP9 level.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_VP9Level {
|
|
/**
|
|
* Level 1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_1 = 0,
|
|
/**
|
|
* Level 1.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_11 = 1,
|
|
/**
|
|
* Level 2.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_2 = 2,
|
|
/**
|
|
* Level 2.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_21 = 3,
|
|
/**
|
|
* Level 3.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_3 = 4,
|
|
/**
|
|
* Level 3.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_31 = 5,
|
|
/**
|
|
* Level 4.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_4 = 6,
|
|
/**
|
|
* Level 4.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_41 = 7,
|
|
/**
|
|
* Level 5.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_5 = 8,
|
|
/**
|
|
* Level 5.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_51 = 9,
|
|
/**
|
|
* Level 5.2.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_52 = 10,
|
|
/**
|
|
* Level 6.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_6 = 11,
|
|
/**
|
|
* Level 6.1.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_61 = 12,
|
|
/**
|
|
* Level 6.2.
|
|
* @since 23
|
|
*/
|
|
VP9_LEVEL_62 = 13
|
|
} OH_VP9Level;
|
|
|
|
/**
|
|
* @brief WVC1 level.
|
|
*
|
|
* @since 23
|
|
*/
|
|
typedef enum OH_WVC1Level {
|
|
/**
|
|
* Level L0.
|
|
* @since 23
|
|
*/
|
|
WVC1_LEVEL_L0 = 0,
|
|
/**
|
|
* Level L1.
|
|
* @since 23
|
|
*/
|
|
WVC1_LEVEL_L1 = 1,
|
|
/**
|
|
* Level L2.
|
|
* @since 23
|
|
*/
|
|
WVC1_LEVEL_L2 = 2,
|
|
/**
|
|
* Level L3.
|
|
* @since 23
|
|
*/
|
|
WVC1_LEVEL_L3 = 3,
|
|
/**
|
|
* Level L4.
|
|
* @since 23
|
|
*/
|
|
WVC1_LEVEL_L4 = 4
|
|
} OH_WVC1Level;
|
|
|
|
/**
|
|
* @brief Enumerates the WMV3 levels.
|
|
*
|
|
* @since 22
|
|
*/
|
|
typedef enum OH_WMV3Level {
|
|
/**
|
|
* Low level.
|
|
* @since 22
|
|
*/
|
|
WMV3_LEVEL_LOW = 0,
|
|
/**
|
|
* Medium level.
|
|
* @since 22
|
|
*/
|
|
WMV3_LEVEL_MEDIUM = 1,
|
|
/**
|
|
* High level.
|
|
* @since 22
|
|
*/
|
|
WMV3_LEVEL_HIGH = 2
|
|
} OH_WMV3Level;
|
|
|
|
/**
|
|
* @brief Enumerates the reference modes of temporal image groups.
|
|
*
|
|
* @since 12
|
|
*/
|
|
typedef enum OH_TemporalGopReferenceMode {
|
|
/**
|
|
* Refers to the nearest short-term reference frame.
|
|
* @since 12
|
|
*/
|
|
ADJACENT_REFERENCE = 0,
|
|
/**
|
|
* Refers to the latest LTR frame.
|
|
* @since 12
|
|
*/
|
|
JUMP_REFERENCE = 1,
|
|
/**
|
|
* Uniformly scaled reference structure, which has even distribution of video frames after drop the highest
|
|
* enhance layer. The temporal group of pictures must be power of 2.
|
|
* @since 12
|
|
*/
|
|
UNIFORMLY_SCALED_REFERENCE = 2
|
|
} OH_TemporalGopReferenceMode;
|
|
|
|
/**
|
|
* @brief Enumerates the bit rate modes of an encoder.
|
|
*
|
|
* @since 10
|
|
*/
|
|
typedef enum OH_BitrateMode {
|
|
/**
|
|
* Constant bit rate.
|
|
* @since 10
|
|
*/
|
|
BITRATE_MODE_CBR = 0,
|
|
/**
|
|
* Variable bit rate.
|
|
* @since 10
|
|
*/
|
|
BITRATE_MODE_VBR = 1,
|
|
/**
|
|
* Constant quality.
|
|
* @since 10
|
|
*/
|
|
BITRATE_MODE_CQ = 2,
|
|
/**
|
|
* Stable Quality RateControl.
|
|
* @since 20
|
|
*/
|
|
BITRATE_MODE_SQR = 3,
|
|
/**
|
|
* @brief CBR for High Quality.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
BITRATE_MODE_CBR_HIGH_QUALITY = 4
|
|
} OH_BitrateMode;
|
|
|
|
/**
|
|
* @brief The video decoding frame retention mode.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
typedef enum OH_FrameRetentionMode {
|
|
/**
|
|
* @brief Full frame retention mode. The decoder operates in a transparent passthrough state,
|
|
* retaining 100% of the input frames and effectively disabling the frame dropping feature.
|
|
* All underlying visual perception algorithms are completely bypassed, resulting in
|
|
* zero algorithmic overhead.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_FRAME_RETENTION_MODE_FULL = 0,
|
|
/**
|
|
* @brief Adaptive frame retention mode. The decoder dynamically analyzes video characteristics to drop frames with
|
|
* the least perceptual impact, preserving visual smoothness with minimal degradation to the playback experience.
|
|
* For optimal algorithmic accuracy, it is highly recommended to explicitly configure
|
|
* the current playback speed via {@link OH_MD_KEY_VIDEO_DECODER_SPEED}.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_FRAME_RETENTION_MODE_ADAPTIVE = 1,
|
|
/**
|
|
* @brief Uniform frame retention mode. Retains frames evenly according to a user-configured retention ratio
|
|
* (configured via {@link OH_MD_KEY_VIDEO_DECODER_FRAME_RETENTION_RATIO}).
|
|
* If the retention ratio is not explicitly configured, the decoder limits the output to a maximum of 30 fps.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_FRAME_RETENTION_MODE_UNIFORM = 2
|
|
} OH_FrameRetentionMode;
|
|
|
|
/**
|
|
* @brief The PTS mode of audio encoder.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
typedef enum OH_AudioEncoderPTSMode {
|
|
/**
|
|
* @brief Default PTS mode of audio encoder. Different encoders may perform differently.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_AUDIO_ENCODER_PTS_MODE_DEFAULT = 0,
|
|
/**
|
|
* @brief PTS starts from zero.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_AUDIO_ENCODER_PTS_MODE_ZERO_START = 1,
|
|
/**
|
|
* @brief PTS starts from the first input PTS.
|
|
*
|
|
* @since 26.0.0
|
|
*/
|
|
OH_AUDIO_ENCODER_PTS_MODE_FIRST_INPUT_START = 2
|
|
} OH_AudioEncoderPTSMode;
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif // NATIVE_AVCODEC_BASE_H
|
|
|
|
/** @} */ |