more improvements for extended_event_descriptor
This commit is contained in:
parent
6103f01ebd
commit
d42d68198c
3 changed files with 54 additions and 6 deletions
|
@ -611,7 +611,12 @@ dvb_eit_callback(th_dvb_mux_instance_t *tdmi, uint8_t *ptr, int len,
|
|||
int desc_number = (ptr[0] & 0xF0) >> 4;
|
||||
//int desc_last = (ptr[0] & 0x0F);
|
||||
|
||||
epg_event_set_ext_text(e, desc_number, exttext);
|
||||
if (strlen(extdesc))
|
||||
epg_event_set_ext_desc(e, desc_number, extdesc);
|
||||
if (strlen(extitem))
|
||||
epg_event_set_ext_item(e, desc_number, extitem);
|
||||
if (strlen(exttext))
|
||||
epg_event_set_ext_text(e, desc_number, exttext);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
48
src/epg.c
48
src/epg.c
|
@ -153,12 +153,52 @@ epg_event_set_desc(event_t *e, const char *desc)
|
|||
/**
|
||||
*
|
||||
*/
|
||||
void epg_event_set_ext_desc(event_t *e, const char *desc)
|
||||
void epg_event_set_ext_desc(event_t *e, int ext_dn, const char *desc)
|
||||
{
|
||||
if(e->e_ext_desc != NULL && !strcmp(e->e_ext_desc, desc))
|
||||
if (e->e_ext_desc == NULL && ext_dn != 0)
|
||||
return;
|
||||
free(e->e_ext_desc);
|
||||
e->e_ext_desc = strdup(desc);
|
||||
if (e->e_ext_desc != NULL && strstr(e->e_ext_desc, desc))
|
||||
return;
|
||||
|
||||
int len = strlen(desc) + ( e->e_ext_desc ? strlen(e->e_ext_desc) : 0) + 1;
|
||||
char *tmp = (char*)malloc(len);
|
||||
|
||||
if (e->e_ext_desc)
|
||||
{
|
||||
strcpy(tmp, e->e_ext_desc);
|
||||
strcat(tmp, desc);
|
||||
free(e->e_ext_desc);
|
||||
}
|
||||
else
|
||||
strcpy(tmp, desc);
|
||||
|
||||
e->e_ext_desc = tmp;
|
||||
epg_event_changed(e);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
void epg_event_set_ext_item(event_t *e, int ext_dn, const char *item)
|
||||
{
|
||||
if (e->e_ext_item == NULL && ext_dn != 0)
|
||||
return;
|
||||
if (e->e_ext_item != NULL && strstr(e->e_ext_item, item))
|
||||
return;
|
||||
|
||||
int len = strlen(item) + ( e->e_ext_item ? strlen(e->e_ext_item) : 0) + 1;
|
||||
char *tmp = (char*)malloc(len);
|
||||
|
||||
if (e->e_ext_item)
|
||||
{
|
||||
strcpy(tmp, e->e_ext_item);
|
||||
strcat(tmp, item);
|
||||
free(e->e_ext_item);
|
||||
}
|
||||
else
|
||||
strcpy(tmp, item);
|
||||
|
||||
e->e_ext_item = tmp;
|
||||
epg_event_changed(e);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,6 +62,7 @@ typedef struct event {
|
|||
char *e_title; /* UTF-8 encoded */
|
||||
char *e_desc; /* UTF-8 encoded */
|
||||
char *e_ext_desc;/* UTF-8 encoded (from extended descriptor) */
|
||||
char *e_ext_item;/* UTF-8 encoded (from extended descriptor) */
|
||||
char *e_ext_text;/* UTF-8 encoded (from extended descriptor) */
|
||||
|
||||
int e_dvb_id;
|
||||
|
@ -78,7 +79,9 @@ void epg_event_set_title(event_t *e, const char *title);
|
|||
|
||||
void epg_event_set_desc(event_t *e, const char *desc);
|
||||
|
||||
void epg_event_set_ext_desc(event_t *e, const char *desc);
|
||||
void epg_event_set_ext_desc(event_t *e, int ext_dn, const char *desc);
|
||||
|
||||
void epg_event_set_ext_item(event_t *e, int ext_dn, const char *item);
|
||||
|
||||
void epg_event_set_ext_text(event_t *e, int ext_dn, const char *text);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue