mirror of
https://github.com/openharmony/interface_sdk_c.git
synced 2026-08-26 18:56:40 -04:00
ef1fca849d
Signed-off-by: Oujinyang <oujinyang@h-partners.com>
350 lines
16 KiB
C
350 lines
16 KiB
C
/*
|
|
* Copyright (c) 2025 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 AVTranscoder
|
|
* @{
|
|
*
|
|
* @brief Provides APIs of request capability for Transcoder.
|
|
*
|
|
* @syscap SystemCapability.Multimedia.Media.AVTranscoder
|
|
* @since 20
|
|
* @}
|
|
*/
|
|
/**
|
|
* @file avtranscoder.h
|
|
*
|
|
* @brief The file declares the native APIs provided by the AVTranscoder. You can use the APIs to transcode a source
|
|
* video file into a new video file.
|
|
*
|
|
* @kit MediaKit
|
|
* @library libavtranscoder.so
|
|
* @since 20
|
|
*/
|
|
|
|
#ifndef MULTIMEDIA_PLAYER_FRAMEWORK_AVTRANSCODER_H
|
|
#define MULTIMEDIA_PLAYER_FRAMEWORK_AVTRANSCODER_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdio.h>
|
|
#include "avtranscoder_base.h"
|
|
#include "native_avcodec_base.h"
|
|
#include "native_averrors.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/**
|
|
* @brief Creates an instance of the transcoding configuration parameters.
|
|
*
|
|
* @return Pointer to the OH_AVTranscoder_Config instance created. If the operation fails, nullptr is returned.
|
|
* @since 20
|
|
*/
|
|
OH_AVTranscoder_Config *OH_AVTranscoderConfig_Create();
|
|
|
|
/**
|
|
* @brief Releases the resources of the transcoding configuration parameters.
|
|
* After a successful call, the instance specified by **config** is released and set to nullptr.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance.
|
|
* @return {@link AV_ERR_OK}: The release operation is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_Release(OH_AVTranscoder_Config* config);
|
|
|
|
/**
|
|
* @brief Sets the file descriptor of the source video for transcoding.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance.
|
|
* @param srcFd Source file descriptor.
|
|
* @param srcOffset The offset into the file where the data to be read, in bytes.
|
|
* @param length The length in bytes of the data to be read
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the parameters related to the source video
|
|
* file are incorrect.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetSrcFD(
|
|
OH_AVTranscoder_Config *config, int32_t srcFd, int64_t srcOffset, int64_t length);
|
|
|
|
/**
|
|
* @brief Sets the file descriptor of the output video for transcoding.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param dstFd Destination file descriptor
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the output video file descriptor is invalid.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstFD(OH_AVTranscoder_Config *config, int32_t dstFd);
|
|
|
|
/**
|
|
* @brief Sets the encoding format of the output video for transcoding.
|
|
* Currently, only AVC and HEVC are supported. If the source video is in HEVC format, the default value is **HEVC**.
|
|
* Otherwise, the default value is **AVC**.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param mimeType Destination video mime type. See native_avcodec_base.h
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **mimeType** is not allowed.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoType(OH_AVTranscoder_Config *config, const char *mimeType);
|
|
|
|
/**
|
|
* @brief Sets the encoding format of the output audio for transcoding.
|
|
* Currently, only AAC is supported. If this parameter is not set, AAC is used by default.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param mimeType Destination audio mime type. See native_avcodec_base.h
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **mimeType** is not allowed.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioType(OH_AVTranscoder_Config *config, const char *mimeType);
|
|
|
|
/**
|
|
* @brief Sets the container format of the output video file for transcoding.
|
|
* Currently, only MP4 is supported.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param mimeType Destination file type. See native_avcodec_base.h
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **mimeType** is invalid.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstFileType(OH_AVTranscoder_Config *config, OH_AVOutputFormat mimeType);
|
|
|
|
/**
|
|
* @brief Sets the bit rate of the output audio for transcoding.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param bitrate Destination audio bitrate, in bit/s.
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **bitrate** is invalid.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstAudioBitrate(OH_AVTranscoder_Config *config, int32_t bitrate);
|
|
|
|
/**
|
|
* @brief Sets the bit rate of the output video for transcoding.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param bitrate Destination video bitrate, in bit/s.
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **bitrate** is invalid.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoBitrate(OH_AVTranscoder_Config *config, int32_t bitrate);
|
|
|
|
/**
|
|
* @brief Sets the resolution of the output video for transcoding, in px, where **width** is the width of the output
|
|
* video frame and **height** is the height of the output video frame.
|
|
* This function must be called before {@link OH_AVTranscoder_Prepare}.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param width Destination for video width, in px.
|
|
* @param height Destination for video height, in px.
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr, or the value of **width** or **height** is
|
|
* invalid.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_SetDstVideoResolution(OH_AVTranscoder_Config *config, int32_t width, int32_t height);
|
|
|
|
/**
|
|
* @brief Creates an AVTranscoder instance.
|
|
*
|
|
* @return Pointer to the OH_AVTranscoder instance created. If the operation fails, nullptr is returned.
|
|
* @since 20
|
|
*/
|
|
OH_AVTranscoder *OH_AVTranscoder_Create(void);
|
|
|
|
/**
|
|
* @brief Sets the parameters for video transcoding and prepares for transcoding.
|
|
* This function must be called before {@link OH_AVTranscoder_Start}. Upon a successful call to this function, the
|
|
* AVTranscoder enters the AVTRANSCODER_PREPARED state.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance,
|
|
* see {@link OH_AVTranscoder_Config}
|
|
* @return {@link AV_ERR_OK}: The video transcoding parameters are set successfully, and the AVTranscoder enters the
|
|
* AVTRANSCODER_PREPARED state.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Prepare operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Prepare operation is not allowed in the current state, or the format is not
|
|
* supported.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Prepare(OH_AVTranscoder *transcoder, OH_AVTranscoder_Config *config);
|
|
|
|
/**
|
|
* @brief Starts transcoding.
|
|
* This function must be called after a successful call to {@link OH_AVTranscoder_Prepare}. Upon a successful call to
|
|
* this function, the AVTranscoder enters the AVTRANSCODER_STARTED state.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @return {@link AV_ERR_OK}: Transcoding starts successfully, and the AVTranscoder enters the AVTRANSCODER_STARTED state.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Start operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Start operation is not allowed in the current state.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Start(OH_AVTranscoder *transcoder);
|
|
|
|
/**
|
|
* @brief Pauses transcoding.
|
|
* This function must be called when the AVTranscoder is in the AVTRANSCODER_STARTED state. Upon a successful call to
|
|
* this function, the AVTranscoder enters the AVTRANSCODER_PAUSED state.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @return {@link AV_ERR_OK}: Transcoding is paused successfully, and the AVTranscoder enters the AVTRANSCODER_PAUSED state.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Pause operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Pause operation is not allowed in the current state.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Pause(OH_AVTranscoder *transcoder);
|
|
|
|
/**
|
|
* @brief Resumes transcoding.
|
|
* This function must be called when the AVTranscoder is in the AVTRANSCODER_PAUSED state. Upon a successful call to
|
|
* this function, the AVTranscoder enters the AVTRANSCODER_STARTED state again.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @return {@link AV_ERR_OK}: Transcoding is resumed successfully, and the AVTranscoder enters the AVTRANSCODER_STARTED
|
|
* state.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Resume operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Resume operation is not allowed in the current state.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Resume(OH_AVTranscoder *transcoder);
|
|
|
|
/**
|
|
* @brief Cancels transcoding.
|
|
* This function must be called when the AVTranscoder is in the AVTRANSCODER_STARTED or AVTRANSCODER_PAUSED state. Upon
|
|
* a successful call to this function, the AVTranscoder enters the AVTRANSCODER_CANCELLED state.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @return {@link AV_ERR_OK}: Transcoding is canceled successfully, and the AVTranscoder enters the AVTRANSCODER_CANCELLED
|
|
* state.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Cancel operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Cancel operation is not allowed in the current state.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Cancel(OH_AVTranscoder *transcoder);
|
|
|
|
/**
|
|
* @brief Releases an AVTranscoder instance.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @return AV_ERR_OK: The AVTranscoder instance is successfully released.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** is nullptr, or the Release operation fails.
|
|
* {@link AV_ERR_OPERATE_NOT_PERMIT}: The Release operation is not allowed in the current state.
|
|
* **AV_ERR_IO**: An I/O access error occurs.
|
|
* {@link AV_ERR_SERVICE_DIED}: The media service is stopped.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_Release(OH_AVTranscoder *transcoder);
|
|
|
|
/**
|
|
* @brief Registers a callback for transcoding state change events.
|
|
* This callback is invoked when the state of the transcoding process changes.
|
|
* An application can subscribe to only one transcoding state change event. When the application initiates multiple
|
|
* subscriptions to this event, the last subscription is applied.
|
|
* The callback must be registered before {@link OH_AVTranscoder_Prepare} is called.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @param callback State callback function, see {@link OH_AVTranscoder_OnStateChange}
|
|
* @param userData Pointer to user specific data
|
|
* @return {@link AV_ERR_OK}: The registration is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** or **callback** is nullptr.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_SetStateCallback(
|
|
OH_AVTranscoder *transcoder, OH_AVTranscoder_OnStateChange callback, void *userData);
|
|
|
|
/**
|
|
* @brief Registers a callback for transcoding error events.
|
|
* This callback is invoked when an error occurs during the transcoding process.
|
|
* If this event is reported, call {@link OH_AVTranscoder_Release} to exit the transcoding.
|
|
* An application can subscribe to only one transcoding error event. When the application initiates multiple
|
|
* subscriptions to this event, the last subscription is applied.
|
|
* The callback must be registered before {@link OH_AVTranscoder_Prepare} is called.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @param callback Error callback function, see {@link OH_AVTranscoder_OnError}
|
|
* @param userData Pointer to user specific data
|
|
* @return {@link AV_ERR_OK}: The registration is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** or **callback** is nullptr.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_SetErrorCallback(
|
|
OH_AVTranscoder *transcoder, OH_AVTranscoder_OnError callback, void *userData);
|
|
|
|
/**
|
|
* @brief Registers a callback for transcoding progress update events.
|
|
* This callback is invoked when the progress of the transcoding process is updated.
|
|
* An application can subscribe to only one transcoding error event. When the application initiates multiple
|
|
* subscriptions to this event, the last subscription is applied.
|
|
* The callback must be registered before {@link OH_AVTranscoder_Prepare} is called.
|
|
*
|
|
* @param transcoder Pointer to an OH_AVTranscoder instance
|
|
* @param callback Uri callback function,
|
|
* see {@link OH_AVTranscoder_OnProgressUpdate}
|
|
* @param userData Pointer to user specific data
|
|
* @return {@link AV_ERR_OK}: The registration is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **transcoder** or **callback** is nullptr.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoder_SetProgressUpdateCallback(
|
|
OH_AVTranscoder *transcoder, OH_AVTranscoder_OnProgressUpdate callback, void *userData);
|
|
|
|
/**
|
|
* @brief Enables B-frame encoding for the output video during transcoding.
|
|
* For details about the constraints on B-frame video encoding, see {@link Constraints in B-Frame Video Encoding}.
|
|
* If the current environment does not meet these constraints, B-frames will be skipped, and encoding will proceed as
|
|
* if B-frame video encoding were not enabled.
|
|
*
|
|
* @param config Pointer to an OH_AVTranscoder_Config instance
|
|
* @param enabled Whether enable B Frame. If this function is not called, B Frame is disabled.
|
|
* @return {@link AV_ERR_OK}: The setting is successful.
|
|
* {@link AV_ERR_INVALID_VAL}: The input parameter **config** is nullptr.
|
|
* @since 20
|
|
*/
|
|
OH_AVErrCode OH_AVTranscoderConfig_EnableBFrame(OH_AVTranscoder_Config *config, bool enabled);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // MULTIMEDIA_PLAYER_FRAMEWORK_AVTRANSCODER_H
|
|
|