17777dab0Sopenharmony_ci/*
27777dab0Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License.
57777dab0Sopenharmony_ci * You may obtain a copy of the License at
67777dab0Sopenharmony_ci *
77777dab0Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
87777dab0Sopenharmony_ci *
97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and
137777dab0Sopenharmony_ci * limitations under the License.
147777dab0Sopenharmony_ci */
157777dab0Sopenharmony_ci
167777dab0Sopenharmony_ci/**
177777dab0Sopenharmony_ci * @addtogroup OHAVSession
187777dab0Sopenharmony_ci * @{
197777dab0Sopenharmony_ci *
207777dab0Sopenharmony_ci * @brief Provide the definition of the C interface for the avsession module.
217777dab0Sopenharmony_ci *
227777dab0Sopenharmony_ci * @syscap SystemCapability.Multimedia.AVSession.Core
237777dab0Sopenharmony_ci *
247777dab0Sopenharmony_ci * @since 13
257777dab0Sopenharmony_ci * @version 1.0
267777dab0Sopenharmony_ci */
277777dab0Sopenharmony_ci
287777dab0Sopenharmony_ci/**
297777dab0Sopenharmony_ci * @file native_avsession.h
307777dab0Sopenharmony_ci *
317777dab0Sopenharmony_ci * @brief Declare avsession interface.
327777dab0Sopenharmony_ci *
337777dab0Sopenharmony_ci * @library libohavsession.so
347777dab0Sopenharmony_ci * @syscap SystemCapability.Multimedia.AVSession.Core
357777dab0Sopenharmony_ci * @kit AVSessionKit
367777dab0Sopenharmony_ci * @since 13
377777dab0Sopenharmony_ci * @version 1.0
387777dab0Sopenharmony_ci */
397777dab0Sopenharmony_ci
407777dab0Sopenharmony_ci#ifndef NATIVE_AVSESSION_H
417777dab0Sopenharmony_ci#define NATIVE_AVSESSION_H
427777dab0Sopenharmony_ci
437777dab0Sopenharmony_ci#include <stdint.h>
447777dab0Sopenharmony_ci#include "native_avsession_errors.h"
457777dab0Sopenharmony_ci#include "native_avmetadata.h"
467777dab0Sopenharmony_ci
477777dab0Sopenharmony_ci#ifdef __cplusplus
487777dab0Sopenharmony_ciextern "C" {
497777dab0Sopenharmony_ci#endif
507777dab0Sopenharmony_ci
517777dab0Sopenharmony_ci/**
527777dab0Sopenharmony_ci * @brief Enum for avsession type.
537777dab0Sopenharmony_ci *
547777dab0Sopenharmony_ci * @since 13
557777dab0Sopenharmony_ci * @version 1.0
567777dab0Sopenharmony_ci */
577777dab0Sopenharmony_citypedef enum {
587777dab0Sopenharmony_ci    /**
597777dab0Sopenharmony_ci     * @brief audio session type.
607777dab0Sopenharmony_ci     */
617777dab0Sopenharmony_ci    SESSION_TYPE_AUDIO = 0,
627777dab0Sopenharmony_ci
637777dab0Sopenharmony_ci    /**
647777dab0Sopenharmony_ci     * @brief video session type.
657777dab0Sopenharmony_ci     */
667777dab0Sopenharmony_ci    SESSION_TYPE_VIDEO = 1,
677777dab0Sopenharmony_ci
687777dab0Sopenharmony_ci    /**
697777dab0Sopenharmony_ci     * @brief voice call session type.
707777dab0Sopenharmony_ci     */
717777dab0Sopenharmony_ci    SESSION_TYPE_VOICE_CALL = 2,
727777dab0Sopenharmony_ci
737777dab0Sopenharmony_ci    /**
747777dab0Sopenharmony_ci     * @brief video call session type.
757777dab0Sopenharmony_ci     */
767777dab0Sopenharmony_ci    SESSION_TYPE_VIDEO_CALL = 3
777777dab0Sopenharmony_ci} AVSession_Type;
787777dab0Sopenharmony_ci
797777dab0Sopenharmony_ci/**
807777dab0Sopenharmony_ci * @brief Enum for playback state.
817777dab0Sopenharmony_ci *
827777dab0Sopenharmony_ci * @since 13
837777dab0Sopenharmony_ci * @version 1.0
847777dab0Sopenharmony_ci */
857777dab0Sopenharmony_citypedef enum {
867777dab0Sopenharmony_ci    /**
877777dab0Sopenharmony_ci     * @brief Initial state.
887777dab0Sopenharmony_ci     */
897777dab0Sopenharmony_ci    PLAYBACK_STATE_INITIAL = 0,
907777dab0Sopenharmony_ci
917777dab0Sopenharmony_ci    /**
927777dab0Sopenharmony_ci     * @brief Preparing state. Indicates that the media file is not ready to play.
937777dab0Sopenharmony_ci     */
947777dab0Sopenharmony_ci    PLAYBACK_STATE_PREPARING = 1,
957777dab0Sopenharmony_ci
967777dab0Sopenharmony_ci    /**
977777dab0Sopenharmony_ci     * @brief Playing state.
987777dab0Sopenharmony_ci     */
997777dab0Sopenharmony_ci    PLAYBACK_STATE_PLAYING = 2,
1007777dab0Sopenharmony_ci
1017777dab0Sopenharmony_ci    /**
1027777dab0Sopenharmony_ci     * @brief Pause state.
1037777dab0Sopenharmony_ci     */
1047777dab0Sopenharmony_ci    PLAYBACK_STATE_PAUSED = 3,
1057777dab0Sopenharmony_ci
1067777dab0Sopenharmony_ci    /**
1077777dab0Sopenharmony_ci     * @brief Fast forward state.
1087777dab0Sopenharmony_ci     */
1097777dab0Sopenharmony_ci    PLAYBACK_STATE_FAST_FORWARDING = 4,
1107777dab0Sopenharmony_ci
1117777dab0Sopenharmony_ci    /**
1127777dab0Sopenharmony_ci     * @brief Rewind state.
1137777dab0Sopenharmony_ci     */
1147777dab0Sopenharmony_ci    PLAYBACK_STATE_REWINDED = 5,
1157777dab0Sopenharmony_ci
1167777dab0Sopenharmony_ci    /**
1177777dab0Sopenharmony_ci     * @brief Stopped state.
1187777dab0Sopenharmony_ci     */
1197777dab0Sopenharmony_ci    PLAYBACK_STATE_STOPPED = 6,
1207777dab0Sopenharmony_ci
1217777dab0Sopenharmony_ci    /**
1227777dab0Sopenharmony_ci     * @brief Complete state.
1237777dab0Sopenharmony_ci     */
1247777dab0Sopenharmony_ci    PLAYBACK_STATE_COMPLETED = 7,
1257777dab0Sopenharmony_ci
1267777dab0Sopenharmony_ci    /**
1277777dab0Sopenharmony_ci     * @brief Release state.
1287777dab0Sopenharmony_ci     */
1297777dab0Sopenharmony_ci    PLAYBACK_STATE_RELEASED = 8,
1307777dab0Sopenharmony_ci
1317777dab0Sopenharmony_ci    /**
1327777dab0Sopenharmony_ci     * @brief Error state.
1337777dab0Sopenharmony_ci     */
1347777dab0Sopenharmony_ci    PLAYBACK_STATE_ERROR = 9,
1357777dab0Sopenharmony_ci
1367777dab0Sopenharmony_ci    /**
1377777dab0Sopenharmony_ci     * @brief Idle state.
1387777dab0Sopenharmony_ci     */
1397777dab0Sopenharmony_ci    PLAYBACK_STATE_IDLE = 10,
1407777dab0Sopenharmony_ci
1417777dab0Sopenharmony_ci    /**
1427777dab0Sopenharmony_ci     * @brief Buffering state.
1437777dab0Sopenharmony_ci     */
1447777dab0Sopenharmony_ci    PLAYBACK_STATE_BUFFERING = 11,
1457777dab0Sopenharmony_ci
1467777dab0Sopenharmony_ci    /**
1477777dab0Sopenharmony_ci     * @brief Max state.
1487777dab0Sopenharmony_ci     */
1497777dab0Sopenharmony_ci    PLAYBACK_STATE_MAX = 12,
1507777dab0Sopenharmony_ci} AVSession_PlaybackState;
1517777dab0Sopenharmony_ci
1527777dab0Sopenharmony_ci/**
1537777dab0Sopenharmony_ci * @brief Defines the playback position.
1547777dab0Sopenharmony_ci *
1557777dab0Sopenharmony_ci * @since 13
1567777dab0Sopenharmony_ci */
1577777dab0Sopenharmony_citypedef struct AVSession_PlaybackPosition {
1587777dab0Sopenharmony_ci    /**
1597777dab0Sopenharmony_ci     * @brief Elapsed time(position) of this media set by the app.
1607777dab0Sopenharmony_ci     */
1617777dab0Sopenharmony_ci    int64_t elapsedTime;
1627777dab0Sopenharmony_ci
1637777dab0Sopenharmony_ci    /**
1647777dab0Sopenharmony_ci     * @brief Record the system time when elapsedTime is set.
1657777dab0Sopenharmony_ci     */
1667777dab0Sopenharmony_ci    int64_t updateTime;
1677777dab0Sopenharmony_ci} AVSession_PlaybackPosition;
1687777dab0Sopenharmony_ci
1697777dab0Sopenharmony_ci/**
1707777dab0Sopenharmony_ci * @brief Defines the playback mode.
1717777dab0Sopenharmony_ci *
1727777dab0Sopenharmony_ci * @since 13
1737777dab0Sopenharmony_ci */
1747777dab0Sopenharmony_citypedef enum {
1757777dab0Sopenharmony_ci    /**
1767777dab0Sopenharmony_ci     * @brief sequential playback mode
1777777dab0Sopenharmony_ci     */
1787777dab0Sopenharmony_ci    LOOP_MODE_SEQUENCE = 0,
1797777dab0Sopenharmony_ci
1807777dab0Sopenharmony_ci    /**
1817777dab0Sopenharmony_ci     * @brief single playback mode
1827777dab0Sopenharmony_ci     */
1837777dab0Sopenharmony_ci    LOOP_MODE_SINGLE = 1,
1847777dab0Sopenharmony_ci
1857777dab0Sopenharmony_ci    /**
1867777dab0Sopenharmony_ci     * @brief list playback mode
1877777dab0Sopenharmony_ci     */
1887777dab0Sopenharmony_ci    LOOP_MODE_LIST = 2,
1897777dab0Sopenharmony_ci
1907777dab0Sopenharmony_ci    /**
1917777dab0Sopenharmony_ci     * @brief shuffle playback mode
1927777dab0Sopenharmony_ci     */
1937777dab0Sopenharmony_ci    LOOP_MODE_SHUFFLE = 3,
1947777dab0Sopenharmony_ci
1957777dab0Sopenharmony_ci    /**
1967777dab0Sopenharmony_ci     * @brief custom playback mode
1977777dab0Sopenharmony_ci     */
1987777dab0Sopenharmony_ci    LOOP_MODE_CUSTOM = 4,
1997777dab0Sopenharmony_ci} AVSession_LoopMode;
2007777dab0Sopenharmony_ci
2017777dab0Sopenharmony_ci/**
2027777dab0Sopenharmony_ci * @brief Enum for different control command.
2037777dab0Sopenharmony_ci *
2047777dab0Sopenharmony_ci * @since 13
2057777dab0Sopenharmony_ci * @version 1.0
2067777dab0Sopenharmony_ci */
2077777dab0Sopenharmony_citypedef enum AVSession_ControlCommand {
2087777dab0Sopenharmony_ci    /**
2097777dab0Sopenharmony_ci     * @brief invalid control command
2107777dab0Sopenharmony_ci     */
2117777dab0Sopenharmony_ci    CONTROL_CMD_INVALID = -1,
2127777dab0Sopenharmony_ci
2137777dab0Sopenharmony_ci    /**
2147777dab0Sopenharmony_ci     * @brief play command
2157777dab0Sopenharmony_ci     */
2167777dab0Sopenharmony_ci    CONTROL_CMD_PLAY = 0,
2177777dab0Sopenharmony_ci
2187777dab0Sopenharmony_ci    /**
2197777dab0Sopenharmony_ci     * @brief pause command
2207777dab0Sopenharmony_ci     */
2217777dab0Sopenharmony_ci    CONTROL_CMD_PAUSE = 1,
2227777dab0Sopenharmony_ci
2237777dab0Sopenharmony_ci    /**
2247777dab0Sopenharmony_ci     * @brief stop command
2257777dab0Sopenharmony_ci     */
2267777dab0Sopenharmony_ci    CONTROL_CMD_STOP = 2,
2277777dab0Sopenharmony_ci
2287777dab0Sopenharmony_ci    /**
2297777dab0Sopenharmony_ci     * @brief playnext command
2307777dab0Sopenharmony_ci     */
2317777dab0Sopenharmony_ci    CONTROL_CMD_PLAY_NEXT = 3,
2327777dab0Sopenharmony_ci
2337777dab0Sopenharmony_ci    /**
2347777dab0Sopenharmony_ci     * @brief playprevious command
2357777dab0Sopenharmony_ci     */
2367777dab0Sopenharmony_ci    CONTROL_CMD_PLAY_PREVIOUS = 4,
2377777dab0Sopenharmony_ci} AVSession_ControlCommand;
2387777dab0Sopenharmony_ci
2397777dab0Sopenharmony_ci/**
2407777dab0Sopenharmony_ci * @brief Defines enumeration of avsession callback result.
2417777dab0Sopenharmony_ci *
2427777dab0Sopenharmony_ci * @since 13
2437777dab0Sopenharmony_ci */
2447777dab0Sopenharmony_citypedef enum {
2457777dab0Sopenharmony_ci    /**
2467777dab0Sopenharmony_ci     * @brief Result of avsession callabck is success.
2477777dab0Sopenharmony_ci     */
2487777dab0Sopenharmony_ci    AVSESSION_CALLBACK_RESULT_SUCCESS = 0,
2497777dab0Sopenharmony_ci
2507777dab0Sopenharmony_ci    /**
2517777dab0Sopenharmony_ci     * @brief Result of avsession callabck failed.
2527777dab0Sopenharmony_ci     */
2537777dab0Sopenharmony_ci    AVSESSION_CALLBACK_RESULT_FAILURE = -1,
2547777dab0Sopenharmony_ci} AVSessionCallback_Result;
2557777dab0Sopenharmony_ci
2567777dab0Sopenharmony_ci/**
2577777dab0Sopenharmony_ci * @brief AVSession object
2587777dab0Sopenharmony_ci *
2597777dab0Sopenharmony_ci * A pointer can be created using {@link OH_AVSession_Create} method.
2607777dab0Sopenharmony_ci *
2617777dab0Sopenharmony_ci * @since 13
2627777dab0Sopenharmony_ci * @version 1.0
2637777dab0Sopenharmony_ci */
2647777dab0Sopenharmony_citypedef struct OH_AVSession OH_AVSession;
2657777dab0Sopenharmony_ci
2667777dab0Sopenharmony_ci/**
2677777dab0Sopenharmony_ci * @brief Declaring the callback struct for playback command
2687777dab0Sopenharmony_ci *
2697777dab0Sopenharmony_ci * @since 13
2707777dab0Sopenharmony_ci * @version 1.0
2717777dab0Sopenharmony_ci */
2727777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnCommand)(OH_AVSession* session,
2737777dab0Sopenharmony_ci    AVSession_ControlCommand command, void* userData);
2747777dab0Sopenharmony_ci
2757777dab0Sopenharmony_ci/**
2767777dab0Sopenharmony_ci * @brief Declaring the callback struct for forward command
2777777dab0Sopenharmony_ci *
2787777dab0Sopenharmony_ci * @since 13
2797777dab0Sopenharmony_ci * @version 1.0
2807777dab0Sopenharmony_ci */
2817777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnFastForward)(OH_AVSession* session,
2827777dab0Sopenharmony_ci    uint32_t seekTime, void* userData);
2837777dab0Sopenharmony_ci
2847777dab0Sopenharmony_ci/**
2857777dab0Sopenharmony_ci * @brief Declaring the callback struct for rewind command
2867777dab0Sopenharmony_ci *
2877777dab0Sopenharmony_ci * @since 13
2887777dab0Sopenharmony_ci * @version 1.0
2897777dab0Sopenharmony_ci */
2907777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnRewind)(OH_AVSession* session,
2917777dab0Sopenharmony_ci    uint32_t seekTime, void* userData);
2927777dab0Sopenharmony_ci
2937777dab0Sopenharmony_ci/**
2947777dab0Sopenharmony_ci * @brief Declaring the callback struct for seek command
2957777dab0Sopenharmony_ci *
2967777dab0Sopenharmony_ci * @since 13
2977777dab0Sopenharmony_ci * @version 1.0
2987777dab0Sopenharmony_ci */
2997777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnSeek)(OH_AVSession* session,
3007777dab0Sopenharmony_ci    uint64_t seekTime, void* userData);
3017777dab0Sopenharmony_ci
3027777dab0Sopenharmony_ci/**
3037777dab0Sopenharmony_ci * @brief Declaring the callback struct for set loop mode command
3047777dab0Sopenharmony_ci *
3057777dab0Sopenharmony_ci * @since 13
3067777dab0Sopenharmony_ci * @version 1.0
3077777dab0Sopenharmony_ci */
3087777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnSetLoopMode)(OH_AVSession* session,
3097777dab0Sopenharmony_ci    AVSession_LoopMode curLoopMode, void* userData);
3107777dab0Sopenharmony_ci
3117777dab0Sopenharmony_ci/**
3127777dab0Sopenharmony_ci * @brief Declaring the callback struct for toggle favorite command
3137777dab0Sopenharmony_ci *
3147777dab0Sopenharmony_ci * @since 13
3157777dab0Sopenharmony_ci * @version 1.0
3167777dab0Sopenharmony_ci */
3177777dab0Sopenharmony_citypedef AVSessionCallback_Result (*OH_AVSessionCallback_OnToggleFavorite)(OH_AVSession* session,
3187777dab0Sopenharmony_ci    const char* assetId, void* userData);
3197777dab0Sopenharmony_ci
3207777dab0Sopenharmony_ci/**
3217777dab0Sopenharmony_ci * @brief Request to create the avsession.
3227777dab0Sopenharmony_ci *
3237777dab0Sopenharmony_ci * @param sessionType The session type to set
3247777dab0Sopenharmony_ci * @param sessionTag The session tag set by the application
3257777dab0Sopenharmony_ci * @param bundleName The bundle name to set
3267777dab0Sopenharmony_ci * @param abilityName The abilityName name to set
3277777dab0Sopenharmony_ci * @param avsession Pointer to a viriable to receive the OH_AVSession
3287777dab0Sopenharmony_ci * @return Function result code:
3297777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3307777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}:
3317777dab0Sopenharmony_ci *                                                 1. The param of sessionType is invalid.
3327777dab0Sopenharmony_ci *                                                 2. The param of sessionTag is nullptr.
3337777dab0Sopenharmony_ci *                                                 3. The param of bundleName is nullptr.
3347777dab0Sopenharmony_ci *                                                 4. The param of abilityName is nullptr.
3357777dab0Sopenharmony_ci *                                                 5. The param of avsession is nullptr.
3367777dab0Sopenharmony_ci * @since 13
3377777dab0Sopenharmony_ci */
3387777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_Create(AVSession_Type sessionType, const char* sessionTag,
3397777dab0Sopenharmony_ci    const char* bundleName, const char* abilityName, OH_AVSession** avsession);
3407777dab0Sopenharmony_ci
3417777dab0Sopenharmony_ci/**
3427777dab0Sopenharmony_ci * @brief Request to destory the avsession.
3437777dab0Sopenharmony_ci *
3447777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
3457777dab0Sopenharmony_ci * @return Function result code:
3467777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3477777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER} The param of avsession is nullptr.
3487777dab0Sopenharmony_ci * @since 13
3497777dab0Sopenharmony_ci */
3507777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_Destroy(OH_AVSession* avsession);
3517777dab0Sopenharmony_ci
3527777dab0Sopenharmony_ci/**
3537777dab0Sopenharmony_ci * @brief Activate the avsession.
3547777dab0Sopenharmony_ci *
3557777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
3567777dab0Sopenharmony_ci * @return Function result code:
3577777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3587777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
3597777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER} The param of avsession is nullptr.
3607777dab0Sopenharmony_ci * @since 13
3617777dab0Sopenharmony_ci */
3627777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_Activate(OH_AVSession* avsession);
3637777dab0Sopenharmony_ci
3647777dab0Sopenharmony_ci/**
3657777dab0Sopenharmony_ci * @brief Deactivate the avsession.
3667777dab0Sopenharmony_ci *
3677777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
3687777dab0Sopenharmony_ci * @return Function result code:
3697777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3707777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
3717777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER} The param of avsession is nullptr.
3727777dab0Sopenharmony_ci * @since 13
3737777dab0Sopenharmony_ci */
3747777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_Deactivate(OH_AVSession* avsession);
3757777dab0Sopenharmony_ci
3767777dab0Sopenharmony_ci/**
3777777dab0Sopenharmony_ci * @brief Get session type.
3787777dab0Sopenharmony_ci *
3797777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
3807777dab0Sopenharmony_ci * @param sessionType The returned session type
3817777dab0Sopenharmony_ci * @return Function result code:
3827777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3837777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
3847777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
3857777dab0Sopenharmony_ci *                                                 1. The param of avsession is invalid.
3867777dab0Sopenharmony_ci *                                                 2. The param of sessionType is nullptr.
3877777dab0Sopenharmony_ci * @since 13
3887777dab0Sopenharmony_ci */
3897777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_GetSessionType(OH_AVSession* avsession, AVSession_Type* sessionType);
3907777dab0Sopenharmony_ci
3917777dab0Sopenharmony_ci/**
3927777dab0Sopenharmony_ci * @brief Get session id.
3937777dab0Sopenharmony_ci *
3947777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
3957777dab0Sopenharmony_ci * @param sessionId The returned session id
3967777dab0Sopenharmony_ci * @return Function result code:
3977777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
3987777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
3997777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4007777dab0Sopenharmony_ci *                                                 2. The param of sessionId is nullptr.
4017777dab0Sopenharmony_ci * @since 13
4027777dab0Sopenharmony_ci */
4037777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_GetSessionId(OH_AVSession* avsession, const char** sessionId);
4047777dab0Sopenharmony_ci
4057777dab0Sopenharmony_ci/**
4067777dab0Sopenharmony_ci * @brief Request to set av metadata.
4077777dab0Sopenharmony_ci *
4087777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4097777dab0Sopenharmony_ci * @param avmetadata The metadata to set
4107777dab0Sopenharmony_ci * @return Function result code:
4117777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4127777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4137777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
4147777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4157777dab0Sopenharmony_ci *                                                 2. The param of avmetadata is nullptr.
4167777dab0Sopenharmony_ci * @since 13
4177777dab0Sopenharmony_ci */
4187777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_SetAVMetadata(OH_AVSession* avsession, OH_AVMetadata* avmetadata);
4197777dab0Sopenharmony_ci
4207777dab0Sopenharmony_ci/**
4217777dab0Sopenharmony_ci * @brief Request to set av playbackstate.
4227777dab0Sopenharmony_ci *
4237777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4247777dab0Sopenharmony_ci * @param playbackState The playbackState to set
4257777dab0Sopenharmony_ci * @return Function result code:
4267777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4277777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4287777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
4297777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4307777dab0Sopenharmony_ci *                                                 2. The param of playbackState is invalid.
4317777dab0Sopenharmony_ci * @since 13
4327777dab0Sopenharmony_ci */
4337777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_SetPlaybackState(OH_AVSession* avsession,
4347777dab0Sopenharmony_ci    AVSession_PlaybackState playbackState);
4357777dab0Sopenharmony_ci
4367777dab0Sopenharmony_ci/**
4377777dab0Sopenharmony_ci * @brief Request to set playback position.
4387777dab0Sopenharmony_ci *
4397777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4407777dab0Sopenharmony_ci * @param playbackPosition The playbackPosition to set
4417777dab0Sopenharmony_ci * @return Function result code:
4427777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4437777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4447777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
4457777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4467777dab0Sopenharmony_ci *                                                 2. The param of playbackPosition is nullptr.
4477777dab0Sopenharmony_ci * @since 13
4487777dab0Sopenharmony_ci */
4497777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_SetPlaybackPosition(OH_AVSession* avsession,
4507777dab0Sopenharmony_ci    AVSession_PlaybackPosition* playbackPosition);
4517777dab0Sopenharmony_ci
4527777dab0Sopenharmony_ci/**
4537777dab0Sopenharmony_ci * @brief Request to set favorite state.
4547777dab0Sopenharmony_ci *
4557777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4567777dab0Sopenharmony_ci * @param favorite true means making the resource to be liked, false means dislike.
4577777dab0Sopenharmony_ci * @return Function result code:
4587777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4597777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4607777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER} The param of avsession is nullptr.
4617777dab0Sopenharmony_ci * @since 13
4627777dab0Sopenharmony_ci */
4637777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_SetFavorite(OH_AVSession* avsession, bool favorite);
4647777dab0Sopenharmony_ci
4657777dab0Sopenharmony_ci/**
4667777dab0Sopenharmony_ci * @brief Request to set loop mode.
4677777dab0Sopenharmony_ci *
4687777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4697777dab0Sopenharmony_ci * @param loopMode The loopmode to be set for playback.
4707777dab0Sopenharmony_ci * @return Function result code:
4717777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4727777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4737777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
4747777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4757777dab0Sopenharmony_ci *                                                 2. The param of loopMode is invalid.
4767777dab0Sopenharmony_ci * @since 13
4777777dab0Sopenharmony_ci */
4787777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_SetLoopMode(OH_AVSession* avsession, AVSession_LoopMode loopMode);
4797777dab0Sopenharmony_ci
4807777dab0Sopenharmony_ci/**
4817777dab0Sopenharmony_ci * @brief Request to register command callback.
4827777dab0Sopenharmony_ci *
4837777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
4847777dab0Sopenharmony_ci * @param command The control command type to be registered.
4857777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnCommand} to be registered.
4867777dab0Sopenharmony_ci * @param userData User data which is passed by user.
4877777dab0Sopenharmony_ci * @return Function result code:
4887777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
4897777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_CODE_COMMAND_INVALID} The command is invalid.
4907777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
4917777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
4927777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
4937777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
4947777dab0Sopenharmony_ci * @since 13
4957777dab0Sopenharmony_ci */
4967777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterCommandCallback(OH_AVSession* avsession,
4977777dab0Sopenharmony_ci    AVSession_ControlCommand command, OH_AVSessionCallback_OnCommand callback, void* userData);
4987777dab0Sopenharmony_ci
4997777dab0Sopenharmony_ci/**
5007777dab0Sopenharmony_ci * @brief Request to unregister command callback.
5017777dab0Sopenharmony_ci *
5027777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5037777dab0Sopenharmony_ci * @param command The control command type to be unregistered.
5047777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnCommand} to be unregistered.
5057777dab0Sopenharmony_ci * @return Function result code:
5067777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5077777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_CODE_COMMAND_INVALID} The command is invalid.
5087777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5097777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5107777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5117777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5127777dab0Sopenharmony_ci * @since 13
5137777dab0Sopenharmony_ci */
5147777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterCommandCallback(OH_AVSession* avsession,
5157777dab0Sopenharmony_ci    AVSession_ControlCommand command, OH_AVSessionCallback_OnCommand callback);
5167777dab0Sopenharmony_ci
5177777dab0Sopenharmony_ci/**
5187777dab0Sopenharmony_ci * @brief Request to register fastforward callback.
5197777dab0Sopenharmony_ci *
5207777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5217777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnFastForward} to be registered.
5227777dab0Sopenharmony_ci * @param userData User data which is passed by user.
5237777dab0Sopenharmony_ci * @return Function result code:
5247777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5257777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5267777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5277777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5287777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5297777dab0Sopenharmony_ci * @since 13
5307777dab0Sopenharmony_ci */
5317777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterForwardCallback(OH_AVSession* avsession,
5327777dab0Sopenharmony_ci    OH_AVSessionCallback_OnFastForward callback, void* userData);
5337777dab0Sopenharmony_ci
5347777dab0Sopenharmony_ci/**
5357777dab0Sopenharmony_ci * @brief Request to unregister fastforward callback.
5367777dab0Sopenharmony_ci *
5377777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5387777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnFastForward} to be unregistered.
5397777dab0Sopenharmony_ci * @return Function result code:
5407777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5417777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5427777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5437777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5447777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5457777dab0Sopenharmony_ci * @since 13
5467777dab0Sopenharmony_ci */
5477777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterForwardCallback(OH_AVSession* avsession,
5487777dab0Sopenharmony_ci    OH_AVSessionCallback_OnFastForward callback);
5497777dab0Sopenharmony_ci
5507777dab0Sopenharmony_ci/**
5517777dab0Sopenharmony_ci * @brief Request to register rewind callback.
5527777dab0Sopenharmony_ci *
5537777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5547777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnRewind} to be registered.
5557777dab0Sopenharmony_ci * @param userData User data which is passed by user.
5567777dab0Sopenharmony_ci * @return Function result code:
5577777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5587777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5597777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5607777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5617777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5627777dab0Sopenharmony_ci * @since 13
5637777dab0Sopenharmony_ci */
5647777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterRewindCallback(OH_AVSession* avsession,
5657777dab0Sopenharmony_ci    OH_AVSessionCallback_OnRewind callback, void* userData);
5667777dab0Sopenharmony_ci
5677777dab0Sopenharmony_ci/**
5687777dab0Sopenharmony_ci * @brief Request to unregister rewind callback.
5697777dab0Sopenharmony_ci *
5707777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5717777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnRewind} to be unregistered.
5727777dab0Sopenharmony_ci * @return Function result code:
5737777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5747777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5757777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5767777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5777777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5787777dab0Sopenharmony_ci * @since 13
5797777dab0Sopenharmony_ci */
5807777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterRewindCallback(OH_AVSession* avsession,
5817777dab0Sopenharmony_ci    OH_AVSessionCallback_OnRewind callback);
5827777dab0Sopenharmony_ci
5837777dab0Sopenharmony_ci/**
5847777dab0Sopenharmony_ci * @brief Request to register seek callback.
5857777dab0Sopenharmony_ci *
5867777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
5877777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnSeek} to be registered.
5887777dab0Sopenharmony_ci * @param userData User data which is passed by user.
5897777dab0Sopenharmony_ci * @return Function result code:
5907777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
5917777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
5927777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
5937777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
5947777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
5957777dab0Sopenharmony_ci * @since 13
5967777dab0Sopenharmony_ci */
5977777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterSeekCallback(OH_AVSession* avsession,
5987777dab0Sopenharmony_ci    OH_AVSessionCallback_OnSeek callback, void* userData);
5997777dab0Sopenharmony_ci
6007777dab0Sopenharmony_ci/**
6017777dab0Sopenharmony_ci * @brief Request to unregister seek callback.
6027777dab0Sopenharmony_ci *
6037777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
6047777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnSeek} to be unregistered.
6057777dab0Sopenharmony_ci * @return Function result code:
6067777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
6077777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
6087777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
6097777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
6107777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
6117777dab0Sopenharmony_ci * @since 13
6127777dab0Sopenharmony_ci */
6137777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterSeekCallback(OH_AVSession* avsession,
6147777dab0Sopenharmony_ci    OH_AVSessionCallback_OnSeek callback);
6157777dab0Sopenharmony_ci
6167777dab0Sopenharmony_ci/**
6177777dab0Sopenharmony_ci * @brief Request to register set loopmode callback.
6187777dab0Sopenharmony_ci *
6197777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
6207777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnSetLoopMode} to be registered.
6217777dab0Sopenharmony_ci * @param userData User data which is passed by user.
6227777dab0Sopenharmony_ci * @return Function result code:
6237777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
6247777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
6257777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
6267777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
6277777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
6287777dab0Sopenharmony_ci * @since 13
6297777dab0Sopenharmony_ci */
6307777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterSetLoopModeCallback(OH_AVSession* avsession,
6317777dab0Sopenharmony_ci    OH_AVSessionCallback_OnSetLoopMode callback, void* userData);
6327777dab0Sopenharmony_ci
6337777dab0Sopenharmony_ci/**
6347777dab0Sopenharmony_ci * @brief Request to unregister set loopmode callback.
6357777dab0Sopenharmony_ci *
6367777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
6377777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnSetLoopMode} to be unregistered.
6387777dab0Sopenharmony_ci * @return Function result code:
6397777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
6407777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
6417777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
6427777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
6437777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
6447777dab0Sopenharmony_ci * @since 13
6457777dab0Sopenharmony_ci */
6467777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterSetLoopModeCallback(OH_AVSession* avsession,
6477777dab0Sopenharmony_ci    OH_AVSessionCallback_OnSetLoopMode callback);
6487777dab0Sopenharmony_ci
6497777dab0Sopenharmony_ci/**
6507777dab0Sopenharmony_ci * @brief Request to register toggle favorite callback.
6517777dab0Sopenharmony_ci *
6527777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
6537777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnToggleFavorite} to be registered.
6547777dab0Sopenharmony_ci * @param userData User data which is passed by user.
6557777dab0Sopenharmony_ci * @return Function result code:
6567777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
6577777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
6587777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
6597777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
6607777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
6617777dab0Sopenharmony_ci * @since 13
6627777dab0Sopenharmony_ci */
6637777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_RegisterToggleFavoriteCallback(OH_AVSession* avsession,
6647777dab0Sopenharmony_ci    OH_AVSessionCallback_OnToggleFavorite callback, void* userData);
6657777dab0Sopenharmony_ci
6667777dab0Sopenharmony_ci/**
6677777dab0Sopenharmony_ci * @brief Request to unregister toggle favorite callback.
6687777dab0Sopenharmony_ci *
6697777dab0Sopenharmony_ci * @param avsession The avsession instance pointer
6707777dab0Sopenharmony_ci * @param callback the {@link OH_AVSessionCallback_OnToggleFavorite} to be unregistered.
6717777dab0Sopenharmony_ci * @return Function result code:
6727777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SUCCESS} If the execution is successful.
6737777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_SERVICE_EXCEPTION} Internal server error.
6747777dab0Sopenharmony_ci *         {@link AV_SESSION_ERR_INVALID_PARAMETER}
6757777dab0Sopenharmony_ci *                                                 1. The param of avsession is nullptr.
6767777dab0Sopenharmony_ci *                                                 2. The param of callback is nullptr.
6777777dab0Sopenharmony_ci * @since 13
6787777dab0Sopenharmony_ci */
6797777dab0Sopenharmony_ciAVSession_ErrCode OH_AVSession_UnregisterToggleFavoriteCallback(OH_AVSession* avsession,
6807777dab0Sopenharmony_ci    OH_AVSessionCallback_OnToggleFavorite callback);
6817777dab0Sopenharmony_ci
6827777dab0Sopenharmony_ci#ifdef __cplusplus
6837777dab0Sopenharmony_ci}
6847777dab0Sopenharmony_ci#endif
6857777dab0Sopenharmony_ci
6867777dab0Sopenharmony_ci#endif // NATIVE_AVSESSION_H
6877777dab0Sopenharmony_ci/** @} */