changeset 54:080414aa8f21

updated to arib25 0.2.4
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Sun, 13 Sep 2009 02:57:13 +0900
parents 41a5481db56f
children 3a0c1a24c03b
files arib25/Makefile arib25/readme.txt arib25/src/Makefile arib25/src/arib_std_b25.c arib25/src/td.c
diffstat 5 files changed, 39 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/arib25/Makefile	Sun Sep 13 02:11:33 2009 +0900
+++ b/arib25/Makefile	Sun Sep 13 02:57:13 2009 +0900
@@ -3,4 +3,4 @@
 
 clean:
 	cd src; make clean
-	
+
--- a/arib25/readme.txt	Sun Sep 13 02:11:33 2009 +0900
+++ b/arib25/readme.txt	Sun Sep 13 02:57:13 2009 +0900
@@ -191,6 +191,18 @@
 
 【更新履歴】
 
+ ・2009, 4/19 - ver. 0.2.4
+
+  終端パケットが野良パケット (PMT に記載されていない PID の
+  パケット) だった場合に、ECM が 1 つだけでも復号が行われない
+  バグを修正
+
+  transport_error_indicator が立っている場合はパケット処理を
+  行わず、そのまま素通しするように変更
+
+  http://www.marumo.ne.jp/db2009_4.htm#19 又は
+  http://www.marumo.ne.jp/junk/arib_std_b25-0.2.4.lzh
+
  ・2008, 12/30 - ver. 0.2.3
 
   CA_descriptor の解釈を行う際に CA_system_id が B-CAS カード
--- a/arib25/src/Makefile	Sun Sep 13 02:11:33 2009 +0900
+++ b/arib25/src/Makefile	Sun Sep 13 02:57:13 2009 +0900
@@ -1,7 +1,7 @@
 PREFIX = /usr/local
 MAJOR = 0
 MINOR = 2
-REVISION = 3
+REVISION = 4
 VER = $(MAJOR).$(MINOR).$(REVISION)
 
 DEST_HEADER = $(PREFIX)/include/arib25
--- a/arib25/src/arib_std_b25.c	Sun Sep 13 02:11:33 2009 +0900
+++ b/arib25/src/arib_std_b25.c	Sun Sep 13 02:57:13 2009 +0900
@@ -408,6 +408,8 @@
 static uint8_t *resync(uint8_t *head, uint8_t *tail, int32_t unit);
 static uint8_t *resync_force(uint8_t *head, uint8_t *tail, int32_t unit);
 
+static uint32_t crc32(uint8_t *head, uint8_t *tail);
+
 /*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  interface method implementation
  ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
@@ -568,6 +570,15 @@
 		extract_ts_header(&hdr, curr);
 		crypt = hdr.transport_scrambling_control;
 		pid = hdr.pid;
+
+		if(hdr.transport_error_indicator != 0){
+			/* bit error - append output buffer without parsing */
+			if(!append_work_buffer(&(prv->dbuf), curr, 188)){
+				r = ARIB_STD_B25_ERROR_NO_ENOUGH_MEMORY;
+				goto LAST;
+			}
+			goto NEXT;
+		}
 		
 		if( (pid == 0x1fff) && (prv->strip) ){
 			goto NEXT;
@@ -589,6 +600,9 @@
 			
 			if(prv->map[pid].type == PID_MAP_TYPE_OTHER){
 				dec = (DECRYPTOR_ELEM *)(prv->map[pid].target);
+			}else if( (prv->map[pid].type == 0) &&
+				  (prv->decrypt.count == 1) ){
+				dec = prv->decrypt.head;
 			}else{
 				dec = NULL;
 			}
@@ -996,7 +1010,7 @@
 
 	head = prv->sbuf.head;
 	tail = prv->sbuf.tail;
-
+	
 	buf = head;
 	memset(count, 0, sizeof(count));
 
@@ -1795,6 +1809,15 @@
 		crypt = hdr.transport_scrambling_control;
 		pid = hdr.pid;
 
+		if(hdr.transport_error_indicator != 0){
+			/* bit error - append output buffer without parsing */
+			if(!append_work_buffer(&(prv->dbuf), curr, 188)){
+				r = ARIB_STD_B25_ERROR_NO_ENOUGH_MEMORY;
+				goto LAST;
+			}
+			goto NEXT;
+		}
+		
 		if( (pid == 0x1fff) && (prv->strip) ){
 			/* strip null(padding) stream */
 			goto NEXT;
--- a/arib25/src/td.c	Sun Sep 13 02:11:33 2009 +0900
+++ b/arib25/src/td.c	Sun Sep 13 02:57:13 2009 +0900
@@ -64,7 +64,7 @@
 
 static void show_usage()
 {
-	fprintf(stderr, "b25 - ARIB STD-B25 test program ver. 0.2.3 (2008, 12/30)\n");
+	fprintf(stderr, "b25 - ARIB STD-B25 test program ver. 0.2.4 (2009, 4/18)\n");
 	fprintf(stderr, "usage: b25 [options] src.m2t dst.m2t\n");
 	fprintf(stderr, "options:\n");
 	fprintf(stderr, "  -r round (integer, default=4)\n");