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:
parent
a0b141adc6
commit
67d8c18647
5 changed files with 583 additions and 451 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
956
src/htsp.c
956
src/htsp.c
File diff suppressed because it is too large
Load diff
|
@ -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();
|
||||
|
|
Loading…
Add table
Reference in a new issue