comparison recpt1/tssplitter_lite.c @ 128:9e9dbb17b70f

cosmetic
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Thu, 15 Mar 2012 16:51:05 +0900
parents 8e0f7191b92e
children 9783d247d1c9
comparison
equal deleted inserted replaced
127:8e0f7191b92e 128:9e9dbb17b70f
206 * TS 解析処理 206 * TS 解析処理
207 * 207 *
208 * 対象のチャンネル番号のみの PAT の再構築と出力対象 PID の抽出を行う 208 * 対象のチャンネル番号のみの PAT の再構築と出力対象 PID の抽出を行う
209 */ 209 */
210 static int ReadTs(splitter *sp, ARIB_STD_B25_BUFFER *sbuf) 210 static int ReadTs(splitter *sp, ARIB_STD_B25_BUFFER *sbuf)
211 {
212 #if 0 211 #if 0
213 unsigned char **pat, // [out] PAT 情報(再構築後) 212 unsigned char **pat, // [out] PAT 情報(再構築後)
214 unsigned char* pids, // [out] 出力対象 PID 情報 213 unsigned char* pids, // [out] 出力対象 PID 情報
215 char** sid_list, // [in] 出力対象サービス ID のリスト 214 char** sid_list, // [in] 出力対象サービス ID のリスト
216 unsigned char* pmt_pids, // [in] 出力対象PIDのPMT PID 215 unsigned char* pmt_pids, // [in] 出力対象PIDのPMT PID
217 , // [in] pt1_drvの入力TS 216 , // [in] pt1_drvの入力TS
218 int* pmt_retain, // [in] 残すべきPMTの数 217 int* pmt_retain, // [in] 残すべきPMTの数
219 int* pmt_counter // [out] 残したPMTの数 218 int* pmt_counter // [out] 残したPMTの数
220 #endif 219 #endif
221 220 {
222 int length = sbuf->size; 221 int length = sbuf->size;
223 int pid; 222 int pid;
224 int result = TSS_ERROR; 223 int result = TSS_ERROR;
225 int index; 224 int index;
226 int analyze_result = 0; 225 int analyze_result = 0;
288 if (splitter->pmt_retain == splitter->pmt_counter) { 287 if (splitter->pmt_retain == splitter->pmt_counter) {
289 result = TSS_SUCCESS; 288 result = TSS_SUCCESS;
290 for (i = 0; MAX_PID > i; i++) { 289 for (i = 0; MAX_PID > i; i++) {
291 if (splitter->pids[i] > 0) { 290 if (splitter->pids[i] > 0) {
292 splitter->pids[i] -= 1; 291 splitter->pids[i] -= 1;
293 } 292 }
294 } 293 }
295 fprintf(stderr, "Rescan PID End\n"); 294 fprintf(stderr, "Rescan PID End\n");
296 } 295 }
297 296
298 return result; 297 return result;
348 default: 347 default:
349 if(0 != splitter->pmt_pids[pid]) { 348 if(0 != splitter->pmt_pids[pid]) {
350 //PMT 349 //PMT
351 if ((sptr + s_offset)[1] & 0x40) { // PES開始インジケータ 350 if ((sptr + s_offset)[1] & 0x40) { // PES開始インジケータ
352 // バージョンチェック 351 // バージョンチェック
353 for(pmts = 0; splitter->pmt_retain > pmts; pmts++) { 352 for(pmts = 0; splitter->pmt_retain > pmts; pmts++) {
354 if (splitter->pmt_version[pmts].pid == pid) { 353 if (splitter->pmt_version[pmts].pid == pid) {
355 version = splitter->pmt_version[pmts].version; 354 version = splitter->pmt_version[pmts].version;
356 break; 355 break;
357 } 356 }
358 } 357 }
359 if((version != ((sptr + s_offset)[10] & 0x3e)) 358 if((version != ((sptr + s_offset)[10] & 0x3e))
360 ||(splitter->pmt_retain != splitter->pmt_counter)) { 359 ||(splitter->pmt_retain != splitter->pmt_counter)) {
361 // 再チェック 360 // 再チェック
362 result = RescanPID(splitter, sptr + s_offset); 361 result = RescanPID(splitter, sptr + s_offset);
363 } 362 }
364 } 363 }
365 else { 364 else {
366 if (splitter->pmt_retain != splitter->pmt_counter) { 365 if (splitter->pmt_retain != splitter->pmt_counter) {
367 // 再チェック 366 // 再チェック
368 result = RescanPID(splitter, sptr + s_offset); 367 result = RescanPID(splitter, sptr + s_offset);
395 unsigned char** pat, // [out] PAT 情報(再構築後) 394 unsigned char** pat, // [out] PAT 情報(再構築後)
396 unsigned char* pids, // [out] 出力対象 PID 情報 395 unsigned char* pids, // [out] 出力対象 PID 情報
397 char** sid_list, // [in] 出力対象サービス ID のリスト 396 char** sid_list, // [in] 出力対象サービス ID のリスト
398 unsigned char* pmt_pids, // [out] サービス ID に対応する PMT の PID 397 unsigned char* pmt_pids, // [out] サービス ID に対応する PMT の PID
399 int* pmt_retain // [out] 残すPMTの数 398 int* pmt_retain // [out] 残すPMTの数
400
401 #endif 399 #endif
402 { 400 {
403 int pos[MAX_PID]; 401 int pos[MAX_PID];
404 int service_id; 402 int service_id;
405 int i, j, k; 403 int i, j, k;