Mercurial > pt1.oyama
diff recpt1/tssplitter_lite.h @ 122:4009737ea899
add es output arg:
add start_time arg:
author | Naoya OYAMA <naoya.oyama@gmail.com> |
---|---|
date | Wed, 05 May 2010 20:43:43 +0900 |
parents | e915d31c5bd9 |
children |
line wrap: on
line diff
--- a/recpt1/tssplitter_lite.h Thu Apr 29 02:02:42 2010 +0900 +++ b/recpt1/tssplitter_lite.h Wed May 05 20:43:43 2010 +0900 @@ -119,13 +119,14 @@ typedef struct _program_t { int64_t stc; - int64_t cue_time; /* 録画開始時刻 */ + int64_t cue; /* 録画開始時刻 */ int pmt_packet_id; /* 該当Program(Service ID)に対応するPMT */ int pmt_version; /* 該当Program(Service ID)に対応するPMTのVersion */ int pcr_packet_id; /* 該当Program(Service ID)のPCRを保持するPID */ int64_t pcr1; /* PCR1 */ int64_t pcr2; /* PCR2 */ - int packet_nb; /* PCR計算用カウンタ */ + int pcr_packet_nb; /* 直前のPCRを受信したときのパケット数 */ + int packet_nb; /* 直前のProgramの処理を実施したときのパケット数 */ int64_t pcr_incr; /* 該当Program(Service ID)に於いて、1つのTSパケットを処理した時に経過する(と想定する時間) */ int video_start; /* VODEO0を蓄積開始している? */ int64_t video_pts; /* 最後に処理したVODEO0のESのPTS */ @@ -133,8 +134,6 @@ int audio_nb; /* PMT に存在する音声ストリームの数 */ int video[MAX_VIDEO]; /* PS出力する場合に使うかも */ int audio[MAX_AUDIO]; /* PS出力する場合に使うかも */ - //splitpesbuf_t *pesbuf; - //splitesbuf_t *esbuf; } program_t; /* * program_t をサービスID分準備して、使用するイメージでいたけど、 @@ -146,11 +145,10 @@ typedef struct _splitpesbuf_t { program_t *Program; - int random_access_indicator; /* TS の random_access_indicator */ int64_t pts; int64_t dts; int size; - u_char buffer[3*1024*1024]; + u_char buffer[128*1024]; } splitpesbuf_t; typedef struct _splitesbuf_t @@ -165,12 +163,28 @@ u_char buffer[3*1024*1024]; } splitesbuf_t; +/* PCR 共有用構造体 */ +typedef struct _pcr_t +{ + int pid; + int sid_nb; /* PCRを参照しているServiceID(ProgramID)の数 */ + int sid[MAX_SERVICES]; +} pcr_t; + + /** * splitter構造体 */ typedef struct splitter { + char *filename; /* ファイル名を上位からもらってくるためのポインタ */ + char *arg_cue; /* 引数で取得してきた録画開始時刻(HHMISS) */ + int esout; /* ES出力する? */ unsigned char pids[MAX_PID]; unsigned char pmt_pids[MAX_PID]; + uint8_t cat_pids[MAX_PID]; + uint8_t pcr_pids[MAX_PID]; /* PCRは複数ServiceID(ProgramID)で共有される */ + pcr_t pcr[MAX_SERVICES]; + int pcr_nb; unsigned char* pat; char** sid_list; unsigned char pat_count; @@ -178,17 +192,13 @@ int pmt_counter; int avail_pmts[MAX_SERVICES]; int num_pmts; -// struct timespec tot_offset; -// struct timespec STC_timespec; - int64_t stc; - int64_t cue_time; - int status; splitpesbuf_t *pesbuf[MAX_PID]; splitesbuf_t *esbuf[MAX_PID]; program_t *program; int pid_sid_table[MAX_PID]; /* pid to sid の変換を行うためのテーブル */ - char *filename; /* ファイル名を上位からもらってくるためのポインタ */ - int esout; /* ES出力する? */ + time_t time_cue; + time_t time_tot; + int tot_packet_nb; /* TOT受信時のパケット受信数 */ } splitter; /* b25 decoder would hoard up large chank */ @@ -198,7 +208,7 @@ u_char buffer[1024*1024]; } splitbuf_t; -splitter* split_startup(char *sid, char *filename); +splitter* split_startup(char *sid, char *filename, char *cue_time); int split_select(splitter *sp, ARIB_STD_B25_BUFFER *sbuf); void split_shutdown(splitter *sp); int split_ts(splitter *splitter, ARIB_STD_B25_BUFFER *sbuf, splitbuf_t *dbuf);