From 477fa0a846780b4c6f594bc93354ed7fe2878ba9 Mon Sep 17 00:00:00 2001 From: Dave Chapman Date: Mon, 13 May 2013 10:39:35 +0100 Subject: [PATCH] Add saving/loading of audio_type, and also display it in the webui --- src/psi.c | 22 ++++++++++++++++++++++ src/psi.h | 1 + src/webui/extjs.c | 8 +++++++- src/webui/static/app/tvadapters.js | 2 +- 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/psi.c b/src/psi.c index dc8ec979..378cc4c4 100644 --- a/src/psi.c +++ b/src/psi.c @@ -912,6 +912,20 @@ psi_caid2name(uint16_t caid) return buf; } +const char * +psi_audio_type2desc(uint8_t audio_type) +{ + /* From ISO 13818-1 - ISO 639 language descriptor */ + switch(audio_type) { + case 0: return ""; /* "Undefined" in the standard, but used for normal audio */ + case 1: return "Clean effects"; + case 2: return "Hearing impaired"; + case 3: return "Visually impaired commentary"; + } + + return "Reserved"; +} + /** * */ @@ -977,6 +991,9 @@ psi_save_service_settings(htsmsg_t *m, service_t *t) if(st->es_lang[0]) htsmsg_add_str(sub, "language", st->es_lang); + if (SCT_ISAUDIO(st->es_type)) + htsmsg_add_u32(sub, "audio_type", st->es_audio_type); + if(st->es_type == SCT_CA) { caid_t *c; @@ -1127,6 +1144,11 @@ psi_load_service_settings(htsmsg_t *m, service_t *t) if((v = htsmsg_get_str(c, "language")) != NULL) strncpy(st->es_lang, lang_code_get(v), 3); + if (SCT_ISAUDIO(type)) { + if(!htsmsg_get_u32(c, "audio_type", &u32)) + st->es_audio_type = u32; + } + if(!htsmsg_get_u32(c, "position", &u32)) st->es_position = u32; diff --git a/src/psi.h b/src/psi.h index 34c9736b..5dfc98b5 100644 --- a/src/psi.h +++ b/src/psi.h @@ -46,6 +46,7 @@ int psi_build_pmt(const streaming_start_t *ss, uint8_t *buf, int maxlen, int version, int pcrpid); const char *psi_caid2name(uint16_t caid); +const char *psi_audio_type2desc(uint8_t audio_type); void psi_load_service_settings(htsmsg_t *m, struct service *t); void psi_save_service_settings(htsmsg_t *m, struct service *t); diff --git a/src/webui/extjs.c b/src/webui/extjs.c index c7a6dfcb..dd2b07d1 100644 --- a/src/webui/extjs.c +++ b/src/webui/extjs.c @@ -1634,7 +1634,13 @@ extjs_servicedetails(http_connection_t *hc, case SCT_MP4A: case SCT_AAC: case SCT_MPEG2AUDIO: - htsmsg_add_str(c, "details", st->es_lang); + if (st->es_audio_type) { + snprintf(buf, sizeof(buf), "%s (%s)", st->es_lang, + psi_audio_type2desc(st->es_audio_type)); + htsmsg_add_str(c, "details", buf); + } else { + htsmsg_add_str(c, "details", st->es_lang); + } break; case SCT_DVBSUB: diff --git a/src/webui/static/app/tvadapters.js b/src/webui/static/app/tvadapters.js index 3661fabd..8da843f1 100644 --- a/src/webui/static/app/tvadapters.js +++ b/src/webui/static/app/tvadapters.js @@ -99,7 +99,7 @@ tvheadend.showTransportDetails = function(data) { win = new Ext.Window({ title : 'Service details for ' + data.title, layout : 'fit', - width : 400, + width : 450, height : 400, plain : true, bodyStyle : 'padding: 5px',