143 lines
4.8 KiB
C
143 lines
4.8 KiB
C
/*
|
|||
|
|
* Copyright (C) 2018 Amlogic Corporation.
|
||
|
|
*
|
||
|
|
* 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.
|
||
|
|
*/
|
||
|
|
|
||
|
|
#ifndef _DTV_PATCH_H_
|
||
|
|
#define _DTV_PATCH_H_
|
||
|
|
|
||
|
|
typedef enum {
|
||
|
|
AUDIO_DTV_PATCH_DECODER_STATE_NULL,
|
||
|
|
AUDIO_DTV_PATCH_DECODER_STATE_INIT,
|
||
|
|
AUDIO_DTV_PATCH_DECODER_STATE_RUNNING,
|
||
|
|
AUDIO_DTV_PATCH_DECODER_STATE_PAUSE,
|
||
|
|
} AUDIO_DTV_PATCH_DECODER_STATE_TYPE;
|
||
|
|
|
||
|
|
/* refer to AudioSystemCmdManager */
|
||
|
|
typedef enum {
|
||
|
|
AUDIO_DTV_PATCH_CMD_NULL = 0,
|
||
|
|
AUDIO_DTV_PATCH_CMD_START = 1, /* AUDIO_SERVICE_CMD_START_DECODE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_PAUSE = 2, /* AUDIO_SERVICE_CMD_PAUSE_DECODE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_RESUME = 3, /* AUDIO_SERVICE_CMD_RESUME_DECODE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_STOP = 4, /* AUDIO_SERVICE_CMD_STOP_DECODE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_SUPPORT = 5, /* AUDIO_SERVICE_CMD_SET_DECODE_AD */
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_VOLUME = 6, /*AUDIO_SERVICE_CMD_SET_VOLUME*/
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_MUTE = 7, /*AUDIO_SERVICE_CMD_SET_MUTE*/
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_OUTPUT_MODE = 8,/*AUDIO_SERVICE_CMD_SET_OUTPUT_MODE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_PRE_GAIN = 9, /*AUDIO_SERVICE_CMD_SET_PRE_GAIN */
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_PRE_MUTE = 10, /*AUDIO_SERVICE_CMD_SET_PRE_MUTE */
|
||
|
|
AUDIO_DTV_PATCH_CMD_OPEN = 12, /*AUDIO_SERVICE_CMD_OPEN_DECODER */
|
||
|
|
AUDIO_DTV_PATCH_CMD_CLOSE = 13, /*AUDIO_SERVICE_CMD_CLOSE_DECODER */
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_DEMUX_INFO = 14, /*AUDIO_SERVICE_CMD_SET_DEMUX_INFO ;*/
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_SECURITY_MEM_LEVEL = 15,/*AUDIO_SERVICE_CMD_SET_SECURITY_MEM_LEVEL*/
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_HAS_VIDEO = 16,/*AUDIO_SERVICE_CMD_SET_HAS_VIDEO */
|
||
|
|
AUDIO_DTV_PATCH_CMD_CONTROL = 17,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_PID = 18,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_FMT = 19,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_PID = 20,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_FMT = 21,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_ENABLE = 22,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_MIX_LEVEL = 23,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_AD_VOL_LEVEL = 24,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_MEDIA_SYNC_ID = 25,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_MEDIA_PRESENTATION_ID = 26,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_DTV_LATENCYMS_ID = 27,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_MEDIA_FIRST_LANG = 29,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_MEDIA_SECOND_LANG = 30,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_SPDIF_PROTECTION_MODE = 31,
|
||
|
|
AUDIO_DTV_PATCH_CMD_SET_DECODER_ID = 32,
|
||
|
|
AUDIO_DTV_PATCH_CMD_NUM = 33,
|
||
|
|
} AUDIO_DTV_PATCH_CMD_TYPE;
|
||
|
|
|
||
|
|
enum {
|
||
|
|
AVSYNC_ACTION_NORMAL,
|
||
|
|
AVSYNC_ACTION_DROP,
|
||
|
|
AVSYNC_ACTION_HOLD,
|
||
|
|
};
|
||
|
|
enum {
|
||
|
|
DIRECT_SPEED = 0, // DERIECT_SPEED
|
||
|
|
DIRECT_SLOW,
|
||
|
|
DIRECT_NORMAL,
|
||
|
|
};
|
||
|
|
enum {
|
||
|
|
AUDIO_FREE = 0,
|
||
|
|
AUDIO_BREAK,
|
||
|
|
AUDIO_LOOKUP,
|
||
|
|
AUDIO_DROP,
|
||
|
|
AUDIO_RAISE,
|
||
|
|
AUDIO_LATENCY,
|
||
|
|
AUDIO_RUNNING,
|
||
|
|
};
|
||
|
|
enum {
|
||
|
|
TSYNC_MODE_VMASTER = 0,
|
||
|
|
TSYNC_MODE_AMASTER,
|
||
|
|
TSYNC_MODE_PCRMASTER,
|
||
|
|
};
|
||
|
|
|
||
|
|
#define DVB_DEMUX_SUPPORT_MAX_NUM 6
|
||
|
|
#define DATA_TIMEOUT 500
|
||
|
|
|
||
|
|
typedef struct dtv_path {
|
||
|
|
int path_id;
|
||
|
|
pthread_mutex_t dtv_path_lock;
|
||
|
|
|
||
|
|
struct cmd_node *dtv_cmd_list;
|
||
|
|
pthread_cond_t dtv_cmd_process_cond;
|
||
|
|
pthread_mutex_t dtv_cmd_process_mutex;
|
||
|
|
int cmd_process_thread_exit;
|
||
|
|
pthread_t audio_cmd_process_threadID;
|
||
|
|
unsigned int cmd_process_thread_created;
|
||
|
|
int dtv_decoder_state;
|
||
|
|
|
||
|
|
aml_demux_audiopara_t demux_info;
|
||
|
|
int media_sync_id;
|
||
|
|
int dtv_first_apts_flag; /*first apts looked up flag*/
|
||
|
|
|
||
|
|
struct aml_stream_out * dtv_aml_out;
|
||
|
|
struct aml_stream_out * dtv_ad_aml_out;
|
||
|
|
pthread_mutex_t apts_cal_mutex;
|
||
|
|
pthread_cond_t apts_cond;
|
||
|
|
unsigned int ad_output_thread_created;
|
||
|
|
unsigned int output_thread_created;
|
||
|
|
int output_thread_exit;
|
||
|
|
int ad_output_thread_exit;
|
||
|
|
pthread_t audio_output_threadID;
|
||
|
|
pthread_t audio_ad_output_threadID;
|
||
|
|
|
||
|
|
int64_t last_valid_main_pts;
|
||
|
|
int64_t last_valid_ad_pts;
|
||
|
|
uint8_t pts_dts_flag;
|
||
|
|
|
||
|
|
int32_t dtv_path_decoder_id;
|
||
|
|
bool pending_decoder_id;
|
||
|
|
|
||
|
|
uint8_t ad_fade;
|
||
|
|
uint8_t ad_pan;
|
||
|
|
} dtv_path_t;
|
||
|
|
|
||
|
|
#ifdef BUILD_LINUX
|
||
|
|
#ifndef __unused
|
||
|
|
#define __unused __attribute__((unused))
|
||
|
|
#endif
|
||
|
|
#endif
|
||
|
|
|
||
|
|
int create_dtv_patch(struct aml_audio_device *dev, void ** apatch);
|
||
|
|
int release_dtv_patch(struct aml_audio_device *dev, void *apatch);
|
||
|
|
|
||
|
|
int dtv_patch_handle_event(struct audio_hw_device *dev,int cmd, int val);
|
||
|
|
int dtv_path_get_es_pts_dts_flag(int path_id);
|
||
|
|
int dtv_path_get_mediasync_id(int path_id);
|
||
|
|
int dtv_queue_es_info(void *info);
|
||
|
|
#endif
|