diff --git a/src/profile.c b/src/profile.c index a055c921..9ac434dc 100644 --- a/src/profile.c +++ b/src/profile.c @@ -772,25 +772,35 @@ profile_transcode_work(profile_t *_pro, streaming_target_t *src, return st; } +static int +profile_transcode_mc_valid(int mc) +{ + switch (mc) { + case MC_MATROSKA: + case MC_WEBM: + case MC_MPEGTS: + case MC_MPEGPS: + return 1; + default: + return 0; + } +} + static int profile_transcode_open(profile_t *_pro, profile_chain_t *prch, muxer_config_t *m_cfg, int flags, size_t qsize) { + profile_transcode_t *pro = (profile_transcode_t *)_pro; muxer_config_t c; if (m_cfg) c = *m_cfg; /* do not alter the original parameter */ else memset(&c, 0, sizeof(c)); - switch (c.m_type) { - case MC_MATROSKA: - case MC_WEBM: - case MC_MPEGTS: - case MC_MPEGPS: - break; - default: - c.m_type = MC_MATROSKA; - break; + if (!profile_transcode_mc_valid(c.m_type)) { + c.m_type = pro->pro_mc; + if (!profile_transcode_mc_valid(c.m_type)) + c.m_type = MC_MATROSKA; } memset(prch, 0, sizeof(*prch)); diff --git a/src/webui/static/tv.js b/src/webui/static/tv.js index 37155768..3857f87c 100644 --- a/src/webui/static/tv.js +++ b/src/webui/static/tv.js @@ -49,51 +49,31 @@ tv.ui.VideoPlayer = Ext.extend(Ext.Panel, (function() { var profiles = { pass: { - muxer: 'pass', - mimetype: 'video/MP2T' + profile: 'pass', + mimetype: 'video/MP2T' }, hls: { - muxer: 'mpegts', - transcode: true, - audio: 'AAC', - video: 'H264', - subs: 'NONE', + profile: 'webtv-h264-aac-mpegts', playlist: true, mimetype: 'application/x-mpegURL; codecs="avc1.42E01E, mp4a.40.2"' }, apple: { - muxer: 'mpegts', - transcode: true, - audio: 'AAC', - video: 'H264', - subs: 'NONE', + profile: 'webtv-h264-aac-mpegts', playlist: true, mimetype: 'application/vnd.apple.mpegURL; codecs="avc1.42E01E, mp4a.40.2"' }, ts: { - muxer: 'mpegts', - transcode: true, - audio: 'AAC', - video: 'H264', - subs: 'NONE', + profile: 'webtv-h264-aac-mpegts', playlist: false, mimetype: 'video/MP2T; codecs="avc1.42E01E, mp4a.40.2"' }, mkv: { - muxer: 'matroska', - transcode: true, - audio: 'AAC', - video: 'H264', - subs: 'NONE', + profile: 'webtv-h264-aac-matroska', playlist: false, mimetype: 'video/x-matroska; codecs="avc1.42E01E, mp4a.40.2"' }, webm: { - muxer: 'webm', - transcode: true, - audio: 'VORBIS', - video: 'VP8', - subs: 'NONE', + profile: 'webtv-vp8-vorbis-webm', mimetype: 'video/webm; codecs="vp8.0, vorbis"' } }; @@ -104,15 +84,7 @@ tv.ui.VideoPlayer = Ext.extend(Ext.Panel, (function() { tv.ui.VideoPlayer.superclass.constructor.call(this, config); Ext.applyIf(this.params, { - transcode : 0, - resolution: 288, - channels : 0, // same as source - bandwidth : 0, // same as source - language : '', // same as source - audio : 'UNKNOWN', // same as source - video : 'UNKNOWN', // same as source - subs : 'UNKNOWN', // same as source - muxer : '', // default dvr config + profile : '', // stream profile playlist : false // don't use m3u8 playlist }); }, @@ -177,14 +149,8 @@ tv.ui.VideoPlayer = Ext.extend(Ext.Panel, (function() { url += 'stream/channel/' url += uuid; - url += "?transcode=" + new Number(params.transcode); - url += "&mux=" + params.muxer; - url += "&acodec=" + params.audio; - url += "&vcodec=" + params.video; - url += "&scodec=" + params.subs; - url += "&resolution=" + params.resolution; - url += "&bandwidth=" + params.bandwidth; - url += "&language=" + params.language; + if (params.profile) + url += "?profile=" + params.profile; return url; }, @@ -337,7 +303,7 @@ tv.ui.ChannelList = Ext.extend(Ext.DataView, { tpl: new Ext.XTemplate( '', '
', - '{name}', + '{name}', '
', '
'), @@ -443,9 +409,7 @@ tv.app = function() { init: function() { var videoPlayer = new tv.ui.VideoPlayer({ - params: { - resolution: 384 - }, + params: { }, renderTo: Ext.getBody() }); videoPlayer.setDisplaySize('100%', '00%'); @@ -454,7 +418,7 @@ tv.app = function() { store: new Ext.data.JsonStore({ autoLoad : true, root : 'entries', - fields : ['icon', 'number', 'name', 'uuid'], + fields : ['icon_public_url', 'number', 'name', 'uuid'], id : 'uuid', sortInfo : { field : 'number', @@ -468,6 +432,7 @@ tv.app = function() { title:'Channels', items: chList, cls: 'tv-channel-list', + autoScroll: true, renderTo: Ext.getBody() });