diff recpt1/recpt1.c @ 103:387d18563ef8

temporary workaround: disable splitter if decoder is disabled.
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Fri, 26 Feb 2010 19:46:03 +0900
parents aeba1988234f
children afd25d9ebef6
line wrap: on
line diff
--- a/recpt1/recpt1.c	Wed Feb 24 22:44:06 2010 +0900
+++ b/recpt1/recpt1.c	Fri Feb 26 19:46:03 2010 +0900
@@ -336,15 +336,16 @@
         if(use_b25) {
             code = b25_decode(dec, &sbuf, &dbuf);
             if(code < 0) {
-                fprintf(stderr, "b25_decode failed. fall back to encrypted recording.\n");
-                use_b25 = FALSE; /* local flag */
+                fprintf(stderr, "b25_decode failed (code=%d). fall back to encrypted recording.\n", code);
+                use_b25 = FALSE;
+                use_splitter = FALSE; /* should not split when decode failed */
             }
             else
                 buf = dbuf;
         }
 
 
-        if(use_splitter) {
+        if(use_b25 && use_splitter) {
             splitbuf.size = 0;
 
             while(buf.size) {
@@ -435,7 +436,7 @@
                     buf = dbuf;
             }
 
-            if(use_splitter) {
+            if(use_b25 && use_splitter) {
                 /* $BJ,N%BP>]0J30$r$U$k$$Mn$H$9(B */
                 code = split_ts(splitter, &buf, &splitbuf);
                 if(code != TSS_SUCCESS) {
@@ -1041,17 +1042,21 @@
         if(!dec) {
             fprintf(stderr, "Cannot start b25 decoder\n");
             fprintf(stderr, "Fall back to encrypted recording\n");
-            use_b25 = 0;
+            use_b25 = FALSE;
+            use_splitter = FALSE; /* should not split when decode failed */
         }
     }
     /* initialize splitter */
-    if(use_splitter)
-    {
-        splitter = split_startup(sid_list);
-        if ( splitter->sid_list == NULL )
-        {
-            fprintf(stderr, "Cannot start TS splitter\n");
-            return 1;
+    if(use_splitter) {
+        if(!use_b25) {
+            fprintf(stderr, "TS splitter does not work without b25 decoder currently.\n");
+        }
+        else {
+            splitter = split_startup(sid_list);
+            if(splitter->sid_list == NULL) {
+                fprintf(stderr, "Cannot start TS splitter\n");
+                return 1;
+            }
         }
     }