if(t_src->s_svcname != NULL)
t_dst->s_svcname = strdup(t_src->s_svcname);
- if(t_src->s_dvb_default_charset != NULL)
- t_dst->s_dvb_default_charset = strdup(t_src->s_dvb_default_charset);
+ if(t_src->s_dvb_charset != NULL)
+ t_dst->s_dvb_charset = strdup(t_src->s_dvb_charset);
if(t_src->s_ch != NULL)
service_map_channel(t_dst, t_src->s_ch, 0);
*/
int
-dvb_get_string(char *dst, size_t dstlen, const uint8_t *src, size_t srclen, char *dvb_default_charset, dvb_string_conv_t *conv)
+dvb_get_string(char *dst, size_t dstlen, const uint8_t *src, size_t srclen, char *dvb_charset, dvb_string_conv_t *conv)
{
int ic;
size_t len, outlen;
conv++;
}
+ // automatic charset detection
switch(src[0]) {
case 0:
return -1;
return -1;
default:
- if (dvb_default_charset != NULL && sscanf(dvb_default_charset, "ISO8859-%d", &i) > 0) {
- if (i > 0 && i < 16) {
- ic = convert_iso_8859[i];
- } else {
- ic = convert_iso6937;
- }
+ ic = convert_iso6937;
+ break;
+ }
+
+ // manual charset override
+ if (dvb_charset != NULL && dvb_charset[0] != 0) {
+ if (sscanf(dvb_charset, "ISO8859-%d", &i) > 0 && i > 0 && i < 16) {
+ ic = convert_iso_8859[i];
} else {
ic = convert_iso6937;
}
- break;
}
if(srclen < 1) {
int
dvb_get_string_with_len(char *dst, size_t dstlen,
- const uint8_t *buf, size_t buflen, char *dvb_default_charset,
+ const uint8_t *buf, size_t buflen, char *dvb_charset,
dvb_string_conv_t *conv)
{
int l = buf[0];
if(l + 1 > buflen)
return -1;
- if(dvb_get_string(dst, dstlen, buf + 1, l, dvb_default_charset, conv))
+ if(dvb_get_string(dst, dstlen, buf + 1, l, dvb_charset, conv))
return -1;
return l + 1;
} dvb_string_conv_t;
int dvb_get_string(char *dst, size_t dstlen, const uint8_t *src,
- const size_t srclen, char *dvb_default_charset,
+ const size_t srclen, char *dvb_charset,
dvb_string_conv_t *conv);
int dvb_get_string_with_len(char *dst, size_t dstlen,
- const uint8_t *buf, size_t buflen, char *dvb_default_charset,
+ const uint8_t *buf, size_t buflen, char *dvb_charset,
dvb_string_conv_t *conv);
#define bcdtoint(i) ((((i & 0xf0) >> 4) * 10) + (i & 0x0f))
psi_load_service_settings(c, t);
pthread_mutex_unlock(&t->s_stream_mutex);
- s = htsmsg_get_str(c, "dvb_default_charset");
- t->s_dvb_default_charset = s ? strdup(s) : NULL;
+ s = htsmsg_get_str(c, "dvb_charset");
+ t->s_dvb_charset = s ? strdup(s) : NULL;
s = htsmsg_get_str(c, "default_authority");
t->s_default_authority = s ? strdup(s) : NULL;
htsmsg_add_u32(m, "mapped", 1);
}
- if(t->s_dvb_default_charset != NULL)
- htsmsg_add_str(m, "dvb_default_charset", t->s_dvb_default_charset);
+ if(t->s_dvb_charset != NULL)
+ htsmsg_add_str(m, "dvb_charset", t->s_dvb_charset);
htsmsg_add_u32(m, "dvb_eit_enable", t->s_dvb_eit_enable);
if(t->s_ch != NULL)
htsmsg_add_str(m, "channelname", t->s_ch->ch_name);
- if(t->s_dvb_default_charset != NULL)
- htsmsg_add_str(m, "dvb_default_charset", t->s_dvb_default_charset);
+ if(t->s_dvb_charset != NULL)
+ htsmsg_add_str(m, "dvb_charset", t->s_dvb_charset);
htsmsg_add_u32(m, "dvb_eit_enable", t->s_dvb_eit_enable);
/* Process tags */
memset(&ev, 0, sizeof(ev));
- ev.default_charset = svc->s_dvb_default_charset;
+ ev.default_charset = svc->s_dvb_charset;
while (dllen > 2) {
int r;
dtag = ptr[0];
free(t->s_identifier);
free(t->s_svcname);
free(t->s_provider);
- free(t->s_dvb_default_charset);
+ free(t->s_dvb_charset);
while((st = TAILQ_FIRST(&t->s_components)) != NULL) {
TAILQ_REMOVE(&t->s_components, st, es_link);
t->s_refcount = 1;
t->s_enabled = 1;
t->s_pcr_last = PTS_UNSET;
- t->s_dvb_default_charset = NULL;
+ t->s_dvb_charset = NULL;
t->s_dvb_eit_enable = 1;
TAILQ_INIT(&t->s_components);
*
*/
void
-service_set_dvb_default_charset(service_t *t, const char *dvb_default_charset)
+service_set_dvb_charset(service_t *t, const char *dvb_charset)
{
lock_assert(&global_lock);
- if(t->s_dvb_default_charset != NULL && !strcmp(t->s_dvb_default_charset, dvb_default_charset))
+ if(t->s_dvb_charset != NULL && !strcmp(t->s_dvb_charset, dvb_charset))
return;
- free(t->s_dvb_default_charset);
- t->s_dvb_default_charset = strdup(dvb_default_charset);
+ free(t->s_dvb_charset);
+ t->s_dvb_charset = strdup(dvb_charset);
t->s_config_save(t);
}
* DVB default charset
* used to overide the default ISO6937 per service
*/
- char *s_dvb_default_charset;
+ char *s_dvb_charset;
/**
* Set if EIT grab is enabled for DVB service (the default).
uint16_t service_get_encryption(service_t *t);
-void service_set_dvb_default_charset(service_t *t, const char *dvb_default_charset);
+void service_set_dvb_charset(service_t *t, const char *dvb_charset);
void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable);
uint32_t u32;
const char *id;
const char *chname;
- const char *dvb_default_charset;
+ const char *dvb_charset;
TAILQ_FOREACH(f, &in->hm_fields, hmf_link) {
if((c = htsmsg_get_map_by_field(f)) == NULL ||
if((chname = htsmsg_get_str(c, "channelname")) != NULL)
service_map_channel(t, channel_find_by_name(chname, 1, 0), 1);
- if((dvb_default_charset = htsmsg_get_str(c, "dvb_default_charset")) != NULL)
- service_set_dvb_default_charset(t, dvb_default_charset);
+ if((dvb_charset = htsmsg_get_str(c, "dvb_charset")) != NULL)
+ service_set_dvb_charset(t, dvb_charset);
if(!htsmsg_get_u32(c, "dvb_eit_enable", &u32))
service_set_dvb_eit_enable(t, u32);
htsmsg_add_msg(out, "streams", streams);
- if(t->s_dvb_default_charset != NULL)
- htsmsg_add_str(out, "dvb_default_charset", t->s_dvb_default_charset);
+ if(t->s_dvb_charset != NULL)
+ htsmsg_add_str(out, "dvb_charset", t->s_dvb_charset);
htsmsg_add_u32(out, "dvb_eit_enable", t->s_dvb_eit_enable);
uint32_t u32;
const char *id;
const char *chname;
- const char *dvb_default_charset;
+ const char *dvb_charset;
TAILQ_FOREACH(f, &in->hm_fields, hmf_link) {
if((c = htsmsg_get_map_by_field(f)) == NULL ||
if((chname = htsmsg_get_str(c, "channelname")) != NULL)
service_map_channel(t, channel_find_by_name(chname, 1, 0), 1);
- if((dvb_default_charset = htsmsg_get_str(c, "dvb_default_charset")) != NULL)
- service_set_dvb_default_charset(t, dvb_default_charset);
+ if((dvb_charset = htsmsg_get_str(c, "dvb_charset")) != NULL)
+ service_set_dvb_charset(t, dvb_charset);
if(!htsmsg_get_u32(c, "dvb_eit_enable", &u32))
service_set_dvb_eit_enable(t, u32);
})
},
{
- header : "DVB default charset",
- dataIndex : 'dvb_default_charset',
+ header : "DVB charset",
+ dataIndex : 'dvb_charset',
width : 200,
renderer : function(value, metadata, record, row, col, store) {
return value ? value
- : '<span class="tvh-grid-unset">ISO6937</span>';
+ : '<span class="tvh-grid-unset">auto</span>';
},
editor : new fm.ComboBox({
mode : 'local',
store : new Ext.data.SimpleStore({
fields : [ 'key', 'value' ],
- data : [ [ 'ISO6937', 'default' ], [ 'ISO6937', 'ISO6937' ],
+ data : [ [ null, 'auto' ], [ 'ISO6937', 'ISO6937' ],
[ 'ISO8859-1', 'ISO8859-1' ], [ 'ISO8859-2', 'ISO8859-2' ],
[ 'ISO8859-3', 'ISO8859-3' ], [ 'ISO8859-4', 'ISO8859-4' ],
[ 'ISO8859-5', 'ISO8859-5' ], [ 'ISO8859-6', 'ISO8859-6' ],
root : 'entries',
fields : Ext.data.Record.create([ 'id', 'enabled', 'type', 'sid', 'pmt',
'pcr', 'svcname', 'network', 'provider', 'mux', 'channelname',
- 'dvb_default_charset', 'dvb_eit_enable' ]),
+ 'dvb_charset', 'dvb_eit_enable' ]),
url : "dvb/services/" + adapterId,
autoLoad : true,
id : 'id',