Updated HTSP to version 6, includes several new features and additional info fields. Fully documented on the wiki page.

Code has also been slightly re-arranged so that it roughly follows the spec in terms of ordering, making comparisons a bit easier.
This commit is contained in:
Adam Sutton 2012-09-12 17:19:38 +01:00
parent a0b141adc6
commit 67d8c18647
5 changed files with 583 additions and 451 deletions

View file

@ -55,6 +55,7 @@ typedef struct access_ticket {
char *at_resource;
} access_ticket_t;
#define ACCESS_ANONYMOUS 0x0
#define ACCESS_STREAMING 0x1
#define ACCESS_WEB_INTERFACE 0x2
#define ACCESS_RECORDER 0x4

View file

@ -253,24 +253,28 @@ const char *dvr_entry_schedstatus(dvr_entry_t *de);
void dvr_entry_create_by_autorec(epg_broadcast_t *e, dvr_autorec_entry_t *dae);
dvr_entry_t *dvr_entry_create_by_event(const char *dvr_config_name,
epg_broadcast_t *e,
time_t start_extra, time_t stop_extra,
const char *creator,
dvr_autorec_entry_t *dae,
dvr_prio_t pri);
dvr_entry_t *dvr_entry_create_by_event
(const char *dvr_config_name,
epg_broadcast_t *e,
time_t start_extra, time_t stop_extra,
const char *creator,
dvr_autorec_entry_t *dae,
dvr_prio_t pri);
dvr_entry_t *dvr_entry_create(const char *dvr_config_name,
channel_t *ch, time_t start, time_t stop,
time_t start_extra, time_t stop_extra,
const char *title, const char *description,
epg_genre_t *content_type,
const char *creator, dvr_autorec_entry_t *dae,
dvr_prio_t pri);
dvr_entry_t *dvr_entry_create
(const char *dvr_config_name,
channel_t *ch, time_t start, time_t stop,
time_t start_extra, time_t stop_extra,
const char *title, const char *description, const char *lang,
epg_genre_t *content_type,
const char *creator, dvr_autorec_entry_t *dae,
dvr_prio_t pri);
dvr_entry_t *dvr_entry_update
(dvr_entry_t *de, const char* de_title, const char *lang,
int de_start, int de_stop);
(dvr_entry_t *de,
const char* de_title, const char *de_desc, const char *lang,
time_t de_start, time_t de_stop,
time_t de_start_extra, time_t de_stop_extra );
void dvr_init(void);

View file

@ -243,7 +243,7 @@ static dvr_entry_t *_dvr_entry_create (
const char *config_name, epg_broadcast_t *e,
channel_t *ch, time_t start, time_t stop,
time_t start_extra, time_t stop_extra,
const char *title, const char *description,
const char *title, const char *description, const char *lang,
epg_genre_t *content_type,
const char *creator, dvr_autorec_entry_t *dae,
dvr_prio_t pri)
@ -312,10 +312,10 @@ static dvr_entry_t *_dvr_entry_create (
de->de_desc = lang_str_copy(e->episode->summary);
} else if (title) {
de->de_title = lang_str_create();
lang_str_add(de->de_title, title, NULL, 0);
lang_str_add(de->de_title, title, lang, 0);
if (description) {
de->de_desc = lang_str_create();
lang_str_add(de->de_desc, description, NULL, 0);
lang_str_add(de->de_desc, description, lang, 0);
}
}
if (content_type) de->de_content_type = *content_type;
@ -350,14 +350,14 @@ dvr_entry_t *
dvr_entry_create(const char *config_name,
channel_t *ch, time_t start, time_t stop,
time_t start_extra, time_t stop_extra,
const char *title, const char *description,
const char *title, const char *description, const char *lang,
epg_genre_t *content_type,
const char *creator, dvr_autorec_entry_t *dae,
dvr_prio_t pri)
{
return _dvr_entry_create(config_name, NULL,
ch, start, stop, start_extra, stop_extra,
title, description, content_type,
title, description, lang, content_type,
creator, dae, pri);
}
@ -377,7 +377,7 @@ dvr_entry_create_by_event(const char *config_name,
return _dvr_entry_create(config_name, e,
e->channel, e->start, e->stop,
start_extra, stop_extra,
NULL, NULL,
NULL, NULL, NULL,
LIST_FIRST(&e->episode->genre),
creator, dae, pri);
}
@ -650,8 +650,8 @@ dvr_timer_expire(void *aux)
static dvr_entry_t *_dvr_entry_update
( dvr_entry_t *de, epg_broadcast_t *e,
const char *title, const char *lang,
int start, int stop )
const char *title, const char *desc, const char *lang,
time_t start, time_t stop, time_t start_extra, time_t stop_extra )
{
int save = 0;
@ -668,6 +668,14 @@ static dvr_entry_t *_dvr_entry_update
de->de_stop = stop;
save = 1;
}
if (start_extra && (start_extra != de->de_start_extra)) {
de->de_start_extra = start_extra;
save = 1;
}
if (stop_extra && (stop_extra != de->de_stop_extra)) {
de->de_stop_extra = stop_extra;
save = 1;
}
/* Title */
if (e && e->episode && e->episode->title) {
@ -678,6 +686,8 @@ static dvr_entry_t *_dvr_entry_update
save = lang_str_add(de->de_title, title, lang, 1);
}
// TODO: description
/* Genre */
if (e && e->episode) {
epg_genre_t *g = LIST_FIRST(&e->episode->genre);
@ -712,10 +722,13 @@ static dvr_entry_t *_dvr_entry_update
*/
dvr_entry_t *
dvr_entry_update
(dvr_entry_t *de, const char* de_title, const char *lang,
int de_start, int de_stop)
(dvr_entry_t *de,
const char* de_title, const char *de_desc, const char *lang,
time_t de_start, time_t de_stop,
time_t de_start_extra, time_t de_stop_extra)
{
return _dvr_entry_update(de, NULL, de_title, lang, de_start, de_stop);
return _dvr_entry_update(de, NULL, de_title, de_desc, lang,
de_start, de_stop, de_start_extra, de_stop_extra);
}
/**
@ -736,7 +749,7 @@ dvr_event_replaced(epg_broadcast_t *e, epg_broadcast_t *new_e)
if (ude == NULL && de->de_sched_state == DVR_SCHEDULED)
dvr_entry_cancel(de);
else if(new_e->episode && new_e->episode->title)
_dvr_entry_update(de, new_e, NULL, NULL, 0, 0);
_dvr_entry_update(de, new_e, NULL, NULL, NULL, 0, 0, 0, 0);
}
}
@ -744,7 +757,7 @@ void dvr_event_updated ( epg_broadcast_t *e )
{
dvr_entry_t *de;
de = dvr_entry_find_by_event(e);
if (de) _dvr_entry_update(de, e, NULL, NULL, 0, 0);
if (de) _dvr_entry_update(de, e, NULL, NULL, NULL, 0, 0, 0, 0);
}
/**

File diff suppressed because it is too large Load diff

View file

@ -1132,8 +1132,8 @@ extjs_dvr(http_connection_t *hc, const char *remain, void *opaque)
}
dvr_entry_create(config_name,
ch, start, stop, 0, 0, title, NULL, 0,
hc->hc_representative,
ch, start, stop, 0, 0, title, NULL, NULL,
0, hc->hc_representative,
NULL, dvr_pri2val(pri));
out = htsmsg_create_map();