diff recpt1/tssplitter_lite.c @ 142:1e7718cc2556

use utf-8 instead of euc-jp
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Wed, 30 Apr 2014 11:26:24 +0900
parents 61ff9cabf962
children
line wrap: on
line diff
--- a/recpt1/tssplitter_lite.c	Tue Oct 01 16:36:12 2013 +0900
+++ b/recpt1/tssplitter_lite.c	Wed Apr 30 11:26:24 2014 +0900
@@ -38,22 +38,22 @@
 static int GetPid(unsigned char *data);
 
 /**
- * サービスID解析
+ * 泣若ID茹f
  */
 static char** AnalyzeSid(
-	char* sid)						// [in]		サービスID(カンマ区切りテキスト)
+	char* sid)						// [in]		泣若ID(潟阪鴻)
 {
 	int i = 0;
 	char** sid_list = NULL;
 	char* p;
 	int CommaNum = 0;
 
-	/* sid は次の形式の引数を許容する */
-	/* 指定無し */
+	/* sid 罨<綵√綣違荐怨鴻 */
+	/* 絎< */
 	/* SID[0] */
 	/* SID[0],SID[1],...,SID[N-1],SID[N] */
 
-	/*カンマの数を数える*/
+	/*潟違違*/
 	p = sid;
 	while(*p != '\0')
 	{
@@ -63,7 +63,7 @@
 		p++;
 	}
 
-	/* sid_listの数はカンマの数+2(NULL止めするから) */
+	/* sid_list違潟+2(NULL罩≪) */
 	sid_list = malloc(sizeof(char*)*(CommaNum+2));
 	if ( sid_list == NULL )
 	{
@@ -71,7 +71,7 @@
 		return NULL;
 	}
 
-	/* sidが空である場合 */
+	/* sid腥冴с翫 */
 	p = sid;
 	if ( strlen(p) == 0 )
 	{
@@ -79,7 +79,7 @@
 		return sid_list;
 	}
 
-	/* カンマ無し */
+	/* 潟< */
 	if ( CommaNum == 0 )
 	{
 		sid_list[0] = sid;
@@ -87,34 +87,34 @@
 		return sid_list;
 	}
 
-	/* カンマ区切りで複数指定時 */
+	/* 潟阪ц井絎 */
 	i=0;
 	p = sid;
-	/* 文字列端に到達するか、カンマ数が数えた数に達したら終了 */
+	/* 絖腴育潟違違違腟篋 */
 	while((*p != '\0') || i < CommaNum)
 	{
-		/* 現在の処理位置をsid_list[i]にセット */
-		/* このタイミングの p は
-		 * ・sid先頭
-		 * ・[,]の次の文字
-		 * いずれかであるので p を sid_list[i] に代入してよい
+		/* 憜篏臀sid_list[i]祉 */
+		/* 帥ゃ潟違 p 
+		 * sid
+		 * [,]罨<絖
+		 * с p  sid_list[i] 篁eャ
 		 */
 		sid_list[i] = p;
 		i++;
 
-		/* 最初に現れる[,]をNULL文字で置換する */
+		/* 憗[,]NULL絖х舟 */
 		p = strchr(p, C_CHAR_COMMA);
 		if ( p == NULL )
 		{
-			/* カンマが見つからない場合は最後の処理対象なので終了 */
+			/* 潟荀ゃ翫緇絲乗院х篋 */
 			break;
 		}
 		*p = '\0';
-		/* 処理位置をNULLで置換した文字の次の位置に設定する */
+		/* 篏臀NULLх舟絖罨<篏臀荐絎 */
 		p++;
 	}
 
-	/* 最後のsid_list[n]はNULLポインタで止める */
+	/* 緇sid_list[n]NULLゃ潟帥ф≪ */
 	sid_list[i] = NULL;
 
 	i=0;
@@ -132,10 +132,10 @@
 }
 
 /**
- * 初期化処理
+ * 
  */
 splitter* split_startup(
-	char *sid		// [in]		サービスID(引数で指定した文字列)
+	char *sid		// [in]		泣若ID(綣違ф絎絖)
 )
 {
 	splitter* sp;
@@ -167,22 +167,22 @@
 }
 
 /**
- * 落とすPIDを確定させる
+ * 純PID腆阪
  */
 int split_select(
-	splitter *sp,						// [in/out]		splitter構造体
-	ARIB_STD_B25_BUFFER *sbuf			// [in]			入力TS
+	splitter *sp,						// [in/out]		splitter罕篏
+	ARIB_STD_B25_BUFFER *sbuf			// [in]			ュTS
 )
 {
 	int result;
-	// TS解析
+	// TS茹f
 	result = ReadTs(sp, sbuf);
 
 	return result;
 }
 
 /**
- * 終了処理
+ * 腟篋
  */
 void split_shutdown(splitter* sp)
 {
@@ -203,19 +203,19 @@
 }
 
 /**
- * TS 解析処理
+ * TS 茹f
  *
- * 対象のチャンネル番号のみの PAT の再構築と出力対象 PID の抽出を行う
+ * 絲乗院c潟垩帥 PAT 罕膀阪絲乗院 PID 遵冴茵
  */
 static int ReadTs(splitter *sp, ARIB_STD_B25_BUFFER *sbuf)
 #if 0
-	unsigned char **pat,				// [out]	PAT 情報(再構築後)
-	unsigned char* pids,				// [out]	出力対象 PID 情報
-	char** sid_list,					// [in]		出力対象サービス ID のリスト
-	unsigned char* pmt_pids,			// [in]		出力対象PIDのPMT PID
-	,			// [in]		pt1_drvの入力TS
-	int* pmt_retain,						// [in]		残すべきPMTの数
-	int* pmt_counter					// [out]	残したPMTの数
+	unsigned char **pat,				// [out]	PAT 縁罕膀緇鐚
+	unsigned char* pids,				// [out]	阪絲乗院 PID 
+	char** sid_list,					// [in]		阪絲乗院泣若 ID 鴻
+	unsigned char* pmt_pids,			// [in]		阪絲乗院PIDPMT PID
+	,			// [in]		pt1_drvュTS
+	int* pmt_retain,						// [in]		罧鴻PMT
+	int* pmt_counter					// [out]	罧PMT
 #endif
 {
 	int length = sbuf->size;
@@ -231,16 +231,16 @@
 		if(0x0000 == pid) {
 			result = AnalyzePat(sp, sbuf->data + index);
 			if(result != TSS_SUCCESS) {
-				/* 下位の関数内部でmalloc error発生 */
+				/* 筝篏∽医malloc error榊 */
 				return result;
 			}
 		}
 
 		// PMT
-		/* 残すpmt_pidである場合には、pmtに書かれている
-		 * 残すべきPCR/AUDIO/VIDEO PIDを取得する */
+		/* 罧pmt_pidс翫pmt吾
+		 * 罧鴻PCR/AUDIO/VIDEO PID緇 */
 		if(sp->pmt_pids[pid] == 1) {
-			/* この中にはPMT毎に一度しか入らないようにしておく */
+			/* 筝PMT罸筝綺ャ */
 			analyze_result = AnalyzePmt(sp, sbuf->data + index, 1);
 			if(TSS_SUCCESS == analyze_result) {
 				sp->pmt_pids[pid]++;
@@ -249,9 +249,9 @@
 				*(sbuf->data + index + 2) = 0xff;
 			}
 		}
-		/* 録画する全てのPMTについて、中にあるPCR/AUDIO/VIDEOのPIDを
-		 * 得る */
-		/* pmt_counter と pmt_retain が一致する場合に条件は満たされる */
+		/* 牙祉PMTゃ筝PCR/AUDIO/VIDEOPID
+		 * 緇 */
+		/* pmt_counter  pmt_retain 筝眼翫>散羣 */
 		if(sp->pmt_counter == sp->pmt_retain) {
 			result = TSS_SUCCESS;
 			break;
@@ -297,12 +297,12 @@
 	return result;
 }
 /**
- * TS 分離処理
+ * TS √
  */
 int split_ts(
-	splitter *splitter,					// [in]		splitterパラメータ
-	ARIB_STD_B25_BUFFER *sbuf,			// [in]		入力TS
-	splitbuf_t *dbuf							// [out]	出力TS
+	splitter *splitter,					// [in]		splitter<若
+	ARIB_STD_B25_BUFFER *sbuf,			// [in]		ュTS
+	splitbuf_t *dbuf							// [out]	阪TS
 )
 {
 	int pid;
@@ -313,7 +313,7 @@
 	int pmts = 0;
 	int version = 0;
 
-	/* 初期化 */
+	/*  */
 	dbuf->buffer_filled = 0;
 	if (sbuf->size < 0) {
 		return TSS_ERROR;
@@ -328,7 +328,7 @@
 
 		// PAT
 		case 0x0000:
-			// 巡回カウンタカウントアップ
+			// 綏≦潟帥潟≪
 			if(0xFF == splitter->pat_count) {
 				splitter->pat_count = splitter->pat[3];
 			}
@@ -347,8 +347,8 @@
 		default:
 		    if(0 != splitter->pmt_pids[pid]) {
 			    //PMT
-			    if ((sptr + s_offset)[1] & 0x40) {		// PES開始インジケータ
-				    // バージョンチェック
+			    if ((sptr + s_offset)[1] & 0x40) {		// PES紮ゃ潟吾宴若
+				    // 若吾с潟с
 				    for(pmts = 0; splitter->pmt_retain > pmts; pmts++) {
 					    if (splitter->pmt_version[pmts].pid == pid) {
 						  version = splitter->pmt_version[pmts].version;
@@ -357,18 +357,18 @@
 					}
 					if((version != ((sptr + s_offset)[10] & 0x3e))
 					   ||(splitter->pmt_retain != splitter->pmt_counter)) {
-					    // 再チェック
+					    // с
 					    result = RescanPID(splitter, sptr + s_offset);
 					}
 				}
 				else {
 				    if (splitter->pmt_retain != splitter->pmt_counter) {
-					    // 再チェック
+					    // с
 					    result = RescanPID(splitter, sptr + s_offset);
 					}
 				}
 			}
-			/* pids[pid] が 1 は残すパケットなので書き込む */
+			/* pids[pid]  1 罧宴ф吾莨若 */
 			if(0 != splitter->pids[pid]) {
 				memcpy(dptr + d_offset, sptr + s_offset, LENGTH_PACKET);
 				d_offset += LENGTH_PACKET;
@@ -384,20 +384,20 @@
 }
 
 /**
- * PAT 解析処理
+ * PAT 茹f
  *
- * PAT を解析し、出力対象チャンネルが含まれているかチェックを行い、PAT を再構築する
+ * PAT 茹f阪絲乗院c潟障с茵PAT 罕膀
  */
 static int AnalyzePat(splitter *sp, unsigned char *buf)
 #if 0
 	splitter *sp
-		unsigned char** pat,				// [out]	PAT 情報(再構築後)
-		unsigned char* pids,				// [out]	出力対象 PID 情報
-		char** sid_list,					// [in]		出力対象サービス ID のリスト
-		unsigned char* pmt_pids,			// [out]	サービス ID に対応する PMT の PID
-		int* pmt_retain						// [out]	残すPMTの数
+		unsigned char** pat,				// [out]	PAT 縁罕膀緇鐚
+		unsigned char* pids,				// [out]	阪絲乗院 PID 
+		char** sid_list,					// [in]		阪絲乗院泣若 ID 鴻
+		unsigned char* pmt_pids,			// [out]	泣若 ID 絲上 PMT  PID
+		int* pmt_retain						// [out]	罧PMT
 
-	unsigned char* buf,					// [in]		読み込んだバッファ
+	unsigned char* buf,					// [in]		茯粋昭
 #endif
 {
 	int pos[MAX_PID];
@@ -419,7 +419,7 @@
 	chosen_sid[0] = '\0';
 
 	if(pat == NULL) {
-		/* 初期化 */
+		/*  */
 		sp->pmt_retain = 0;
 		memset(pos, 0, sizeof(pos));
 		size = buf[7];
@@ -437,9 +437,9 @@
 		}
 		sp->num_pmts = j;
 
-		// 対象チャンネル判定
-		/* size + 8 = パケット全長 */
-		/* 最終 4 バイトはCRCなので飛ばす */
+		// 絲乗院c潟ゅ
+		/* size + 8 = 宴 */
+		/* 腟 4 ゃCRCч違 */
 		for(i = 13; i < (size + 8) - 4; i = i + 4) {
 
 			pid = GetPid(&buf[i+2]);
@@ -451,8 +451,8 @@
 
 			while(*p) {
 				if(service_id == atoi(*p)) {
-					/* 録画対象の pmt_pids は 1 とする */
-					/* 録画対象の pmt の pids は 1 とする */
+					/* 牙糸乗院 pmt_pids  1  */
+					/* 牙糸乗院 pmt  pids  1  */
 					pid = GetPid(&buf[i + 2]);
 					*(pmt_pids+pid) = 1;
 					*(pids+pid) = 1;
@@ -465,7 +465,7 @@
 					continue;
 				}
 				else if(!strcasecmp(*p, "hd") || !strcasecmp(*p, "sd1")) {
-					/* hd/sd1 指定時には1番目のサービスを保存する */
+					/* hd/sd1 絎1泣若鴻篆絖 */
 					if(service_id == avail_sids[0]) {
 						pid = GetPid(&buf[i + 2]);
 						*(pmt_pids+pid) = 1;
@@ -480,7 +480,7 @@
 					continue;
 				}
 				else if(!strcasecmp(*p, "sd2")) {
-					/* sd2 指定時には2番目のサービスを保存する */
+					/* sd2 絎2泣若鴻篆絖 */
 					if(service_id == avail_sids[1]) {
 						pid = GetPid(&buf[i + 2]);
 						*(pmt_pids+pid) = 1;
@@ -495,7 +495,7 @@
 					continue;
 				}
 				else if(!strcasecmp(*p, "sd3")) {
-					/* sd3 指定時には3番目のサービスを保存する */
+					/* sd3 絎3泣若鴻篆絖 */
 					if(service_id == avail_sids[2]) {
 						pid = GetPid(&buf[i + 2]);
 						*(pmt_pids+pid) = 1;
@@ -510,7 +510,7 @@
 					continue;
 				}
 				else if(!strcasecmp(*p, "1seg")) {
-					/* 1seg 指定時には PMTPID=0x1FC8 のサービスを保存する */
+					/* 1seg 絎 PMTPID=0x1FC8 泣若鴻篆絖 */
 					pid = GetPid(&buf[i + 2]);
 					if(pid == 0x1FC8) {
 						*(pmt_pids+pid) = 1;
@@ -525,7 +525,7 @@
 					continue;
 				}
 				else if(!strcasecmp(*p, "all")) {
-					/* all指定時には全保存する */
+					/* all絎篆絖 */
 					pid = GetPid(&buf[i + 2]);
 					*(pmt_pids+pid) = 1;
 					*(pids+pid) = 1;
@@ -537,7 +537,7 @@
 					break;
 				}
 				else if(!strcasecmp(*p, "epg")) {
-					/* epg抽出に必要なPIDのみを保存する */
+					/* epg遵冴綽荀PID帥篆絖 */
 					sid_found    = TRUE;
 					*(pids+0x11) = 1;
 					*(pids+0x12) = 1;
@@ -585,7 +585,7 @@
 		fprintf(stderr, "\n");
 #endif
 
-		// PAT 再構築
+		// PAT 罕膀
 		result = RecreatePat(sp, buf, pos);
 #if 0
 		int tc;
@@ -598,18 +598,18 @@
 }
 
 /**
- * PAT 再構築処理
+ * PAT 罕膀
  *
- * PMT から出力対象チャンネル以外のチャンネル情報を削除し、PAT を再構築する
+ * PMT 阪絲乗院c潟篁ュc潟宴ゃPAT 罕膀
  */
 static int RecreatePat(splitter *sp, unsigned char *buf, int *pos)
 #if 0
 	splitter *sp						// [in/out]
-		unsigned char** pat,			// [out]	PAT 情報(再構築後)
-		unsigned char* pids,			// [out]	出力対象 PID 情報
+		unsigned char** pat,			// [out]	PAT 縁罕膀緇鐚
+		unsigned char* pids,			// [out]	阪絲乗院 PID 
 
-	unsigned char* buf,					// [in]		読み込んだバッファ
-	int *pos							// [in]		取得対象 PMT のバッファ中の位置
+	unsigned char* buf,					// [in]		茯粋昭
+	int *pos							// [in]		緇絲乗院 PMT >賢篏臀
 #endif
 {
 	unsigned char y[LENGTH_CRC_DATA];
@@ -619,9 +619,9 @@
 	int pos_i;
 	int pid_num = 0;
 
-	// CRC 計算のためのデータ
+	// CRC 荐膊若
 	{
-		// チャンネルによって変わらない部分
+		// c潟c紊
 		for (i = 0; i < LENGTH_PAT_HEADER - 4; i++)
 		{
 			y[i] = buf[i + 5];
@@ -633,12 +633,12 @@
 		y[LENGTH_PAT_HEADER-2] = 0xe0;
 		y[LENGTH_PAT_HEADER-1] = 0x10;
 
-		// チャンネルによって変わる部分
+		// c潟c紊
 		for (i = 0; i < MAX_PID; i++)
 		{
 			if(pos[i] != 0)
 			{
-				/* buf[pos_i] を y にコピー(抽出したPIDの数) */
+				/* buf[pos_i]  y 潟(遵冴PID) */
 				pos_i = pos[i];
 				for (j = 0; j < 4; j++)
 				{
@@ -648,12 +648,12 @@
 			}
 		}
 	}
-	/* パケットサイズ計算 */
+	/* 宴泣ゃ肴膊 */
 	y[2] = pid_num * 4 + 0x0d;
-	// CRC 計算
+	// CRC 荐膊
 	crc = GetCrc32(y, LENGTH_PAT_HEADER + pid_num*4);
 
-	// PAT 再構成
+	// PAT 罕
 	sp->pat = (unsigned char*)malloc(LENGTH_PACKET);
 	if(sp->pat == NULL)
 	{
@@ -678,14 +678,14 @@
 }
 
 /**
- * PMT 解析処理
+ * PMT 茹f
  *
- * PMT を解析し、保存対象の PID を特定する
+ * PMT 茹f篆絖絲乗院 PID 劫
  */
 static int AnalyzePmt(splitter *sp, unsigned char *buf, unsigned char mark)
 #if 0
-	unsigned char* buf,					// [in]		読み込んだバッファ
-	unsigned char* pids					// [out]	出力対象 PID 情報
+	unsigned char* buf,					// [in]		茯粋昭
+	unsigned char* pids					// [out]	阪絲乗院 PID 
 #endif
 {
 	unsigned char Nall;
@@ -698,8 +698,8 @@
 	int payload_offset;	// offset to payload
 
 	pid = GetPid(&buf[1]);
-	if (buf[1] & 0x40) {		// PES開始インジケータ
-		sp->section_remain[pid] = ((buf[6] & 0x0F) << 8) + buf[7] + 3;	// セクションサイズ取得(ヘッダ込)
+	if (buf[1] & 0x40) {		// PES紮ゃ潟吾宴若
+		sp->section_remain[pid] = ((buf[6] & 0x0F) << 8) + buf[7] + 3;	// 祉激с潟泣ゃ阪緇(莨)
 		payload_offset = 5;
 
 		for (count = 0; sp->pmt_retain > count; count++) {
@@ -707,14 +707,14 @@
                 sp->pmt_version[count].version = buf[10] & 0x3e;
 			}
 		}
-		// PCR, 番組情報が先頭からはみ出ることはないだろう
+		// PCR, 腟宴水冴
 
 		// PCR
 		pcr = GetPid(&buf[payload_offset + 8]);
 		sp->pids[pcr] = mark;
 
 		// ECM
-		N = ((buf[payload_offset + 10] & 0x0F) << 8) + buf[payload_offset + 11] + payload_offset + 12;	// ES情報開始点
+		N = ((buf[payload_offset + 10] & 0x0F) << 8) + buf[payload_offset + 11] + payload_offset + 12;	// ES演紮
 		int p = payload_offset + 12;
 
 		while(p < N) {
@@ -734,12 +734,12 @@
 		}
 	}
 	else {
-	    if (sp->section_remain[pid] == 0) return TSS_ERROR;								// セクション先頭が飛んでいる
-		if ((buf[3] & 0x0F) != ((sp->packet_seq[pid] + 1) & 0x0F)) return TSS_ERROR;	// パケットカウンタが飛んだ
+	    if (sp->section_remain[pid] == 0) return TSS_ERROR;								// 祉激с喝蕋с
+		if ((buf[3] & 0x0F) != ((sp->packet_seq[pid] + 1) & 0x0F)) return TSS_ERROR;	// 宴潟帥蕋
 		payload_offset = 4;
 		N = payload_offset;
 	}
-	sp->packet_seq[pid] = buf[3] & 0x0F;				// 巡回カウンタ
+	sp->packet_seq[pid] = buf[3] & 0x0F;				// 綏≦潟
 
 	Nall = sp->section_remain[pid];
 	if(Nall > LENGTH_PACKET - payload_offset)
@@ -748,7 +748,7 @@
 	// ES PID
 	while (N <= Nall + payload_offset - 5)
 	{
-		// ストリーム種別が 0x0D(type D)は出力対象外
+		// 鴻若腮ャ 0x0D鐚type D鐚阪絲乗院紊
 		if (0x0D != buf[N])
 		{
 			epid = GetPid(&buf[N + 1]);
@@ -770,11 +770,11 @@
 }
 
 /**
- * CRC 計算
+ * CRC 荐膊
  */
 static int GetCrc32(
-	unsigned char* data,				// [in]		CRC 計算対象データ
-	int len)							// [in]		CRC 計算対象データ長
+	unsigned char* data,				// [in]		CRC 荐膊絲乗院若
+	int len)							// [in]		CRC 荐膊絲乗院若翠
 {
 	int crc;
 	int i, j;
@@ -813,10 +813,10 @@
 }
 
 /**
- * PID 取得
+ * PID 緇
  */
 static int GetPid(
-	unsigned char* data)				// [in]		取得対象データのポインタ
+	unsigned char* data)				// [in]		緇絲乗院若帥ゃ潟
 {
 	return ((data[0] & 0x1F) << 8) + data[1];
 }