OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / epgdump / epgdump.c
index 879bdea..0c0141b 100755 (executable)
@@ -34,23 +34,17 @@ static  CONTENT_TYPE        ContentCatList[CAT_COUNT] = {
        { "ドキュメンタリー・教養", "documentary" },
        { "演劇", "stage" },
        { "趣味・実用", "hobby" },
-       { "福祉", "etc" },                    //福祉
-       { "予備", "etc" }, //予備
-       { "予備", "etc" }, //予備
-       { "予備", "etc" }, //予備
-       { "その他", "etc" } //その他
+       { "福祉", "welfare" },
+       { "予備", "etc" },
+       { "予備", "etc" },
+       { "予備", "etc" },
+       { "その他", "etc" }
 };
 
 
 SVT_CONTROL    *svttop = NULL;
 DSM_CONTROL    dsmctl[1024];
 #define                SECCOUNT        64
-char   title[1024];
-char   subtitle[1024];
-char   desc[102400] = {0};
-char   Category[1024];
-char   ServiceName[1024];
-char   Logo[8192];
 static unsigned char *base64 = (unsigned char *)"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
 static void base64_char(unsigned long bb, int srclen, unsigned char *dest, int j)
@@ -136,6 +130,10 @@ void       GetSDT(FILE *infile, SVT_CONTROL *svttop, SECcache *secs,
                //else if((bsecs->pid & 0xFF) == 0x23) {
                //      dumpSDTT(bsecs->buf, *station, *station_count);
                //}
+               /* BIT */
+               else if((bsecs->pid & 0xFF) == 0x24) {
+                       dumpBIT(bsecs->buf);
+               }
                /* CDT */
                else if((bsecs->pid & 0xFF) == 0x29) {
                        dumpCDT(bsecs->buf, *station, *station_count);
@@ -182,6 +180,13 @@ void       GetEIT(FILE *infile, FILE *outfile, STATION *psta, SECcache *secs)
        char    cendtime[32];
        char    cstarttime[32];
 
+       char    title[1024];
+       char    subtitle[1024];
+       char    desc[102400] = {0};
+       char    Category[1024];
+       char    VideoType[1024];
+       char    AudioType[1024];
+
        memset(secs, 0,  sizeof(SECcache) * SECCOUNT);
        secs[0].pid = 0x12; /* EIT  */
        secs[1].pid = 0x26; /* EIT  */
@@ -227,6 +232,14 @@ void       GetEIT(FILE *infile, FILE *outfile, STATION *psta, SECcache *secs)
                strcpy(Category, ContentCatList[eitcur->content_type].japanese);
                xmlspecialchars(Category);
 
+               memset(VideoType, '\0', sizeof(VideoType));
+               strcpy(VideoType, parseComponentDescType(eitcur->video_type));
+               xmlspecialchars(VideoType);
+
+               memset(AudioType, '\0', sizeof(AudioType));
+               strcpy(AudioType, parseAudioComponentDescType(eitcur->audio_type));
+               xmlspecialchars(AudioType);
+
                tl.tm_sec = eitcur->ss ;
                tl.tm_min = eitcur->hm ;
                tl.tm_hour = eitcur->hh ;
@@ -249,12 +262,15 @@ void      GetEIT(FILE *infile, FILE *outfile, STATION *psta, SECcache *secs)
                memset(cstarttime, '\0', sizeof(cstarttime));
                strftime(cendtime, (sizeof(cendtime) - 1), "%Y%m%d%H%M%S", endtl);
                strftime(cstarttime, (sizeof(cstarttime) - 1), "%Y%m%d%H%M%S", &tl);
+
                fprintf(outfile, "  <programme start=\"%s +0900\" stop=\"%s +0900\" channel=\"%s\" event=\"%d\">\n",    
                                cstarttime, cendtime, psta->ontv, eitcur->event_id);
                fprintf(outfile, "    <title lang=\"ja_JP\">%s</title>\n", title);
                fprintf(outfile, "    <desc lang=\"ja_JP\">%s</desc>\n", subtitle);
                fprintf(outfile, "    <longdesc lang=\"ja_JP\">%s</longdesc>\n", desc);
                fprintf(outfile, "    <category lang=\"ja_JP\">%s</category>\n", Category);
+               fprintf(outfile, "    <video type=\"%d\">%s</video>\n", eitcur->video_type, VideoType);
+               fprintf(outfile, "    <audio type=\"%d\" multi=\"%d\">%s</audio>\n", eitcur->audio_type, eitcur->multi_type, AudioType);
                //fprintf(outfile, "    <category lang=\"en\">%s</category>\n", ContentCatList[eitcur->content_type].english);
                fprintf(outfile, "  </programme>\n");
 #if 0
@@ -371,6 +387,7 @@ int main(int argc, char *argv[])
                fprintf(stdout, "Usage : %s (/LOGO) {/BS|/CS|<id>} <tsFile> <outfile>\n", argv[0]);
                fprintf(stdout, "\n");
                fprintf(stdout, "/LOGO    ロゴ取得モード。独立して指定し、番組表の出力を行ないません。\n");
+               fprintf(stdout, "         必要なTSの長さ 地上波は10分 BS/CSは20分です。\n");
                fprintf(stdout, "id       チャンネル識別子。地上波の物理チャンネルを与えます。\n");
                fprintf(stdout, "/BS      BSモード。一つのTSからBS全局のデータを読み込みます。\n");
                fprintf(stdout, "/CS      CSモード。一つのTSから複数局のデータを読み込みます。\n");
@@ -427,6 +444,9 @@ int main(int argc, char *argv[])
                char *head = "CS";
                GetSDT(infile, svttop, secs, SECCOUNT, &pStas, &staCount, head, is_logo);
        }else if(strcmp(arg_onTV, "/TEST") == 0){
+               memset(secs, 0,  sizeof(SECcache) * SECCOUNT);
+               secs[0].pid = 0x24; /* BIT  */
+
                char *head = "TEST";
                GetSDT(infile, svttop, secs, SECCOUNT, &pStas, &staCount, head, 0);
                //if (sta_count) 
@@ -460,6 +480,9 @@ int main(int argc, char *argv[])
        fprintf(outfile, "<!DOCTYPE tv SYSTEM \"xmltv.dtd\">\n\n");
        fprintf(outfile, "<tv generator-info-name=\"tsEPG2xml\" generator-info-url=\"http://localhost/\">\n");
 
+       char    ServiceName[1024];
+       char    Logo[8192];
+
        if ( is_logo ) {
                memset(Logo, '\0', sizeof(Logo));
                for(lp = 0 ; lp < staCount ; lp++){