1094 lines
42 KiB
C
1094 lines
42 KiB
C
/*
|
|
* Copyright (c) 2020 Amlogic, Inc. All rights reserved.
|
|
*
|
|
* This source code is subject to the terms and conditions defined in the
|
|
* file 'LICENSE' which is part of this source code package.
|
|
*
|
|
* Description:
|
|
*/
|
|
|
|
|
|
|
|
#ifndef AMTSPLAYER_H
|
|
#define AMTSPLAYER_H
|
|
|
|
|
|
#include <stdint.h>
|
|
#include <sys/types.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
typedef uint8_t bool_t;
|
|
/*Call back event type*/
|
|
typedef enum {
|
|
AM_TSPLAYER_EVENT_TYPE_PTS = 0, // pts in for some stream
|
|
AM_TSPLAYER_EVENT_TYPE_DTV_SUBTITLE, // external subtitle of dtv
|
|
AM_TSPLAYER_EVENT_TYPE_USERDATA_AFD, // user data (afd)
|
|
AM_TSPLAYER_EVENT_TYPE_USERDATA_CC, // user data (cc)
|
|
AM_TSPLAYER_EVENT_TYPE_VIDEO_CHANGED, // video format changed
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_CHANGED, // audio format changed
|
|
AM_TSPLAYER_EVENT_TYPE_DATA_LOSS, // demux data loss
|
|
AM_TSPLAYER_EVENT_TYPE_DATA_RESUME, // demux data resume
|
|
AM_TSPLAYER_EVENT_TYPE_SCRAMBLING, // scrambling status changed
|
|
AM_TSPLAYER_EVENT_TYPE_FIRST_FRAME, // first video frame showed
|
|
AM_TSPLAYER_EVENT_TYPE_STREAM_MODE_EOF, //endof stream mode
|
|
AM_TSPLAYER_EVENT_TYPE_DECODE_FIRST_FRAME_VIDEO, //The video decoder outputs the first frame.
|
|
AM_TSPLAYER_EVENT_TYPE_DECODE_FIRST_FRAME_AUDIO, //The audio decoder outputs the first frame.
|
|
AM_TSPLAYER_EVENT_TYPE_AV_SYNC_DONE, //av sync done
|
|
AM_TSPLAYER_EVENT_TYPE_INPUT_VIDEO_BUFFER_DONE, // input video buffer done
|
|
AM_TSPLAYER_EVENT_TYPE_INPUT_AUDIO_BUFFER_DONE, // input audio buffer done
|
|
AM_TSPLAYER_EVENT_TYPE_DECODE_FRAME_ERROR_COUNT, // The video decoder frame error count
|
|
AM_TSPLAYER_EVENT_TYPE_VIDEO_OVERFLOW, //Video amstream buffer overflow
|
|
AM_TSPLAYER_EVENT_TYPE_VIDEO_UNDERFLOW, //Video amstream buffer underflow
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_OVERFLOW, //Audio amstream buffer overflow
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_UNDERFLOW, //Audio amstream buffer underflow
|
|
AM_TSPLAYER_EVENT_TYPE_VIDEO_INVALID_TIMESTAMP, //Video invalid timestamp
|
|
AM_TSPLAYER_EVENT_TYPE_VIDEO_INVALID_DATA, //Video invalid data
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_INVALID_TIMESTAMP, //Audio invalid timestamp
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_INVALID_DATA, //Audio invalid data
|
|
AM_TSPLAYER_EVENT_TYPE_DECODE_VIDEO_UNSUPPORT, // Video is not supported
|
|
AM_TSPLAYER_EVENT_TYPE_PREEMPTED, // Instance was preempted, apk need release this instance
|
|
AM_TSPLAYER_EVENT_TYPE_DECODER_DATA_LOSS, //Decoder data loss
|
|
AM_TSPLAYER_EVENT_TYPE_DECODER_DATA_RESUME, //Decoder data resume
|
|
AM_TSPLAYER_EVENT_TYPE_DECODER_INIT_COMPLETED, //Decoder init completed
|
|
AM_TSPLAYER_EVENT_TYPE_DEMUX_FIRST_PTS, //demux first pts
|
|
AM_TSPLAYER_EVENT_TYPE_AUDIO_FORMAT_CHANGED, // Audio format changed
|
|
AM_TSPLAYER_EVENT_TYPE_FFFB_VIDEO_TIMESTAMP, //FF/FB Current video timestamp
|
|
} am_tsplayer_event_type;
|
|
|
|
|
|
typedef enum {
|
|
AM_TSPLAYER_KEY_AUDIO_PRESENTATION_ID = 0,
|
|
AM_TSPLAYER_KEY_VIDEO_SECLEVEL,
|
|
AM_TSPLAYER_KEY_SET_AUDIO_PATCH_MANAGE_MODE,
|
|
AM_TSPLAYER_KEY_AUDIO_SECLEVEL,
|
|
AM_TSPLAYER_KEY_SET_SPDIF_STATUS,
|
|
AM_TSPLAYER_KEY_SET_VIDEO_RECOVERY_MODE,
|
|
AM_TSPLAYER_KEY_SET_OSD,
|
|
AM_TSPLAYER_KEY_SET_LOGGER_LEVEL,
|
|
AM_TSPLAYER_KEY_SET_WMA_DESCR,
|
|
AM_TSPLAYER_KEY_SET_ES_AUDIO_EXTRA_PARAM,
|
|
AM_TSPLAYER_KEY_SET_STREAM_EOF,
|
|
AM_TSPLAYER_KEY_BOOTPLAY_MODE,
|
|
AM_TSPLAYER_KEY_ENABLE_VFRAME_COUNTER,
|
|
AM_TSPLAYER_KEY_SET_AUDIO_LANG,
|
|
AM_TSPLAYER_KEY_SET_MULTI_VIDEO_SYNC_MODE,
|
|
AM_TSPLAYER_KEY_SET_UNSTABLE_PTS,
|
|
AM_TSPLAYER_KEY_SET_VIDEO_LATENCY,
|
|
AM_TSPLAYER_KEY_SET_MEDIASYNC_CACHE,
|
|
AM_TSPLAYER_KEY_SET_AUDIO_EXTRADATA,
|
|
AM_TSPLAYER_KEY_SET_VIDEO_DECODER_INFO, //iptv: set before startDecoding
|
|
AM_TSPLAYER_KEY_SET_AUDIO_FORMAT,
|
|
AM_TSPLAYER_KEY_GET_DMX_ES_OUTPUT_STATUS, //dmx es output status info
|
|
AM_TSPLAYER_KEY_SET_VIDEO_EXTRADATA,
|
|
AM_TSPLAYER_KEY_SET_MULTI_STREAM_MODE, //video stream and audio stream are separated using multi-instance mode
|
|
AM_TSPLAYER_KEY_SET_MULTI_STREAM_SYNC_ID, //mediasync id for multi-instance mode
|
|
AM_TSPLAYER_KEY_SET_MULTI_STREAM_PARTNERDMXHANDLE, //for multi-instance mode
|
|
AM_TSPLAYER_KEY_GET_MULTI_STREAM_PARTNERDMXHANDLE, //for multi-instance mode
|
|
AM_TSPLAYER_KEY_SET_MEDIASYNC_START_STRATEGY, //iptv
|
|
AM_TSPLAYER_KEY_SET_RESUME_PLAYING_MODE, //milliseconds*90
|
|
AM_TSPLAYER_KEY_SET_SHOWFRAME_BEFORE_AVSYNC_STAGE, //set output first frame before av sync stage. must close first frame no sync effect using this mode
|
|
AM_TSPLAYER_KEY_SET_AUDIO_AC4_PAT,
|
|
AM_TSPLAYER_KEY_SET_START_PLAY_THRESHOLD, //for mediasync start play threshold ms
|
|
AM_TSPLAYER_KEY_GET_VIDEO_DROP_FRAME_INFO,
|
|
AM_TSPLAYER_KEY_SET_AUDIO_PATCH_ADDRESS,
|
|
AM_TSPLAYER_KEY_GET_VIDEO_RATIO_INFO,
|
|
AM_TSPLAYER_KEY_RCOVERY_MODE,
|
|
AM_TSPLAYER_KEY_FAST_VIDEO_STATE_ENABLE,
|
|
AM_TSPLAYER_KEY_SET_VIDEO_CACHE, //ms
|
|
AM_TSPLAYER_KEY_SET_AUDIO_CACHE, //ms
|
|
} am_tsplayer_parameter;
|
|
|
|
typedef enum {
|
|
AUDIO_PATCH_MANAGE_AUTO = -1,
|
|
AUDIO_PATCH_MANAGE_FORCE_DISABLE,
|
|
AUDIO_PATCH_MANAGE_FORCE_ENABLE,
|
|
} am_tsplayer_audio_patch_manage_mode;
|
|
|
|
typedef enum {
|
|
AM_TSPLAYER_KEY_VIDEO_STATE = 0,
|
|
} am_tsplayer_state_type;
|
|
|
|
typedef enum {
|
|
AM_TSPLAYER_KEY_SPDIF_MODE_NONE = 0,
|
|
AM_TSPLAYER_KEY_SPDIF_MODE_NEVER = 1,
|
|
AM_TSPLAYER_KEY_SPDIF_MODE_ONCE = 2,
|
|
} am_tsplayer_spdif_mode;
|
|
|
|
typedef struct {
|
|
uint8_t *data;
|
|
size_t data_len;
|
|
size_t actual_len;
|
|
} am_tsplayer_state_t;
|
|
|
|
typedef struct {
|
|
uint32_t width;
|
|
uint32_t height;
|
|
int double_write;
|
|
int margin;
|
|
int32_t reserved[2];
|
|
} am_tsplayer_video_decoder_info;
|
|
|
|
typedef struct {
|
|
uint32_t theory_drop_frame_cnt; //theoretical drop frame number of the video pipeline
|
|
uint32_t reserved[5];
|
|
} am_tsplayer_drop_frame_info;
|
|
|
|
/*Call back event mask*/
|
|
#define AM_TSPLAYER_EVENT_TYPE_PTS_MASK (1 << AM_TSPLAYER_EVENT_TYPE_PTS)
|
|
#define AM_TSPLAYER_EVENT_TYPE_DTV_SUBTITLE_MASK (1 << AM_TSPLAYER_EVENT_TYPE_DTV_SUBTITLE)
|
|
#define AM_TSPLAYER_EVENT_TYPE_USERDATA_AFD_MASK (1 << AM_TSPLAYER_EVENT_TYPE_USERDATA_AFD)
|
|
#define AM_TSPLAYER_EVENT_TYPE_USERDATA_CC_MASK (1 << AM_TSPLAYER_EVENT_TYPE_USERDATA_CC)
|
|
#define AM_TSPLAYER_EVENT_TYPE_VIDEO_CHANGED_MASK (1 << AM_TSPLAYER_EVENT_TYPE_VIDEO_CHANGED)
|
|
#define AM_TSPLAYER_EVENT_TYPE_AUDIO_CHANGED_MASK (1 << AM_TSPLAYER_EVENT_TYPE_AUDIO_CHANGED)
|
|
#define AM_TSPLAYER_EVENT_TYPE_DATA_LOSS_MASK (1 << AM_TSPLAYER_EVENT_TYPE_DATA_LOSS)
|
|
#define AM_TSPLAYER_EVENT_TYPE_DATA_RESUME_MASK (1 << AM_TSPLAYER_EVENT_TYPE_DATA_RESUME)
|
|
#define AM_TSPLAYER_EVENT_TYPE_SCRAMBLING_MASK (1 << AM_TSPLAYER_EVENT_TYPE_SCRAMBLING)
|
|
#define AM_TSPLAYER_EVENT_TYPE_FIRST_FRAME_MASK (1 << AM_TSPLAYER_EVENT_TYPE_FIRST_FRAME)
|
|
|
|
|
|
/*extend mask*/
|
|
#define AM_TSPLAYER_STREAM_ONLY_VIDEO_MASK (1<<0)
|
|
|
|
/*Secure level which should be consistent with definition of dmx.h*/
|
|
#define AM_TSPLAYER_DMX_FILTER_SEC_LEVEL1 (1 << 10)
|
|
#define AM_TSPLAYER_DMX_FILTER_SEC_LEVEL2 (2 << 10)
|
|
#define AM_TSPLAYER_DMX_FITLER_SEC_LEVEL3 (3 << 10)
|
|
#define AM_TSPLAYER_DMX_FILTER_SEC_LEVEL4 (4 << 10)
|
|
#define AM_TSPLAYER_DMX_FILTER_SEC_LEVEL5 (5 << 10)
|
|
#define AM_TSPLAYER_DMX_FITLER_SEC_LEVEL6 (6 << 10)
|
|
#define AM_TSPLAYER_DMX_FITLER_SEC_LEVEL7 (7 << 10)
|
|
|
|
/*Function return type*/
|
|
typedef enum {
|
|
AM_TSPLAYER_OK = 0, // OK
|
|
AM_TSPLAYER_ERROR_INVALID_PARAMS = -1, // Parameters invalid
|
|
AM_TSPLAYER_ERROR_INVALID_OPERATION = -2, // Operation invalid
|
|
AM_TSPLAYER_ERROR_INVALID_OBJECT = -3, // Object invalid
|
|
AM_TSPLAYER_ERROR_RETRY = -4, // Retry
|
|
AM_TSPLAYER_ERROR_BUSY = -5, // Device busy
|
|
AM_TSPLAYER_ERROR_END_OF_STREAM = -6, // End of stream
|
|
AM_TSPLAYER_ERROR_IO = -7, // Io error
|
|
AM_TSPLAYER_ERROR_WOULD_BLOCK = -8, // Blocking error
|
|
AM_TSPLAYER_ERROR_MAX = -254
|
|
} am_tsplayer_result;
|
|
|
|
/*Data input source type*/
|
|
typedef enum
|
|
{
|
|
TS_DEMOD = 0, // TS Data input from demod
|
|
TS_MEMORY = 1, // TS Data input from memory
|
|
ES_MEMORY = 2, // ES Data input from memory
|
|
TS_USB_CAMCARD = 3, // TS Data input from usb camcard
|
|
} am_tsplayer_input_source_type;
|
|
|
|
/*Input buffer type*/
|
|
typedef enum {
|
|
TS_INPUT_BUFFER_TYPE_NORMAL = 0, // Input buffer is normal buffer
|
|
TS_INPUT_BUFFER_TYPE_SECURE = 1, // Input buffer is secure buffer
|
|
TS_INPUT_BUFFER_TYPE_TVP = 2 // Input buffer is normal but tvp enable
|
|
} am_tsplayer_input_buffer_type;
|
|
|
|
/*AmTsPlayer input buffer type*/
|
|
typedef struct {
|
|
am_tsplayer_input_buffer_type buf_type;// Input buffer type (secure/no secure)
|
|
void *buf_data; // Input buffer addr
|
|
int32_t buf_size; // Input buffer size
|
|
uint64_t pts; //frame pts,using only for frame mode
|
|
int32_t isvideo;
|
|
} am_tsplayer_input_frame_buffer;
|
|
|
|
/*Ts stream type*/
|
|
typedef enum {
|
|
TS_STREAM_VIDEO = 0, // Video
|
|
TS_STREAM_AUDIO = 1, // Audio
|
|
TS_STREAM_AD = 2, // Audio description
|
|
TS_STREAM_SUB = 3, // Subtitle
|
|
} am_tsplayer_stream_type;
|
|
|
|
/*Ts media time type*/
|
|
typedef enum {
|
|
TS_MEDIA_TIME_VIDEO = 0, //Video
|
|
TS_MEDIA_TIME_AUDIO = 1, //Audio
|
|
TS_MEDIA_TIME_PCR = 2, //PCR
|
|
TS_MEDIA_TIME_STC = 3, //System time clock
|
|
TS_MEDIA_TIME_MAX,
|
|
} am_tsplayer_media_time_type;
|
|
|
|
/*Ts time type*/
|
|
typedef enum {
|
|
TS_UNIT_MS = 0,
|
|
TS_UNIT_US,
|
|
TS_UNIT_PTS,
|
|
TS_UNIT_MAX,
|
|
} am_tsplayer_time_unit;
|
|
|
|
/*Avsync mode*/
|
|
typedef enum {
|
|
TS_SYNC_VMASTER = 0, // Video Master
|
|
TS_SYNC_AMASTER = 1, // Audio Master
|
|
TS_SYNC_PCRMASTER = 2, // PCR Master
|
|
TS_SYNC_NOSYNC = 3 // Free run
|
|
} am_tsplayer_avsync_mode;
|
|
|
|
/*Player working mode*/
|
|
typedef enum {
|
|
TS_PLAYER_MODE_NORMAL = 0, // Normal mode
|
|
TS_PLAYER_MODE_CACHING_ONLY = 1, // Only caching data, do not decode. Used in FCC
|
|
TS_PLAYER_MODE_DECODE_ONLY = 2 // Decode data but do not output
|
|
} am_tsplayer_work_mode;
|
|
|
|
/*Audio stereo output mode*/
|
|
typedef enum {
|
|
AV_AUDIO_STEREO = 0, // Stereo mode
|
|
AV_AUDIO_LEFT = 1, // Output left channel
|
|
AV_AUDIO_RIGHT = 2, // Output right channel
|
|
AV_AUDIO_SWAP = 3, // Swap left and right channel
|
|
AV_AUDIO_LRMIX = 4, // mix left and right channel
|
|
AV_AUDIO_JOINT_STEREO = 5, // Joint stereo mode
|
|
} am_tsplayer_audio_stereo_mode;
|
|
|
|
/*Audio Output mode*/
|
|
typedef enum {
|
|
AV_AUDIO_OUT_PCM = 0, // PCM out
|
|
AV_AUDIO_OUT_PASSTHROUGH = 1, // Passthrough out
|
|
AV_AUDIO_OUT_AUTO = 2, // Auto
|
|
} am_tsplayer_audio_out_mode;
|
|
|
|
/*Video decoder trick mode*/
|
|
typedef enum {
|
|
AV_VIDEO_TRICK_MODE_NONE = 0, // Disable trick mode
|
|
AV_VIDEO_TRICK_MODE_PAUSE = 1, // Pause the video decoder
|
|
AV_VIDEO_TRICK_MODE_PAUSE_NEXT = 2, // Pause the video decoder when a new frame displayed
|
|
AV_VIDEO_TRICK_MODE_IONLY = 3, // Decoding and Out I frame only
|
|
AV_VIDEO_TRICK_MODE_IONLY_AVSYNC_BYPASS = 4 // Decoding and Out I frame only, bypass mediasync to playback
|
|
} am_tsplayer_video_trick_mode;
|
|
|
|
/*Video display match mode*/
|
|
typedef enum {
|
|
AV_VIDEO_MATCH_MODE_NONE = 0, // Keep original
|
|
AV_VIDEO_MATCH_MODE_FULLSCREEN = 1, // Stretch the video to the full window
|
|
AV_VIDEO_MATCH_MODE_LETTER_BOX = 2, // Letter box match mode
|
|
AV_VIDEO_MATCH_MODE_PAN_SCAN = 3, // Pan scan match mode
|
|
AV_VIDEO_MATCH_MODE_COMBINED = 4, // Combined pan scan and letter box
|
|
AV_VIDEO_MATCH_MODE_WIDTHFULL = 5, // Stretch the video width to the full window
|
|
AV_VIDEO_MATCH_MODE_HEIGHTFULL = 6, // Stretch the video height to the full window
|
|
AV_VIDEO_WIDEOPTION_4_3_LETTER_BOX = 7,
|
|
AV_VIDEO_WIDEOPTION_4_3_PAN_SCAN = 8,
|
|
AV_VIDEO_WIDEOPTION_4_3_COMBINED = 9,
|
|
AV_VIDEO_WIDEOPTION_16_9_IGNORE = 10,
|
|
AV_VIDEO_WIDEOPTION_16_9_LETTER_BOX = 11,
|
|
AV_VIDEO_WIDEOPTION_16_9_PAN_SCAN = 12,
|
|
AV_VIDEO_WIDEOPTION_16_9_COMBINED = 13,
|
|
AV_VIDEO_WIDEOPTION_CUSTOM = 14
|
|
} am_tsplayer_video_match_mode;
|
|
|
|
/*Video decoder type*/
|
|
typedef enum {
|
|
AV_VIDEO_CODEC_AUTO = 0, // Unknown video type (Unsupport)
|
|
AV_VIDEO_CODEC_MPEG1 = 1, // MPEG1
|
|
AV_VIDEO_CODEC_MPEG2 = 2, // MPEG2
|
|
AV_VIDEO_CODEC_H264 = 3, // H264
|
|
AV_VIDEO_CODEC_H265 = 4, // H265
|
|
AV_VIDEO_CODEC_VP9 = 5, // VP9
|
|
AV_VIDEO_CODEC_AVS = 6, // AVS
|
|
AV_VIDEO_CODEC_MPEG4 = 7, // MPEG4
|
|
AV_VIDEO_CODEC_AVS2 = 8, // AVS2
|
|
AV_VIDEO_CODEC_MJPEG = 9, // MJPEG
|
|
AV_VIDEO_CODEC_DVES_AVC = 10, // DVES_AVC
|
|
AV_VIDEO_CODEC_DVES_HEVC = 11, // DVES_HEVC
|
|
AV_VIDEO_CODEC_AVS3 = 12, // AVS3
|
|
AV_VIDEO_CODEC_AV1 = 13, // AV1 (Only support on frame mode)
|
|
AV_VIDEO_CODEC_VC1 = 14, // VC1 (Only support on frame mode)
|
|
AV_VIDEO_CODEC_H266 = 15, // H266
|
|
AV_VIDEO_CODEC_MAX = 1000, // Out of range type (Unsupport)
|
|
} am_tsplayer_video_codec;
|
|
|
|
/*Audio decoder type*/
|
|
typedef enum {
|
|
AV_AUDIO_CODEC_AUTO = 0, // Unknown audio type (Unsupport)
|
|
AV_AUDIO_CODEC_MP2 = 1, // MPEG audio
|
|
AV_AUDIO_CODEC_MP3 = 2, // MP3
|
|
AV_AUDIO_CODEC_AC3 = 3, // AC3
|
|
AV_AUDIO_CODEC_EAC3 = 4, // DD PLUS
|
|
AV_AUDIO_CODEC_DTS = 5, // DD PLUS
|
|
AV_AUDIO_CODEC_AAC = 6, // AAC
|
|
AV_AUDIO_CODEC_LATM = 7, // AAC LATM
|
|
AV_AUDIO_CODEC_PCM = 8, // PCM
|
|
AV_AUDIO_CODEC_AC4 = 9, // AC4
|
|
AV_AUDIO_CODEC_DRA = 10, // DRA
|
|
AV_AUDIO_CODEC_FLAC = 11, // FLAC
|
|
AV_AUDIO_CODEC_VORBIS = 12, // VORBIS
|
|
AV_AUDIO_CODEC_OPUS = 13, // OPUS
|
|
AV_AUDIO_CODEC_WMAV1 = 14, // WMAV1
|
|
AV_AUDIO_CODEC_WMAV2 = 15, // WMAV 2
|
|
AV_AUDIO_CODEC_WMAPRO = 16, // WMAV pro
|
|
AV_AUDIO_CODEC_WMALOSSLESS = 17, // WMAV loss less
|
|
AV_AUDIO_CODEC_PCM_U8 = 18, //PCM U8
|
|
AV_AUDIO_CODEC_AV3A = 19, // AVS3-P3 3D Audio/Audio Vivid Audio Codec ID
|
|
AV_AUDIO_CODEC_PCM_ADPCM_IMA_WAV = 20, //ADPCM IMA WAV
|
|
AV_AUDIO_CODEC_PCM_S16LE = 21, // PCM S16LE
|
|
AV_AUDIO_CODEC_PCM_S16BE = 22, // PCM S16BE
|
|
AV_AUDIO_CODEC_PCM_S24LE = 23, // PCM S24LE
|
|
AV_AUDIO_CODEC_PCM_S24BE = 24, // PCM S24BE
|
|
AV_AUDIO_CODEC_TRUEHD = 25, // TRUEHD
|
|
AV_AUDIO_CODEC_ALAC = 26, // ALAC
|
|
AV_AUDIO_CODEC_AMR = 27, // AMR
|
|
AV_AUDIO_CODEC_ADPCM_MS = 28, // ADPCM MS
|
|
AV_AUDIO_CODEC_PCMALAW = 29, // PCM ALAW
|
|
AV_AUDIO_CODEC_PCMMULAW = 30, // PCM MULAW
|
|
AV_AUDIO_CODEC_HE_AAC_V1 = 31, // HE AAC_V1
|
|
AV_AUDIO_CODEC_HE_AAC_V2 = 32, // HE AAC_V2
|
|
AV_AUDIO_CODEC_MPEGH = 33, // MPEGH
|
|
AV_AUDIO_CODEC_MAX = 1000, // Out of range type (Unsupport)
|
|
} am_tsplayer_audio_codec;
|
|
|
|
/*AmTsPlayer handle*/
|
|
typedef size_t am_tsplayer_handle;
|
|
|
|
/*AmTsPlayer init parameters*/
|
|
typedef struct {
|
|
am_tsplayer_input_source_type source; // Input source type
|
|
am_tsplayer_input_buffer_type drmmode; // Input buffer type (normal, secure, tvp)
|
|
int32_t dmx_dev_id; // Demux device id
|
|
int32_t event_mask; // Mask the event type need by caller
|
|
} am_tsplayer_init_params;
|
|
|
|
/*AmTsPlayer input buffer type*/
|
|
typedef struct {
|
|
am_tsplayer_input_buffer_type buf_type;// Input buffer type (secure/no secure)
|
|
void *buf_data; // Input buffer addr
|
|
int32_t buf_size; // Input buffer size
|
|
} am_tsplayer_input_buffer;
|
|
|
|
/*AmTsPlayer video init parameters*/
|
|
typedef struct {
|
|
am_tsplayer_video_codec codectype; // Video codec type
|
|
int32_t pid; // Video pid in ts
|
|
} am_tsplayer_video_params;
|
|
|
|
/*AmTsPlayer audio init parameters*/
|
|
typedef struct {
|
|
am_tsplayer_audio_codec codectype; // Audio codec type
|
|
int32_t pid; // Audio pid in ts
|
|
int32_t seclevel; // Audio security seclevel
|
|
} am_tsplayer_audio_params;
|
|
|
|
/*AmTsPlayer stream buffer status*/
|
|
typedef struct {
|
|
int32_t size; // Buffer size
|
|
int32_t data_len; // The len of data in buffer
|
|
int32_t free_len; // The len of free in buffer
|
|
} am_tsplayer_buffer_stat;
|
|
|
|
/*Video basic information*/
|
|
typedef struct {
|
|
uint32_t width; // Video frame width
|
|
uint32_t height; // Video frame height
|
|
uint32_t framerate; // Video frame rate
|
|
uint32_t bitrate; // Video bit rate
|
|
uint64_t ratio64; // Video aspect ratio
|
|
} am_tsplayer_video_info;
|
|
|
|
/*Video qos information*/
|
|
typedef struct {
|
|
uint32_t num;
|
|
uint32_t type;
|
|
uint32_t size;
|
|
uint32_t pts;
|
|
uint32_t max_qp;
|
|
uint32_t avg_qp;
|
|
uint32_t min_qp;
|
|
uint32_t max_skip;
|
|
uint32_t avg_skip;
|
|
uint32_t min_skip;
|
|
uint32_t max_mv;
|
|
uint32_t min_mv;
|
|
uint32_t avg_mv;
|
|
uint32_t decode_buffer;
|
|
} am_tsplayer_video_qos;
|
|
|
|
/*Video decoder real time information*/
|
|
typedef struct {
|
|
am_tsplayer_video_qos qos;
|
|
uint32_t decode_time_cost;/*us*/
|
|
uint32_t frame_width;
|
|
uint32_t frame_height;
|
|
uint32_t frame_rate;
|
|
uint32_t bit_depth_luma;//original bit_rate;
|
|
uint32_t frame_dur;
|
|
uint32_t bit_depth_chroma;//original frame_data;
|
|
uint32_t error_count;
|
|
uint32_t status;
|
|
uint32_t frame_count;
|
|
uint32_t error_frame_count;
|
|
uint32_t drop_frame_count;
|
|
uint64_t total_data;
|
|
uint32_t double_write_mode;//original samp_cnt;
|
|
uint32_t offset;
|
|
uint32_t ratio_control;
|
|
uint32_t vf_type;
|
|
uint32_t signal_type;
|
|
uint32_t pts;
|
|
uint64_t pts_us64;
|
|
} am_tsplayer_vdec_stat;
|
|
|
|
/*Audio basic information*/
|
|
typedef struct {
|
|
uint32_t sample_rate; // Audio sample rate
|
|
uint32_t channels; // Audio channels
|
|
uint32_t channel_mask; // Audio channel mask
|
|
uint32_t bitrate; // Audio bit rate
|
|
} am_tsplayer_audio_info;
|
|
|
|
/*Audio decoder real time information*/
|
|
typedef struct {
|
|
uint32_t frame_count;
|
|
uint32_t error_frame_count;
|
|
uint32_t drop_frame_count;
|
|
} am_tsplayer_adec_stat;
|
|
|
|
typedef struct {
|
|
int sar_width; /* -1 :invalid value*/
|
|
int sar_height;
|
|
int dar_width;
|
|
int dar_height;
|
|
} am_tsplayer_aspect_ratio_info;
|
|
|
|
typedef struct {
|
|
uint32_t frame_width;
|
|
uint32_t frame_height;
|
|
uint32_t frame_rate;
|
|
uint32_t frame_aspectratio;
|
|
} am_tsplayer_video_format_t;
|
|
|
|
typedef struct {
|
|
uint32_t sample_rate;
|
|
uint32_t channels;
|
|
} am_tsplayer_audio_format_t;
|
|
|
|
typedef struct {
|
|
uint32_t size;
|
|
void* data;
|
|
} am_tsplayer_event_data;
|
|
|
|
typedef struct {
|
|
int32_t first_lang;
|
|
int32_t second_lang;
|
|
} am_tsplayer_audio_lang;
|
|
|
|
typedef struct {
|
|
am_tsplayer_stream_type stream_type;
|
|
uint64_t pts;
|
|
} am_tsplayer_pts_t;
|
|
|
|
typedef struct {
|
|
uint8_t *data;
|
|
size_t len;
|
|
} mpeg_user_data_t;
|
|
|
|
typedef struct {
|
|
am_tsplayer_stream_type stream_type;
|
|
bool_t scramling;
|
|
} scamling_t;
|
|
|
|
typedef struct {
|
|
uint32_t video_overflow_num; // Video overflow num
|
|
uint32_t video_underflow_num; // Video underflow num
|
|
uint32_t audio_overflow_num; // Audio overflow num
|
|
uint32_t audio_underflow_num; // Audio underflow num
|
|
} av_flow_t;
|
|
|
|
typedef struct {
|
|
int video_es_stat; //0x2(pts is valid), 0x4(Descrambling failed), 0x8(no unscrambled)
|
|
int audio_es_stat; //audio es status, as same video
|
|
} dmx_es_output_stat;
|
|
|
|
/*AmTsPlayer call back event*/
|
|
typedef struct {
|
|
am_tsplayer_event_type type; // Call back event type
|
|
union {
|
|
/*If type is VIDEO_CHANGED send new video basic info*/
|
|
am_tsplayer_video_format_t video_format;
|
|
/*If type is AUDIO_CHANGED send new video basic info*/
|
|
am_tsplayer_audio_format_t audio_format;
|
|
/*Audio /Video/Subtitle pts after pes parser*/
|
|
am_tsplayer_pts_t pts;
|
|
/*User data send cc /afd /dvb subtitle to caller*/
|
|
mpeg_user_data_t mpeg_user_data;
|
|
/*Scrambling status changed send scramling info to caller*/
|
|
scamling_t scramling;
|
|
/*callback audio/video input buffer ptr*/
|
|
void* bufptr;
|
|
/*If Audio/Video overflow/underflow count the num*/
|
|
av_flow_t av_flow_cnt;
|
|
/*event data*/
|
|
am_tsplayer_event_data data;
|
|
} event;
|
|
}am_tsplayer_event;
|
|
|
|
/*AmTsPlayer holdvideo init parameters*/
|
|
typedef struct {
|
|
int on;//if 1 means on, 0 means off
|
|
int64_t value; //the reserved value may be passed to pts in the future. If it is invalid, please set -1
|
|
} am_tsplayer_holdvideo_params;
|
|
|
|
/*Event call back function ptr*/
|
|
typedef void (*event_callback) (void *user_data, am_tsplayer_event *event);
|
|
|
|
|
|
/**
|
|
*\brief: Create AmTsPlayer instance.
|
|
* Set inputmode demux_id and event mask to AmTsPlayer.
|
|
*\inparam: Init params with input mode demux_id and event mask.
|
|
*\outparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_create(am_tsplayer_init_params Params, am_tsplayer_handle *pHadl);
|
|
/**
|
|
*\brief: Get AmTsPlayer interface version information.
|
|
*\outparam: AmTsPlayer interface version.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getVersion(uint32_t *versionM,
|
|
uint32_t *VersionL);
|
|
/**
|
|
*\brief: Get the instance number of specified AmTsPlayer .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: AmTsPlayer instance number.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getInstansNo(am_tsplayer_handle Hadl, uint32_t *Numb);
|
|
|
|
/**
|
|
*\brief: Get the sync instance number of specified AmTsPlayer .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: AmTsPlayer instance number.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getSyncInstansNo(am_tsplayer_handle Hadl,
|
|
int32_t *Numb);
|
|
|
|
/**
|
|
*\brief: Register event callback to specified AmTsPlayer
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Event callback function ptr.
|
|
*\inparam: Extra data ptr.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_registerCb(am_tsplayer_handle Hadl, event_callback pfunc, void *param);
|
|
/**
|
|
*\brief: Get event callback to specified AmTsPlayer
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: ptr of Event callback function ptr.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getCb(am_tsplayer_handle Hadl, event_callback *pfunc, void* *ppParam);
|
|
/**
|
|
*\brief: Release specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_release(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Write data to specified AmTsPlayer instance.
|
|
* It will only work when TS input's source type is TS_MEMORY.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Input buffer struct (1.Buffer type:secrue/no
|
|
* 2.secure buffer ptr 3.buffer len).
|
|
*\inparam: Time out limit .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
|
|
/**
|
|
*\brief: Write Frame data to specified AmTsPlayer instance.
|
|
* It will only work when TS input's source type is TS_MEMORY.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Input buffer struct (1.Buffer type:secrue/no
|
|
* 2.secure buffer ptr 3.buffer len).
|
|
*\inparam: Time out limit .
|
|
*\inparam: AV_type(0 means audio, 1 means video)
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_writeFrameData(am_tsplayer_handle Hadl,
|
|
am_tsplayer_input_frame_buffer *buf,
|
|
uint64_t timeout_ms);
|
|
|
|
am_tsplayer_result AmTsPlayer_writeData(am_tsplayer_handle Hadl, am_tsplayer_input_buffer *buf, uint64_t timeout_ms);
|
|
/**
|
|
*\brief: Set work mode to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The enum of work mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setWorkMode (am_tsplayer_handle Hadl, am_tsplayer_work_mode mode);
|
|
|
|
/*AV sync*/
|
|
/**
|
|
*\brief: Get the playing time of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Playing time.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getCurrentTime(am_tsplayer_handle Hadl, int64_t *time);
|
|
|
|
/**
|
|
*\brief: Get the pts of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: stream type.
|
|
*\outparam: pts.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getPts(am_tsplayer_handle Hadl, am_tsplayer_stream_type StrType, uint64_t *pts);
|
|
|
|
/**
|
|
*\brief: Get the time of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: stream type.
|
|
*\outparam: pts.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getMediaTime(am_tsplayer_handle Hadl, am_tsplayer_media_time_type mediaTimeType, am_tsplayer_time_unit tunit, uint64_t *time);
|
|
|
|
/**
|
|
*\brief: Get the first pts of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: stream type.
|
|
*\outparam: pts.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getFirstPts(am_tsplayer_handle Hadl, am_tsplayer_stream_type StrType, uint64_t *pts);
|
|
|
|
/**
|
|
*\brief: Set the tsync mode for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The enum of avsync mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setSyncMode(am_tsplayer_handle Hadl, am_tsplayer_avsync_mode mode );
|
|
/**
|
|
*\brief: Get the tsync mode for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The avsync mode of specified AmTsPlayer instance.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getSyncMode(am_tsplayer_handle Hadl, am_tsplayer_avsync_mode *mode );
|
|
/**
|
|
*\brief: Set pcr pid to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The pid of pcr.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setPcrPid(am_tsplayer_handle Hadl, uint32_t pid);
|
|
/**
|
|
*\brief: Get the dealy time for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The AmTsPlayer delay time.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getDelayTime(am_tsplayer_handle Hadl, int64_t *time);
|
|
|
|
|
|
/*Player control interface*/
|
|
/**
|
|
*\brief: Start Fast play for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Fast play speed.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_startFast(am_tsplayer_handle Hadl, float scale);
|
|
/**
|
|
*\brief: Stop Fast play for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_stopFast(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Get Fast play speed from specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Fast play speed
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getFastRate(am_tsplayer_handle Hadl, float* scale);
|
|
/**
|
|
*\brief: Start trick mode for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The enum of trick mode type
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setTrickMode(am_tsplayer_handle Hadl, am_tsplayer_video_trick_mode trickmode);
|
|
/**
|
|
*\brief: Start trick mode for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The stream type we want to check.
|
|
*\outparam: The struct of buffer status.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getBufferStat(am_tsplayer_handle Hadl, am_tsplayer_stream_type StrType,
|
|
am_tsplayer_buffer_stat *pBufStat);
|
|
|
|
/*Video interface*/
|
|
/**
|
|
*\brief: Set the video display rect size for specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The display rect x.
|
|
*\inparam: The display rect y.
|
|
*\inparam: The display rect width.
|
|
*\inparam: The display rect height.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setVideoWindow(am_tsplayer_handle Hadl,
|
|
int32_t x,int32_t y,
|
|
int32_t width,int32_t height);
|
|
|
|
/*Video interface*/
|
|
/**
|
|
*\brief: Set the video crop rect size for specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The video crop rect left..
|
|
*\inparam: The video crop rect top..
|
|
*\inparam: The video crop rect right..
|
|
*\inparam: The video crop rect bottom..
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setVideoCrop(am_tsplayer_handle Hadl,
|
|
int32_t left,
|
|
int32_t top,
|
|
int32_t right,
|
|
int32_t bottom);
|
|
|
|
/**
|
|
*\brief: Set Surface ptr to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Surface ptr
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setSurface(am_tsplayer_handle Hadl, void* pSurface);
|
|
/**
|
|
*\brief: Show the video frame display for specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_showVideo(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Hide the video frame display for specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_hideVideo(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Get video display match mode for specified
|
|
AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The enum of video display match mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setVideoMatchMode(am_tsplayer_handle Hadl, am_tsplayer_video_match_mode MathMod);
|
|
/**
|
|
*\brief: Set video params need by demuxer and video decoder
|
|
* for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Params need by demuxer and video decoder.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setVideoParams(am_tsplayer_handle Hadl, am_tsplayer_video_params *pParams);
|
|
/**
|
|
*\brief: Set if need keep last frame for video display
|
|
* for specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: If blackout for last frame.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setVideoBlackOut(am_tsplayer_handle Hadl, bool_t blackout);
|
|
/**
|
|
*\brief: Get video basic info of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of video basic info struct .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getVideoInfo(am_tsplayer_handle Hadl, am_tsplayer_video_info *pInfo);
|
|
/**
|
|
*\brief: Get video decoder real time info
|
|
* of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of video decoder real time info struct
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getVideoStat(am_tsplayer_handle Hadl, am_tsplayer_vdec_stat *pStat);
|
|
/**
|
|
*\brief: Start video decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_startVideoDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Pause video decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_pauseVideoDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Resume video decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_resumeVideoDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Stop video decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_stopVideoDecoding(am_tsplayer_handle Hadl);
|
|
|
|
|
|
/*Audio interface*/
|
|
/**
|
|
*\brief: Set audio volume to specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setAudioVolume(am_tsplayer_handle Hadl, int32_t volume);
|
|
/**
|
|
*\brief: Get audio volume value from specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getAudioVolume(am_tsplayer_handle Hadl, int32_t *volume);
|
|
|
|
/*Audio interface*/
|
|
/**
|
|
*\brief: Set AD volume to specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setADVolume(am_tsplayer_handle Hadl, int32_t volume);
|
|
/**
|
|
*\brief: Get AD volume value from specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getADVolume(am_tsplayer_handle Hadl, int32_t *volume);
|
|
|
|
/**
|
|
*\brief: Set audio stereo mode to specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Stereo mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setAudioStereoMode(am_tsplayer_handle Hadl, am_tsplayer_audio_stereo_mode Mode);
|
|
/**
|
|
*\brief: Get audio stereo mode to specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Stereo mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getAudioStereoMode(am_tsplayer_handle Hadl, am_tsplayer_audio_stereo_mode *pMode);
|
|
/**
|
|
*\brief: Set audio output mute to specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: If analog mute or unmute .
|
|
*\inparam: If digital mute or unmute .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setAudioMute(am_tsplayer_handle Hadl, bool_t analog_mute, bool_t digital_mute);
|
|
/**
|
|
*\brief: Get audio output mute status from specified
|
|
AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: If analog mute or unmute .
|
|
*\outparam: If digital mute or unmute .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getAudioMute(am_tsplayer_handle Hadl, bool_t *analog_unmute, bool_t *digital_unmute);
|
|
/**
|
|
*\brief: Set audio params need by demuxer and audio decoder
|
|
* to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Params need by demuxer and audio decoder.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setAudioParams(am_tsplayer_handle Hadl, am_tsplayer_audio_params *pParams);
|
|
/**
|
|
*\brief: Set audio output mode to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Enum of audio output mode.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setAudioOutMode(am_tsplayer_handle Hadl, am_tsplayer_audio_out_mode Mode);
|
|
/**
|
|
*\brief: Get audio basic info of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of audio basic info struct .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getAudioInfo(am_tsplayer_handle Hadl, am_tsplayer_audio_info *pInfo);
|
|
/**
|
|
*\brief: Get audio decoder real time info
|
|
* of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of audio decoder real time info struct
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getAudioStat(am_tsplayer_handle Hadl, am_tsplayer_adec_stat *pStat);
|
|
/**
|
|
*\brief: Start audio decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_startAudioDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Pause audio decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_pauseAudioDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Resume audio decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_resumeAudioDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Stop audio decoding for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_stopAudioDecoding(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Set audio description params need by demuxer
|
|
* and audio decoder to specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Params need by demuxer and audio decoder.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setADParams(am_tsplayer_handle Hadl, am_tsplayer_audio_params *pParams);
|
|
|
|
/*Audio description interface*/
|
|
/**
|
|
*\brief: Set audio description mix level (master vol and ad vol)
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: Master volume value.
|
|
*\inparam: Slave volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setADMixLevel(am_tsplayer_handle Hadl, int32_t master_vol, int32_t slave_vol);
|
|
/**
|
|
*\brief: Get audio description mix level (master vol and ad vol)
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: Master volume value.
|
|
*\outparam: Slave volume value.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getADMixLevel(am_tsplayer_handle Hadl, int32_t *master_vol, int32_t *slave_vol);
|
|
/**
|
|
*\brief: Enable audio description mix with master audio
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_enableADMix(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Disable audio description mix with master audio
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_disableADMix(am_tsplayer_handle Hadl);
|
|
|
|
/**
|
|
*\brief: Enable audio ad dual decoder support
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_enableADDuabl(am_tsplayer_handle Hadl);
|
|
|
|
/**
|
|
*\brief: Disable audio ad dual decoder support
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_disableADDual(am_tsplayer_handle Hadl);
|
|
|
|
/**
|
|
*\brief: Get audio description basic info of specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of audio basic info struct .
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getADInfo(am_tsplayer_handle Hadl, am_tsplayer_audio_info *pInfo);
|
|
/**
|
|
*\brief: Get audio description decoder real time info
|
|
* of specified AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\outparam: The ptr of audio decoder real time info struct
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getADStat(am_tsplayer_handle Hadl, am_tsplayer_adec_stat *pStat);
|
|
|
|
/*Subtitle interface*/
|
|
/**
|
|
*\brief: Set subtitle pid for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\inparam: The pid of subtitle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setSubPid(am_tsplayer_handle Hadl, uint32_t pid);
|
|
|
|
/**
|
|
*\brief: get Params for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getParams(am_tsplayer_handle Hadl,am_tsplayer_parameter type, void* arg);
|
|
|
|
/**
|
|
*\brief: set Params for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_setParams(am_tsplayer_handle Hadl,am_tsplayer_parameter type, void* arg);
|
|
|
|
/**
|
|
*\brief: get State for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_getState(am_tsplayer_handle Hadl,am_tsplayer_state_t* state);
|
|
|
|
/**
|
|
*\brief: Start subtitle for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_startSub(am_tsplayer_handle Hadl);
|
|
/**
|
|
*\brief: Stop subtitle for specified AmTsPlayer instance .
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_stopSub(am_tsplayer_handle Hadl);
|
|
|
|
/**
|
|
*\brief: hold the video frame display for specified
|
|
* AmTsPlayer instance.
|
|
*\inparam: AmTsPlayer handle.
|
|
*\return: The AmTsPlayer result.
|
|
*/
|
|
am_tsplayer_result AmTsPlayer_holdVideo(am_tsplayer_handle Hadl, am_tsplayer_holdvideo_params *pParams);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|