2.1 Video_net
#ifndef _video_net_h_
#define _video_net_h_
/**
* NAME anyka_stop_video
* @BRIEF 關閉網絡視頻
* @PARAM mydata 用戶數據,此結構的指針要與anyka_start_video傳的一致
* @RETURN void
* @RETVAL
*/
void anyka_stop_video(void*mydata);
/**
* NAME anyka_start_video
* @BRIEF 打開網絡視頻,或者修改網絡視頻參數
* @PARAM video_quality 視頻的質量參數
mydata 用戶數據
psend_video_callback 用戶回調函數,用於發送網絡數據,如果爲空,將是修改參數,
不爲空將是新開啓功能
* @RETURN 返回視頻的幀率
* @RETVAL
*/
int anyka_start_video(int video_quality,void*mydata, P_VIDEO_DOWITH_CALLBACK psend_video_callback);
/**
* NAME anyka_start_picture
* @BRIEF 傳送一個圖片到網絡
* @PARAM mydata 用戶數據
psend_video_callback 網絡發送圖片的回調
* @RETURN void
* @RETVAL
*/
void anyka_start_picture(void*mydata, P_VIDEO_DOWITH_CALLBACK psend_video_callback);
/**
* NAME anyka_set_video_iframe
* @BRIEF 強行將編碼設置爲幀
* @PARAM mydata 用戶數據
* @RETURN NONE
* @RETVAL
*/
void anyka_set_video_iframe(void*mydata);
/**
* NAME anyka_start_video_withbps
* @BRIEF 打開網絡視頻,或者修改網絡視頻參數
* @PARAM
video_type 720P或者VGA
bps 視頻的碼率
mydata 用戶數據
psend_video_callback 用戶回調函數,用於發送網絡數據,如果爲空,將是修改參數,
不爲空將是新開啓功能
* @RETURN 返回視頻的幀率
* @RETVAL
*/
int anyka_start_video_withbps(int video_type,int bps,void*mydata, P_VIDEO_DOWITH_CALLBACK psend_video_callback);
/**
* NAME anyka_set_video_para
* @BRIEF 修改視頻方面的參數,
* @PARAM video_type 編碼類型,目前只支持(1:720) OR (0:VGA)
bps 視頻的碼率
mydata 用戶數據
* @RETURN NONE
* @RETVAL
*/
void anyka_set_video_para(int video_type,int bps,void*mydata);
#endif
2.2 Audio_talk
#ifndef _audio_talk_h_
#define _audio_talk_h_
typedefvoid* Pnet_get_talk_data(void* user );
/**
* NAME audio_speak_start
* @BRIEF 開啓對講功能,這個函數完成將AD數據採集,並編碼送給網絡
* @PARAM mydata 用戶數據
pget_callback 得到網絡數據的回調
encode_type 編碼類型
* @RETURN void
* @RETVAL
*/
void audio_speak_start(void*mydata, AUDIO_SEND_CALLBACK *pcallback,int encode_type);
/**
* NAME audio_speak_stop
* @BRIEF 停止對講功能,關閉AD數據編碼
* @PARAM encode_type 編碼類型
* @RETURN void
* @RETVAL
*/
void audio_speak_stop(void*mydata,int encode_type);
/**
* NAME audio_talk_start
* @BRIEF 開啓對講功能,這個函數完成接受網絡數據,並解碼,送給DA
* @PARAM mydata 用戶數據
pget_callback 得到網絡數據的回調
encode_type 編碼類型
* @RETURN 0--fail; 1-->ok
* @RETVAL
*/
uint8 audio_talk_start(void*mydata, Pnet_get_talk_data pget_callback,int encode_type);
/**
* NAME audio_talk_status
* @BRIEF 檢查編碼緩衝區是不是爲空的狀態
* @PARAM
* @RETURN 0-->爲空,1-->不爲空
* @RETVAL
*/
int audio_talk_status(void);
/**
* NAME audio_talk_stop
* @BRIEF 停止對講功能,將不再接受網絡數據
* @PARAM
* @RETURN void
* @RETVAL
*/
void audio_talk_stop(void *mydata);
#endif
2.2 anyka_dection
#ifndef _anyka_dection_h_
#define _anyka_dection_h_
//目前系統只做了移動與聲音偵測功能
enum
{
SYS_CHECK_VOICE_ALARM = 1,
SYS_CHECK_VIDEO_ALARM = 2,
SYS_CHECK_OTHER_ALARM = 4,
};
typedef void PANYKA_SEND_ALARM_FUNC(int alarm_type, int save_flag, char *save_path, int start_time, int time_len);
/**
* NAME anyka_dection_init
* @BRIEF 系統啓動時,讀取配置文件,看關機前是否設置偵測,如果設置
啓動相應功能,因偵測到了要發消息出去,目前只支持大拿,如果其它
平臺,修改回調函數就可以
* @PARAM Palarm_func 如果發生偵測時的回調函數
filter_check 當前是否過濾偵測的,目前設計騰訊的在視頻觀看的時候不做偵測
* @RETURN void
* @RETVAL
*/
void anyka_dection_init(PANYKA_SEND_ALARM_FUNC Palarm_func, PANYKA_FILTER_VIDEO_CHECK_FUNC filter_check);
/**
* NAME anyka_dection_start
* @BRIEF 打開偵測功能
* @PARAM move_level 偵測的標準
check_type 偵測類型
Palarm_func 偵測回調函數
filter_check 當前是否過濾偵測的,目前設計騰訊的在視頻觀看的時候不做偵測
* @RETURN void
* @RETVAL
*/
void anyka_dection_start(int move_level, int check_type, PANYKA_SEND_ALARM_FUNC Palarm_func, PANYKA_FILTER_VIDEO_CHECK_FUNC filter_check);
/**
* NAME anyka_dection_stop
* @BRIEF 關閉相應的偵測類型,如果所有偵測全被關閉,我們將釋放所有資源
* @PARAM check_type
* @RETURN void
* @RETVAL
*/
void anyka_dection_stop(int check_type);
/**
* NAME anyka_dection_save_record
* @BRIEF 偵測錄像是否開始
* @PARAM
* @RETURN 1-->正在偵測錄像; 0-->偵測錄像未開始
* @RETVAL
*/
int anyka_dection_save_record(void);
/**
* NAME anyka_dection_pause_dection
* @BRIEF 停止移動與聲音偵測
* @PARAM
* @RETURN
* @RETVAL
*/
void anyka_dection_pause_dection(void);
/**
* NAME anyka_dection_resume_dection
* @BRIEF 恢復移動與聲音偵測
* @PARAM
* @RETURN
* @RETVAL
*/
void anyka_dection_resume_dection(void);
#endif
2.3 anyka_photo
#ifndef _anyka_photo_h_
#define _anyka_photo_h_
typedefvoid anyka_photo_callabck(void*parm,char*pic_path);
/**
* NAME anyka_photo_init
* @BRIEF 啓動拍照線程,等待用戶拍照指令
* @PARAM photo_path 拍照的路徑
* @RETURN
* @RETVAL
*/
int anyka_photo_init(char*photo_path);
/**
* NAME anyka_photo_start
* @BRIEF 開始啓動拍照
* @PARAM total_time 拍照時間,拍照將會持續的時間,如果爲-1,將持續拍照
time_per_phone 拍照的間隔時間
photo_path 拍照的路徑,如果爲NULL,將使用上次拍照的路徑
ppic_tell 如果拍照結束,將通知用戶
para 回調函數的參數
* @RETURN
* @RETVAL
*/
int anyka_photo_start(int total_time,int time_per_phone,char*photo_path, anyka_photo_callabck *ppic_tell,void*para);
/**
* NAME anyka_photo_stop
* @BRIEF 提前結束之前啓動的拍照
* @PARAM void
* @RETURN void
* @RETVAL
*/
void anyka_photo_stop();
#endif
2.4 video_record
#ifndef _video_record_h_
#define _video_record_h_
/**
* NAME video_record_main_loop
* @BRIEF 計劃錄像的啓動與關閉,通過讀配置文件,以時間爲依據啓動或停止
* @PARAM void
* @RETURN void
* @RETVAL
*/
void video_record_main_loop(void);
/**
* NAME video_record_check_run
* @BRIEF 檢查是否正在錄像
* @PARAM none
* @RETURN 0返回不在錄像,1返回正在錄像
* @RETVAL
*/
int video_record_check_run(void);
/**
* NAME video_record_start
* @BRIEF 錄像啓動
* @PARAM void
* @RETURN -1返回失敗,1返回成功
* @RETVAL
*/
int video_record_start(void);
/**
* NAME video_record_stop
* @BRIEF 錄像停止,將釋放所有的錄像相關的資源
* @PARAM void
* @RETURN void
* @RETVAL
*/
void video_record_stop(void);
/**
* NAME video_record_err_stop
* @BRIEF 如果錄像過程中失敗,將停止錄像,設置標誌,等待錄像結束
* @PARAM void
* @RETURN void
* @RETVAL
*/
void video_record_err_stop(void);
/**
* NAME video_record_update_use_size
* @BRIEF 當報警錄像的使用了空間後,要更新這個錄像大小
* @PARAM int file_size 報警文件大小
* @RETURN void*
* @RETVAL
*/
void video_record_update_use_size(int file_size);
#endif
2.5 record_replay
#ifndef _record_replay_h_
#define _record_replay_h_
#include "video_fs_list_manage.h"
typedefvoid P_RECORD_REPLAY_CALLBACK(T_VOID *param,int type, T_STM_STRUCT *pstream);
/**
* NAME record_replay_start
* @BRIEF 啓動錄像回放功能
* @PARAM start_time 回放的開始時間
end_time 回放的結束時間
clip_limit 限制的視頻片段數量,0表示不限制, >0 是有效值
type 要求回放的類型,支持警告與錄像回放
mydata 用戶數據結構
psend_video_callback 送音視頻數據的回調函數
* @RETURN int
* @RETVAL 1-->fail; 0-->success
*/
int record_replay_start(unsignedlong start_time,unsignedlong end_time,int clip_limit,int type,void*mydata, P_RECORD_REPLAY_CALLBACK psend_video_callback);
/**
* NAME record_replay_play_status
* @BRIEF 錄像回放的播放與暫停
* @PARAM mydata 用戶數據結構,是在啓動回放傳進來的
play 1-->play; 0-->pause
* @RETURN void
* @RETVAL
*/
void record_replay_play_status(void*mydata,int play);
/**
* NAME record_replay_stop
* @BRIEF 錄像回放的取消
* @PARAM mydata 用戶數據結構,是在啓動回放傳進來的
* @RETURN void
* @RETVAL
*/
void record_replay_stop(void*mydata);
/**
* NAME record_replay_init
* @BRIEF 初始化錄像回放相關信息,這裏只創建線程處理,然後直接返回
* @PARAM void
* @RETURN void
* @RETVAL
*/
void record_replay_init(void);
/**
* NAME record_replay_get_read
* @BRIEF 得到符合記錄的下一條記錄信息
* @PARAM record_list open時候的句柄
find_end 符合記錄的最後時間
result 記錄信息儲存
* @RETURN 查找結果
* @RETVAL 0-->FAIL, 1-->success
*/
int record_replay_get_read(void*record_list,unsignedlong find_end, Precord_replay_info result);
/**
* NAME record_replay_get_close_file
* @BRIEF 關閉打開文件
* @PARAM
* @RETURN NONE
* @RETVAL
*/
void record_replay_get_close_file(void*record_list);
/**
* NAME record_replay_get_open_file
* @BRIEF 打開錄像文件記錄表,並設置到指定位置
* @PARAM type 回放的類型
start_time 需要記錄的開始時間
find_end 返回符合記錄的最後時間
result 記錄信息儲存
* @RETURN 查找文件句柄
* @RETVAL NULL-->FAIL, other-->success
*/
void* record_replay_get_open_file(int type,unsignedlong start_time,unsignedlong find_end, Precord_replay_info result);
void record_replay_remove_tmpfile(void);
#endif
2.6 audio_record
#ifndef _AUDIO_RECORD_H_
#define _AUDIO_RECORD_H_
/**
* NAME audio_record_start
* @BRIEF 開始啓動錄音功能,目前錄像只保存一個文件,並不做文件分離,
* @PARAM audio_path :錄音文件的路徑
ext_name :錄音文件後綴名(".wav" or ".amr")
* @RETURN void
* @RETVAL
*/
void audio_record_start(char*audio_path,char*ext_name);
/**
* NAME audio_record_stop
* @BRIEF 停止錄音功能
* @PARAM file_name 錄音文件的全路徑名
* @RETURN void
* @RETVAL
*/
void audio_record_stop(char*file_name);
#endif
2.7 audio_play
#ifndef _AUDIO_PLAY_H_
#define _AUDIO_PLAY_H_
/**
* NAME audio_play_start
* @BRIEF 開始AMR的音樂播放,目前只做了AMR文件的播放
* @PARAM audio_path AMR音樂路徑
del_flag 是否刪除文件
* @RETURN NONE
* @RETVAL
*/
void audio_play_start(char*audio_path,int del_flag);
/**
* NAME audio_play_stop
* @BRIEF 停止當前音樂的播放
* @PARAM void
* @RETURN NONE
* @RETVAL
*/
void audio_play_stop(void);
#endif
2.8 anyka_ftp_update
#ifndef _anyka_ftp_update_h_
#define _anyka_ftp_update_h_
/**
* @brief在系統同步時間後,如果當前時間是在升級區間內,
將啓動升級信息檢查,如果發現不配對,將啓動升級
*
* @param[in] int cur_year 系統當前的年,目前認爲系統時間在大於2014年,
才認爲同步了時間,否則不會啓動FTP升級
int cur_time 以當天00:00開始算,以秒爲單位,當前的時間,
* @return void
* @retval none
*/
void anyka_ftp_update_main(int cur_year,int cur_time);
#endif
2.8 anyka_ini
#ifndef _ANYKA_INI_H_
#define _ANYKA_INI_H_
/**
* @brief初始化配置文件系統,將完成從配置文件讀取內容,並完成數據結構的初始化
*
* @author aijun
* @date 2014-11-28
* @param[in] void *config_name 配置文件名
* @return T_S32
* @retval if return 0 fail, otherwise the handle of the config
*/
void* anyka_config_init(char*config_name);
/**
* @brief釋放配置句柄所申請的內存,如果配置項產生變化,將保存文件
*
* @author aijun
* @date 2014-11-28
* @param[in] void *config_name 配置文件名
void *config_handle 配置文件句柄
* @return T_S32
* @retval none
*/
int anyka_config_destroy(char*config_name,void*config_handle);
/**
* @brief更新配置文件的相關值,只設置,並不保存,只寫入緩衝
*
* @author aijun
* @date 2014-11-28
* @param[in] void *config_handle 配置文件句柄
char *title 配置頭項
char *name 配置項名稱
char *value 要設置的值
* @return int
* @retval if return 0 success, otherwise failed
*/
int anyka_config_set_title(void*config_handle,char*title,char*name,char*value);
/**
* @brief得到配置文件的相關值,沒有打開文件操作,是從之前的緩衝中讀取
*
* @author aijun
* @date 2014-11-28
* @param[in] void *config_handle 配置文件句柄
char *title 配置頭項
char *name 配置項名稱
char *value 要設置的值
char *default_value 配置項的默認值,如果發現沒有,將給這個值
* @return int
* @retval if return 0 success, otherwise failed
*/
//int anyka_config_get_title(void *config_handle, char *title, char *name, char *value);
int anyka_config_get_title(void*config_handle,char*title,char*name,char*value,char*default_value);
/**
* @brief更新配置文件的相關值,只設置,將直接修改配置文件的相關項
*
* @author aijun
* @date 2014-11-28
* @param[in] void *config_handle 配置文件句柄
char *title 配置頭項
char *name 配置項名稱
char *value 要設置的值
* @return int
* @retval if return 0 success, otherwise failed
*/
int anyka_config_set_item(char*config_name,char*title,char*name,char*value);
/**
* @brief得到配置文件的相關值,是直接從文件中讀取,
*
* @author aijun
* @date 2014-11-28
* @param[in] char *config_name 配置文件名
char *title 配置頭項
char *name 配置項名稱
char *value 要設置的值
* @return int
* @retval if return 0 success, otherwise failed
*/
//int anyka_config_get_item(char *config_name, char *title, char *name, char *value);
int anyka_config_get_item(char*config_name,char*title,char*name,char*value,char*default_value);
void anyka_config_init_lock(void);
#endif