169 lines
5.1 KiB
C
Executable File
169 lines
5.1 KiB
C
Executable File
/***************************************************************************
|
|
* Copyright (c) 2014 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:
|
|
*/
|
|
/**\file
|
|
* \brief DTV头文件
|
|
*
|
|
* \author Gong Ke <[email protected]>
|
|
* \date 2010-10-25: create the document
|
|
***************************************************************************/
|
|
|
|
#ifndef _AM_DTV_H
|
|
#define _AM_DTV_H
|
|
|
|
#include <linux/dvb/frontend.h>
|
|
#include <am_types.h>
|
|
#include <am_inp.h>
|
|
#include <am_fend.h>
|
|
#include <am_osd.h>
|
|
#include <am_dmx.h>
|
|
#include <am_av.h>
|
|
#include <am_font.h>
|
|
#include <am_img.h>
|
|
#include <am_aout.h>
|
|
#include <am_time.h>
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C"
|
|
{
|
|
#endif
|
|
|
|
/****************************************************************************
|
|
* Macro definitions
|
|
***************************************************************************/
|
|
|
|
#define DTV_INP_DEV_NO 0
|
|
#define DTV_AV_DEV_NO 0
|
|
#define DTV_FEND_DEV_NO 1
|
|
#define DTV_DMX_DEV_NO 0
|
|
#define DTV_OSD_DEV_NO 0
|
|
#define DTV_AV_DEV_NO 0
|
|
#define DTV_AOUT_DEV_NO 0
|
|
|
|
#define DTV_PROG_COUNT (64)
|
|
#define DTV_PROG_NAME_LEN (256)
|
|
|
|
/****************************************************************************
|
|
* Type definitions
|
|
***************************************************************************/
|
|
|
|
typedef struct
|
|
{
|
|
fe_type_t type;
|
|
int frequency;
|
|
int symbol_rate;
|
|
fe_modulation_t modulation;
|
|
} DTV_TS_t;
|
|
|
|
typedef struct
|
|
{
|
|
int video_pid;
|
|
int audio_pid;
|
|
int chan_num;
|
|
char name[DTV_PROG_NAME_LEN];
|
|
} DTV_Program_t;
|
|
|
|
typedef struct DTV_Window DTV_Window_t;
|
|
|
|
/**\brief 窗口*/
|
|
struct DTV_Window
|
|
{
|
|
AM_Bool_t show; /**< 窗口是否显示*/
|
|
int (*init) (DTV_Window_t *win); /**< 初始化窗口*/
|
|
int (*update) (DTV_Window_t *win, AM_OSD_Surface_t *s); /**< 绘制窗口*/
|
|
int (*on_key) (DTV_Window_t *win, AM_INP_Key_t key); /**< 处理按键,如果按键被处理,返回1,否则返回0*/
|
|
int (*on_timer) (DTV_Window_t *win); /**< 定时器处理,如果触发了定时器,返回1,否则返回0*/
|
|
int (*on_show) (DTV_Window_t *win); /**< 当窗口显示时被调用*/
|
|
int (*on_hide) (DTV_Window_t *win); /**< 当窗口隐藏时被调用*/
|
|
int (*quit) (DTV_Window_t *win); /**< 释放窗口资源*/
|
|
};
|
|
|
|
typedef struct
|
|
{
|
|
int def_font;
|
|
AM_OSD_Surface_t *bg_img;
|
|
AM_OSD_Surface_t *title_setting_img;
|
|
AM_OSD_Surface_t *title_search_img;
|
|
AM_OSD_Surface_t *btn_search_img;
|
|
AM_OSD_Surface_t *btn_search_focus_img;
|
|
AM_OSD_Surface_t *btn_reset_img;
|
|
AM_OSD_Surface_t *btn_reset_focus_img;
|
|
AM_OSD_Surface_t *confirm_img;
|
|
AM_OSD_Surface_t *cancel_img;
|
|
AM_OSD_Surface_t *inp_img;
|
|
AM_OSD_Surface_t *inp_focus_img;
|
|
AM_OSD_Surface_t *list_focus_img;
|
|
AM_OSD_Surface_t *progress_img;
|
|
AM_OSD_Surface_t *progress_value_img;
|
|
AM_OSD_Surface_t *volume_img;
|
|
AM_OSD_Surface_t *volume_value_img;
|
|
AM_OSD_Surface_t *search_frame_img;
|
|
AM_OSD_Surface_t *list_frame_img;
|
|
AM_OSD_Surface_t *info_frame_img;
|
|
AM_OSD_Surface_t *pop_win_img;
|
|
AM_OSD_Surface_t *search_prompt;
|
|
} DTV_Gfx_t;
|
|
|
|
/****************************************************************************
|
|
* Static data
|
|
***************************************************************************/
|
|
|
|
extern DTV_Gfx_t gfx;
|
|
extern struct dvb_frontend_parameters ts_param;
|
|
extern DTV_Program_t programs[DTV_PROG_COUNT];
|
|
extern int program_count;
|
|
extern int curr_program;
|
|
|
|
extern DTV_Window_t *main_menu_win;
|
|
extern DTV_Window_t *dvbc_param_win;
|
|
extern DTV_Window_t *dvbt_param_win;
|
|
extern DTV_Window_t *scan_progress_win;
|
|
extern DTV_Window_t *scan_result_win;
|
|
extern DTV_Window_t *restore_win;
|
|
extern DTV_Window_t *prog_info_win;
|
|
extern DTV_Window_t *prog_list_win;
|
|
extern DTV_Window_t *vol_win;
|
|
|
|
/****************************************************************************
|
|
* Function prototypes
|
|
***************************************************************************/
|
|
|
|
extern int gfx_init(void);
|
|
extern int gfx_quit(void);
|
|
extern int dtv_program_init(void);
|
|
extern int dtv_program_quit(void);
|
|
extern int dtv_program_get_info_by_chan_num(int chan_num, DTV_Program_t *info);
|
|
/**\brief 获取当前播放节目的信息*/
|
|
extern int dtv_program_get_curr_info(DTV_Program_t *info);
|
|
/**\brief 播放当前节目*/
|
|
extern int dtv_program_play(void);
|
|
|
|
extern int dtv_program_play_by_channel_no(int channel_no);
|
|
/**\brief 停止播放当前节目*/
|
|
extern int dtv_program_stop(void);
|
|
/**\brief 播放下一个频道*/
|
|
extern int dtv_program_channel_up(void);
|
|
/**\brief 播放上一个频道*/
|
|
extern int dtv_program_channel_down(void);
|
|
extern int dtv_window_init(DTV_Window_t *win);
|
|
extern int dtv_window_show(DTV_Window_t *win);
|
|
extern int dtv_window_hide(DTV_Window_t *win);
|
|
extern int dtv_window_update(DTV_Window_t *win, AM_OSD_Surface_t *surface);
|
|
extern int dtv_window_on_key(DTV_Window_t *win, AM_INP_Key_t key);
|
|
extern int dtv_window_on_timer(DTV_Window_t *win);
|
|
extern int dtv_window_quit(DTV_Window_t *win);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|
|
|