add iso language to streams

This commit is contained in:
Andreas Öman 2007-12-04 15:17:13 +00:00
parent 72ada59121
commit 434745c2f7
4 changed files with 33 additions and 6 deletions

View file

@ -186,6 +186,9 @@ transport_set_channel(th_transport_t *t, th_channel_t *ch)
th_stream_t *st;
char *chname;
const char *n;
char pid[30];
char lang[30];
t->tht_channel = ch;
LIST_INSERT_SORTED(&ch->ch_transports, t, tht_channel_link, transportcmp);
@ -201,7 +204,19 @@ transport_set_channel(th_transport_t *t, th_channel_t *ch)
} else {
n = htstvstreamtype2txt(st->st_type);
}
syslog(LOG_DEBUG, " Stream [%s] - pid %d", n, st->st_pid);
if(st->st_pid < 8192) {
snprintf(pid, sizeof(pid), " on pid [%d]", st->st_pid);
} else {
pid[0] = 0;
}
if(st->st_lang[0]) {
snprintf(lang, sizeof(lang), ", language \"%s\"", st->st_lang);
} else {
lang[0] = 0;
}
syslog(LOG_DEBUG, " Stream \"%s\"%s%s", n, lang, pid);
}
return 0;

View file

@ -27,6 +27,7 @@
#define DVB_SUPPORT_H
#define DVB_DESC_CA 0x09
#define DVB_DESC_LANGUAGE 0x0a
/* Descriptors defined in EN 300 468 */

19
psi.c
View file

@ -176,6 +176,7 @@ psi_parse_pmt(th_transport_t *t, uint8_t *ptr, int len, int chksvcid)
uint16_t sid;
tv_streamtype_t hts_stream_type;
th_stream_t *st;
char lang[4];
if(len < 9)
return -1;
@ -242,6 +243,8 @@ psi_parse_pmt(th_transport_t *t, uint8_t *ptr, int len, int chksvcid)
break;
}
memset(lang, 0, 4);
while(dllen > 1) {
dtag = ptr[0];
dlen = ptr[1];
@ -251,24 +254,30 @@ psi_parse_pmt(th_transport_t *t, uint8_t *ptr, int len, int chksvcid)
break;
switch(dtag) {
case DVB_DESC_LANGUAGE:
memcpy(lang, ptr, 3);
break;
case DVB_DESC_TELETEXT:
if(estype == 0x06)
hts_stream_type = HTSTV_TELETEXT;
break;
case DVB_DESC_SUBTITLE:
break;
case DVB_DESC_AC3:
if(estype == 0x06 || estype == 0x81)
hts_stream_type = HTSTV_AC3;
break;
default:
break;
}
len -= dlen; ptr += dlen; dllen -= dlen;
}
if(hts_stream_type != 0)
transport_add_stream(t, pid, hts_stream_type);
if(hts_stream_type != 0) {
st = transport_add_stream(t, pid, hts_stream_type);
memcpy(st->st_lang, lang, 4);
}
}
t->tht_pmt_seen = 1;

View file

@ -320,6 +320,8 @@ typedef struct th_stream {
uint16_t st_caid;
char st_lang[4]; /* ISO 639 3-letter language code */
} th_stream_t;