1
mirror of https://code.videolan.org/videolan/vlc synced 2024-10-03 01:31:53 +02:00

http interface can now change and view audio delay

Allows http interface to set the playback rate.
Playback rate must be > 0

Set subtitle delay using the http iterface

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
This commit is contained in:
Akash Mehrotra 2011-06-05 01:03:11 +05:30 committed by Jean-Baptiste Kempf
parent cc2bd3bda5
commit dc9c660248
4 changed files with 105 additions and 0 deletions

View File

@ -98,6 +98,39 @@ sout and playlist .
<img src="images/speaker_mute.png" alt="Mute Volume" />
<span class="btn_text">Mute Volume</span>
</button>
<br />
Audio Delay:
<button id="btn_delay_down" onclick="audiodelay_down();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Decrease Audio Delay by 50ms" >
<img src="images/minus.png" alt="Decrease Audio Delay" />
<span class="btn_text">Decrease Audio Delay</span>
</button>
<button id="btn_delay_up" onclick="audiodelay_up();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Increase Audio Delay by 50ms" >
<img src="images/plus.png" alt="Increase Audio Delay" />
<span class="btn_text">Increase Audio Delay</span>
</button>
<span id="a_del">(?)</span> ms
<br />
Playback Speed:
<button id="btn_delay_down" onclick="playrate_down();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Decrease playback rate by 0.05x" >
<img src="images/minus.png" alt="Decrease Playback Rate" />
<span class="btn_text">Decrease Playback Rate</span>
</button>
<button id="btn_delay_up" onclick="playrate_up();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Increase playback rate by 0.05x" >
<img src="images/plus.png" alt="Increase Playback Rate" />
<span class="btn_text">Increase Playback Rate</span>
</button>
<span id="p_rate">(?)</span>x
<br/>
Advance of subtitles over video:
<button id="btn_delay_down" onclick="subdel_down();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Decrease subtitle delay by 50ms" >
<img src="images/minus.png" alt="Decrease Subtitle delay" />
<span class="btn_text">Decrease Subtitle delay</span>
</button>
<button id="btn_delay_up" onclick="subdel_up();" onmouseover="button_over(this);" onmouseout="button_out(this);" title="Increase subtitle delay by 50ms" >
<img src="images/plus.png" alt="Increase Subtitle delay" />
<span class="btn_text">Increase Subtitle delay</span>
</button>
<span id="s_del">(?)</span>ms
</div>
<div id="status">

View File

@ -416,6 +416,48 @@ function reset_search()
update_playlist_search('')
}
}
function audiodelay_down()
{
var curdel = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'audiodelay' )[0].firstChild.data);
var curdelnew = curdel - 0.05;
curdelnew=curdelnew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=audiodelay&val='+encodeURIComponent(curdelnew), parse_status );
}
function audiodelay_up()
{
var curdel = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'audiodelay' )[0].firstChild.data);
var curdelnew = curdel + 0.05;
curdelnew=curdelnew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=audiodelay&val='+encodeURIComponent(curdelnew), parse_status );
}
function playrate_down()
{
var currate = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'rate' )[0].firstChild.data);
var curratenew = currate - 0.05;
curratenew=curratenew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=rate&val='+encodeURIComponent(curratenew), parse_status );
}
function playrate_up()
{
var currate = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'rate' )[0].firstChild.data);
var curratenew = currate + 0.05;
curratenew=curratenew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=rate&val='+encodeURIComponent(curratenew), parse_status );
}
function subdel_down()
{
var curdel = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'subtitledelay' )[0].firstChild.data);
var curdelnew = curdel - 0.05;
curdelnew=curdelnew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=subdelay&val='+encodeURIComponent(curdelnew), parse_status );
}
function subdel_up()
{
var curdel = parseFloat(req.responseXML.documentElement.getElementsByTagName( 'subtitledelay' )[0].firstChild.data);
var curdelnew = curdel + 0.05;
curdelnew=curdelnew.toFixed(2);
loadXMLDoc( 'requests/status.xml?command=subdelay&val='+encodeURIComponent(curdelnew), parse_status );
}
/**********************************************************************
* Parse xml replies to XMLHttpRequests
@ -467,6 +509,12 @@ function parse_status()
old_time = new_time;
set_text( 'time', format_time( new_time ) );
set_text( 'length', format_time( length ) );
var audio_delay = (parseFloat(req.responseXML.documentElement.getElementsByTagName( 'audiodelay' )[0].firstChild.data).toFixed(2))*1000;
set_text( 'a_del', audio_delay );
var play_rate = (parseFloat(req.responseXML.documentElement.getElementsByTagName( 'rate' )[0].firstChild.data).toFixed(2));
set_text( 'p_rate', play_rate );
var subs_delay = (parseFloat(req.responseXML.documentElement.getElementsByTagName( 'subtitledelay' )[0].firstChild.data).toFixed(2))*1000;
set_text( 's_del', subs_delay );
if( status.getElementsByTagName( 'volume' ).length != 0 )
set_text( 'volume', Math.floor(status.getElementsByTagName( 'volume' )[0].firstChild.data/5.12)+'%' );
var statetag = status.getElementsByTagName( 'state' );

View File

@ -50,6 +50,15 @@ status.xml:
> empty playlist:
?command=pl_empty
> set audio delay
?command=audiodelay&val=<delayinseconds>
> set subtitle delay
?command=subdelay&val=<delayinseconds>
> set playback rate. must be > 0
?command=rate&val=<newplaybackrate>
> sort playlist using sort mode <val> and order <id>:
?command=pl_sort&id=<id>&val=<val>
If id=0 then items will be sorted in normal order, if id=1 they will be

View File

@ -111,6 +111,18 @@ elseif command == "seek" then
common.seek(val)
elseif command == "key" then
common.hotkey("key-"..val)
elseif command == "audiodelay" then
if vlc.object.input() and val then
vlc.var.set(vlc.object.input(),"audio-delay",val)
end
elseif command == "rate" then
if vlc.object.input() and tonumber(val) >= 0 then
vlc.var.set(vlc.object.input(),"rate",val)
end
elseif command == "subdelay" then
if vlc.object.input() then
vlc.var.set(vlc.object.input(),"spu-delay",val)
end
end
local input = nil
@ -125,6 +137,9 @@ local vout = input and vlc.object.find(input,'vout','child')
?>
<root>
<volume><?vlc print(vlc.volume.get()) ?></volume>
<audiodelay><?vlc if input then print(vlc.var.get(input,"audio-delay")) else print (0) end ?></audiodelay>
<rate><?vlc if input then print(vlc.var.get(input,"rate")) else print (1) end ?></rate>
<subtitledelay><?vlc if input then print(vlc.var.get(input,"spu-delay")) else print (0) end ?></subtitledelay>
<length><?vlc if input then print(math.floor(vlc.var.get(input,"length"))) else print(0) end?></length>
<time><?vlc if input then print(math.floor(vlc.var.get(input,"time"))) else print(0) end?></time>
<state><?vlc print(vlc.playlist.status()) ?></state>