import os
import sys
import flixengine2
prefix = "/var/www/cgi-bin/";
indir = prefix + "flixmedia/in/"
overlaydir = prefix + "flixmedia/overlay/"
flix_syms = {}
for key in dir(flixengine2):
flix_syms[key] = eval ("flixengine2.%s"%key)
print """
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en-US">
<head>
<title>Flix CGI Sample - Python</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function showall(show) {
var legend_list = document.getElementsByTagName('legend');
var i=0;
while(legend_list[i]) {
legend_list[i].parentNode.className=show?'expanded':'collapsed';
i++;
}
}
function toggle_expand(_this)
{
_this.parentNode.className= (_this.parentNode.className=='expanded') ?
'collapsed' : 'expanded';
document.getElementById('showall').checked=false;
}
function set_table_visible(ctable,visible)
{
var table= document.getElementById(ctable);
if(table) {
if(visible && table.className == 'hidden') {
table.className= '';
} else if(!visible && table.className == '') {
table.className= 'hidden';
}
}
}
function hide_tablelist(vistablename,tablelist)
{
var table= document.getElementById(vistablename);
if(table&&table.className=='hidden') {
table.className= '';
var i=0;
while(tablelist[i]) {
if(tablelist[i]!=vistablename) {
var hiddentable= document.getElementById(tablelist[i]);
set_table_visible(tablelist[i],false);
/*clear down any values set in the hidden table to avoid posting
unnecessary values*/
clear_value(hiddentable.getElementsByTagName('input'));
clear_value(hiddentable.getElementsByTagName('select'));
}
i++;
}
}
}
function set_acodec_visible(ctable)
{
var acodecs= new Array('aactable','aacplustable','amrnbtable','lametable','pcmtable');
hide_tablelist(ctable,acodecs);
}
function set_vcodec_visible(ctable)
{
var vcodecs= new Array('h263table','h264table','vp6atable','vp6table');
hide_tablelist(ctable,vcodecs);
}
function set_muxer_visible(mtable)
{
var muxers= new Array('flvtable','movtable','mp4table','swftable','tg2table','tgptable');
hide_tablelist(mtable,muxers);
}
function clear_value(list)
{
var i=0;
while(list[i]) { list[i++].value=''; }
}
function toggle_ftable(ftable,enabled)
{
var table= document.getElementById(ftable);
if(table) {
table.className = enabled ? '' : 'disabled';
if(!enabled) {
clear_value(table.getElementsByTagName('input'));
clear_value(table.getElementsByTagName('select'));
}
}
}
function reset_tables()
{
var table_list= document.getElementsByTagName('table');
var i=0;
while(table_list[i]) {
if (table_list[i].id.length > 7 &&
table_list[i].id.substring(0,7) == 'filter_') {
table_list[i].className= 'disabled';
} else if (table_list[i].id.indexOf('table') != -1) {
table_list[i].className= 'hidden';
}
i++;
}
}
</script>
<style type="text/css">
<!--
html {
font-family: Verdana, 'bitstream vera sans', Arial, sans-serif;
font-size: 100%%;
color: rgb(56,56,56);
background-color: rgb(236,236,236);
}
body {
text-align: center;
margin: 0 auto;
}
div.content {
color: rgb(56,56,56);
background-color: rgb(246,246,246);
text-align: left;
margin: 0 auto;
width: 80%%;
min-width: 768px;
max-width: 932px;
border-width: 0 1px;
border-color: rgb(144,144,144);
border-style: solid;
}
div.content:after {
content: "";
color: inherit;
background-color: rgb(250,250,250);
border-top: 1px solid rgb(144,144,144);
height: 20px;
width: 100%%;
display: block;
}
fieldset table, fieldset {display: none;}
fieldset.expanded, fieldset.collapsed {display: block;}
/*first is fallback for IE*/
fieldset.expanded table {display: block;}
fieldset.expanded table {display: table;}
h1 {
font-family: sans-serif;
font-size: 150%%;
font-weight: normal;
text-align: left;
letter-spacing: -1px;
color: rgb(74,74,74);
background-color: inherit;
margin: 0;
}
a {
color: rgb(74,74,74);
background-color: transparent;
}
label {
font-size: 75%%;
}
fieldset {
font-size: 75%%;
line-height: 130%%;
padding: 0;
margin: 20px;
border: none;
}
fieldset.expanded {
color: inherit;
background-color: rgb(252,252,252);
border-style: solid;
border-width: 1px;
border-color: rgb(217,217,217) rgb(217,217,217) rgb(188,188,188);
}
legend {
padding: 0 5px;
border-left: 10px solid rgb(217,217,217);
cursor: pointer;
}
legend:hover {text-decoration: underline;}
fieldset.expanded legend {
font-size: 150%%;
font-weight: bold;
letter-spacing: -1px;
background: transparent;
margin-left: 12px;
border-right: 10px solid rgb(217,217,217);
display: block;
}
table {
font-size: 100%%;
border-spacing: 0;
/*border-collapse: collapse;*/
width: 100%%;
}
th:before { display: none; }
th, td {
width: 50%%;
vertical-align: top;
padding: 2px 3px;
border-width: 1px 0;
border-style: solid;
border-color: rgb(188,188,188) rgb(252,252,252) rgb(252,252,252);
}
tr:first-child>* {border-top-color: rgb(252,252,252);}
th {
font-weight: normal;
text-align: left;
padding: 2px 2px 2px 5px;
}
input[type] {
font-family: monospace;
font-size: 100%%;
color: rgb(56,56,56);
background-color: inherit;
}
[type="text"], [type="number"] {
margin-right: 13px;
width: 222px;
}
[type="checkbox"].filter {
margin-left: 4px
}
[type="checkbox"] {
margin-left: 13px
}
[type="button"], [type="submit"] {
font-size: 1em;
margin: 0 2px 0 13px;
}
fieldset {
font-size: 75%%;
margin: 20px 10px;
}
fieldset input[type="text"], fieldset input[type="number"] {
width: 95%% !important;
margin: 0;
display: block;
}
fieldset.expanded table.hidden {
display: none;
}
table.disabled {
color: rgb(176,176,176);
}
-->
</style>
</head>
<body>
<div class='content'>
<noscript>
<p>This page requires javascript be enabled.</p>
</noscript>
<hr>
<h1>Flix CGI Sample</h1>
<p><small>flix2_sample.cgi version 1.9</small></p>
<h4>Instructions</h4>
<ul>
<li>In this sample you must choose a source file and an output file.<br>
If you leave all the other options blank then the sample will not call
the corresponding Flix Engine function and the default will be used.<br>
When done please press the "Start Encode" button at the bottom of the page.<br>
<li>Mouse over a function name to see its default, if applicable.
<li>Current source file directory: """ % flix_syms
print indir
print """
</ul>
<p>
<label><input type="checkbox" id='showall' onclick='showall(this.checked)'>Show all</label>
</p>
<form action="process_sample.py" method="post">
<!-- ##SOURCE FILE########################################################### -->
<hr>
<fieldset class='expanded' id="srcfile">
<legend onclick='toggle_expand(this)'>Source File</legend>
<table>
<tr>
<td>
"""
if os.path.exists(indir):
first = True
files = os.listdir(indir); files.sort()
print "<select name='Flix2_SetInputFile' size='",
if len(files) < 15: print str(len(files))+"'>"
else: print "15'>"
for j in files:
if os.path.isdir(os.path.join(indir,j))==False:
print "<option ",
if first: print "selected ",; first = False
print "value=\"%s\">%s</option>" %\
(os.path.join(indir,j), j)
print "</select>";
else:
print "WARNING couldn't open " + indir + " os.path.exists() failed<br>"
print """
</td>
</tr>
</table>
</fieldset>
<!-- ##DST FILE################################################################# -->
<hr>
<fieldset class='expanded' id="dstfile">
<legend onclick='toggle_expand(this)'>Output File</legend>
<table>
<tr>
<td>
<input type="text" name="Flix2_SetOutputFile" value="cgi-python-out.flv">
</td>
</tr>
</table>
</fieldset>
<!-- ##MAIN OPTIONS################################################################# -->
<hr>
<fieldset class='collapsed' id="main_opts">
<legend onclick='toggle_expand(this)'>Main Options</legend>
<table>
<tr>
<th><abbr title="default: FALSE">Flix2_SetOverwriteExistingFiles</abbr></th>
<td>
<select name="Flix2_SetOverwriteExistingFiles">
<option value=""></option>
<option value="%(on2true)d">TRUE</option>
<option value="%(on2false)d">FALSE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: TRUE">Flix2_SetExportAudio</abbr></th>
<td>
<select name="Flix2_SetExportAudio">
<option value=""></option>
<option value="%(on2true)d">TRUE</option>
<option value="%(on2false)d">FALSE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: TRUE">Flix2_SetExportVideo</abbr></th>
<td>
<select name="Flix2_SetExportVideo">
<option value=""></option>
<option value="%(on2true)d">TRUE</option>
<option value="%(on2false)d">FALSE</option>
</select>
</td>
</tr>
</table>
</fieldset>
<!-- ##CODECS####################################################################### -->
<hr>
<fieldset class='collapsed' id="codecs">
<legend onclick='toggle_expand(this)'>Codecs</legend>
<table>
<tr><th><b>Video Codecs</b></th></tr>
<tr>
<td>
<label>
<input type='radio' name='vcodec:' value='FE2_CODEC_VP6'
onfocus="set_vcodec_visible('vp6table')">
<abbr title="For use with FLV/SWF">FE2_CODEC_VP6</abbr>
</label>
<label>
<input type='radio' name='vcodec:' value='FE2_CODEC_VP6ALPHA'
onfocus="set_vcodec_visible('vp6atable')">
<abbr title="For use with FLV/SWF">FE2_CODEC_VP6ALPHA</abbr>
</label>
<label>
<input type='radio' name='vcodec:' value='FE2_CODEC_H263'
onfocus="set_vcodec_visible('h263table')">
<abbr title="For use with FLV/SWF">FE2_CODEC_H263</abbr>
</label>
<label>
<input type='radio' name='vcodec:' value='FE2_CODEC_H263_BASELINE'
onfocus="set_vcodec_visible('h263table')">
<abbr title="For use with 3GP">FE2_CODEC_H263_BASELINE</abbr>
</label>
<label>
<input type='radio' name='vcodec:' value='FE2_CODEC_H264'
onfocus="set_vcodec_visible('h264table')">
<abbr title="For use with 3GP/3G2/MOV/MP4">FE2_CODEC_H264</abbr>
</label>
<!-- VP6 codec parameters -->
<table id='vp6table' class='hidden'>
<tr>
<th><abbr title="default: 448kbps">FE2_VP6_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: MAX_KEYFRAMES">FE2_VP6_KFINTTYPE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6_KFINTTYPE">
<option value=""></option>
<option value="%(MAX_KEYFRAMES)d">MAX_KEYFRAMES</option>
<option value="%(FIXED_KEYFRAMES)d">FIXED_KEYFRAMES</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 12*fps or 360 frames if the framerate is unknown">FE2_VP6_KFFREQ</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_KFFREQ'></td>
</tr>
<tr>
<th><abbr title="default: VBR_2PASSControl">FE2_VP6_RC_MODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6_RC_MODE">
<option value=""></option>
<option value="%(VBR_2PASSControl)d">VBR_2PASSControl</option>
<option value="%(CBR_2PASSControl)d">CBR_2PASSControl</option>
<option value="%(VBR_1PASSControl)d">VBR_1PASSControl</option>
<option value="%(CBR_1PASSControl)d">CBR_1PASSControl</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: COMPRESSMODE_GOOD">FE2_VP6_CXMODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6_CXMODE">
<option value=""></option>
<option value="%(COMPRESSMODE_GOOD)d">COMPRESSMODE_GOOD</option>
<option value="%(COMPRESSMODE_BEST)d">COMPRESSMODE_BEST</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: VP6_E">FE2_VP6_PROFILE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6_PROFILE">
<option value=""></option>
<option value="%(VP6_E)d">VP6_E</option>
<option value="%(VP6_S)d">VP6_S</option>
</select>
</td>
</tr>
<tr><th><b>Advanced Settings:</b></th></tr>
<tr>
<th><abbr title="default: 0">FE2_VP6_CONCURRENCY</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_CONCURRENCY'></td>
</tr>
<tr>
<th><abbr title="default: 90">FE2_VP6_UNDERSHOOT_PCT</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_UNDERSHOOT_PCT'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_MIN_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_MIN_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_MAX_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_MAX_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_SHARPNESS</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_SHARPNESS'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_NOISE_REDUCTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_NOISE_REDUCTION'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_TEMPORAL_RESAMPLING</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_TEMPORAL_RESAMPLING'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6_TEMPORAL_DOWN_WATERMARK</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_TEMPORAL_DOWN_WATERMARK'></td>
</tr>
<tr>
<th><abbr title="default: 100">FE2_VP6_STREAM_PEAK_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_STREAM_PEAK_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: 6 (CBR only)">FE2_VP6_STREAM_PREBUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_STREAM_PREBUFFER'></td>
</tr>
<tr>
<th><abbr title="default: 10 (CBR only)">FE2_VP6_STREAM_OPTIMAL_BUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_STREAM_OPTIMAL_BUFFER'></td>
</tr>
<tr>
<th><abbr title="(CBR only)">FE2_VP6_STREAM_MAX_BUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_STREAM_MAX_BUFFER'></td>
</tr>
<tr>
<th><abbr title="default: 40">FE2_VP6_2PASS_MIN_SECTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_2PASS_MIN_SECTION'></td>
</tr>
<tr>
<th><abbr title="default: 400">FE2_VP6_2PASS_MAX_SECTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6_2PASS_MAX_SECTION'></td>
</tr>
</table>
<!-- END - VP6 codec parameters -->
<!-- VP6A codec parameters -->
<table id='vp6atable' class='hidden'>
<tr>
<th><abbr title="default: 380kbps">FE2_VP6A_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: 68kbps (15%% of default 448kbps)">FE2_VP6A_ALPHA_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_ALPHA_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: MAX_KEYFRAMES">FE2_VP6A_KFINTTYPE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6A_KFINTTYPE">
<option value=""></option>
<option value="%(MAX_KEYFRAMES)d">MAX_KEYFRAMES</option>
<option value="%(FIXED_KEYFRAMES)d">FIXED_KEYFRAMES</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 12*fps or 360 frames if the framerate is unknown">FE2_VP6A_KFFREQ</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_KFFREQ'></td>
</tr>
<tr>
<th><abbr title="default: VBR_2PASSControl">FE2_VP6A_RC_MODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6A_RC_MODE">
<option value=""></option>
<option value="%(VBR_2PASSControl)d">VBR_2PASSControl</option>
<option value="%(CBR_2PASSControl)d">CBR_2PASSControl</option>
<option value="%(VBR_1PASSControl)d">VBR_1PASSControl</option>
<option value="%(CBR_1PASSControl)d">CBR_1PASSControl</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: COMPRESSMODE_GOOD">FE2_VP6A_CXMODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_VP6A_CXMODE">
<option value=""></option>
<option value="%(COMPRESSMODE_GOOD)d">COMPRESSMODE_GOOD</option>
<option value="%(COMPRESSMODE_BEST)d">COMPRESSMODE_BEST</option>
</select>
</td>
</tr>
<tr><th><b>Advanced Settings:</b></th></tr>
<tr>
<th><abbr title="default: 90">FE2_VP6A_UNDERSHOOT_PCT</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_UNDERSHOOT_PCT'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_MIN_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_MIN_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_ALPHA_MIN_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_ALPHA_MIN_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_MAX_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_MAX_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_MAX_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_ALPHA_MAX_Q'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_SHARPNESS</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_SHARPNESS'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_ALPHA_SHARPNESS</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_ALPHA_SHARPNESS'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_NOISE_REDUCTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_NOISE_REDUCTION'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_ALPHA_NOISE_REDUCTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_ALPHA_NOISE_REDUCTION'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_TEMPORAL_RESAMPLING</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_TEMPORAL_RESAMPLING'></td>
</tr>
<tr>
<th><abbr title="default: bits per pixel dependent (see api docs)">FE2_VP6A_TEMPORAL_DOWN_WATERMARK</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_TEMPORAL_DOWN_WATERMARK'></td>
</tr>
<tr>
<th><abbr title="default: 100">FE2_VP6A_STREAM_PEAK_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_STREAM_PEAK_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: 6 (CBR only)">FE2_VP6A_STREAM_PREBUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_STREAM_PREBUFFER'></td>
</tr>
<tr>
<th><abbr title="default: 10 (CBR only)">FE2_VP6A_STREAM_OPTIMAL_BUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_STREAM_OPTIMAL_BUFFER'></td>
</tr>
<tr>
<th><abbr title="(CBR only)">FE2_VP6A_STREAM_MAX_BUFFER</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_STREAM_MAX_BUFFER'></td>
</tr>
<tr>
<th><abbr title="default: 40">FE2_VP6A_2PASS_MIN_SECTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_2PASS_MIN_SECTION'></td>
</tr>
<tr>
<th><abbr title="default: 400">FE2_VP6A_2PASS_MAX_SECTION</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_VP6A_2PASS_MAX_SECTION'></td>
</tr>
</table>
<!-- END - VP6A codec parameters -->
<!-- H263 codec parameters -->
<table id='h263table' class='hidden'>
<tr>
<th><abbr title="default: 448kbps">FE2_H263_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H263_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: MAX_KEYFRAMES">FE2_H263_KFINTTYPE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_H263_KFINTTYPE">
<option value=""></option>
<option value="%(MAX_KEYFRAMES)d">MAX_KEYFRAMES</option>
<option value="%(FIXED_KEYFRAMES)d">FIXED_KEYFRAMES</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 12*fps or 360 frames if the framerate is unknown">FE2_H263_KFFREQ</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H263_KFFREQ'></td>
</tr>
<tr>
<th><abbr title="default: VBR_2PASSControl">FE2_H263_RC_MODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_H263_RC_MODE">
<option value=""></option>
<option value="%(VBR_2PASSControl)d">VBR_2PASSControl</option>
<option value="%(CBR_2PASSControl)d">CBR_2PASSControl</option>
<option value="%(VBR_1PASSControl)d">VBR_1PASSControl</option>
<option value="%(CBR_1PASSControl)d">CBR_1PASSControl</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 31">FE2_H263_MAX_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H263_MAX_Q'></td>
</tr>
<tr>
<th><abbr title="default: 2">FE2_H263_MIN_Q</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H263_MIN_Q'></td>
</tr>
</table>
<!-- END - H263 codec parameters -->
<!-- H264 codec parameters -->
<table id='h264table' class='hidden'>
<tr>
<th><abbr title="default: 448kbps">FE2_H264_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H264_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: 12*fps or 360 frames if the framerate is unknown">FE2_H264_KFFREQ</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H264_KFFREQ'></td>
</tr>
<tr>
<th><abbr title="default: VBR_1PASSControl">FE2_H264_RC_MODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_H264_RC_MODE">
<option value=""></option>
<option value="%(VBR_1PASSControl)d">VBR_1PASSControl</option>
<option value="%(CBR_1PASSControl)d">CBR_1PASSControl</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: MAIN_H264PROFILE">FE2_H264_PROFILE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_H264_PROFILE">
<option value=""></option>
<option value="%(BASE_H264PROFILE)d">BASE_H264PROFILE</option>
<option value="%(MAIN_H264PROFILE)d">MAIN_H264PROFILE</option>
<option value="%(HIGH_H264PROFILE)d">HIGH_H264PROFILE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_H264_B_FRAME_RATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_H264_B_FRAME_RATE'></td>
</tr>
</table>
<!-- END - H264 codec parameters -->
</td>
</tr> <!-- END - video codecs -->
<tr><th><b>Audio Codecs</b></th></tr>
<tr>
<td>
<label>
<input type='radio' name='acodec:' value='FE2_CODEC_AAC'
onfocus="set_acodec_visible('aactable')">
<abbr title="For use with 3GP/3G2/MOV/MP4">FE2_CODEC_AAC</abbr>
</label>
<label>
<input type='radio' name='acodec:' value='FE2_CODEC_AACPLUS'
onfocus="set_acodec_visible('aacplustable')">
<abbr title="For use with 3GP/3G2/MOV/MP4">FE2_CODEC_AACPLUS</abbr>
</label>
<label>
<input type='radio' name='acodec:' value='FE2_CODEC_AMR_NB'
onfocus="set_acodec_visible('amrnbtable')">
<abbr title="For use with 3GP">FE2_CODEC_AMR_NB</abbr>
</label>
<label>
<input type='radio' name='acodec:' value='FE2_CODEC_LAME'
onfocus="set_acodec_visible('lametable') ">
<abbr title="For use with FLV/SWF">FE2_CODEC_LAME</abbr>
</label>
<label>
<input type='radio' name='acodec:' value='FE2_CODEC_PCM'
onfocus="set_acodec_visible('pcmtable')">
<abbr title="For use with FLV/SWF">FE2_CODEC_PCM</abbr>
</label>
<!-- AMR_NB codec parameters -->
<table id='amrnbtable' class='hidden'>
<tr>
<th><abbr title="default: 12.2kbps">FE2_AMR_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_AMR_BITRATE'></td>
</tr>
</table>
<!-- END - AMR_NB codec parameters -->
<!-- AAC codec parameters -->
<table id='aactable' class='hidden'>
<tr>
<th><abbr title="default: 64kbps">FE2_AAC_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_AAC_BITRATE'></td>
</tr>
</table>
<!-- END - AAC codec parameters -->
<!-- AACPLUS codec parameters -->
<table id='aacplustable' class='hidden'>
<tr>
<th><abbr title="default: 64kbps">FE2_AACPLUS_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_AACPLUS_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: disabled (aacPlus v1)">FE2_AACPLUS_PARAMETRIC_STEREO</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_AACPLUS_PARAMETRIC_STEREO">
<option value=""></option>
<option value="0">disable (aacPlus v1)</option>
<option value="1">enable (aacPlus v2)</option>
</select>
</td>
</tr>
</table>
<!-- END - AACPLUS codec parameters -->
<!-- LAME codec parameters -->
<table id='lametable' class='hidden'>
<tr>
<th><abbr title="default: 64kbps">FE2_LAME_BITRATE</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_LAME_BITRATE'></td>
</tr>
<tr>
<th><abbr title="default: 5">FE2_LAME_QUALITY</abbr></th>
<td><input type='text' name='Flix2_CodecSetParam:FE2_LAME_QUALITY'></td>
</tr>
<tr>
<th><abbr title="default: LAME_CBR">FE2_LAME_RC_MODE</abbr></th>
<td>
<select name="Flix2_CodecSetParam:FE2_LAME_RC_MODE">
<option value=""></option>
<option value="%(LAME_CBR)d">LAME_CBR</option>
<option value="%(LAME_ABR)d">LAME_ABR</option>
<option value="%(LAME_VBR_rh)d">LAME_VBR_rh</option>
<option value="%(LAME_VBR_mtrh)d">LAME_VBR_mtrh</option>
</select>
</td>
</tr>
</table>
<!-- END - LAME codec parameters -->
<!-- PCM codec parameters -->
<table id='pcmtable' class='hidden'>
<tr>
<th>(FE2_CODEC_PCM defines no parameters)</th>
</tr>
</table>
<!-- END - PCM codec parameters -->
</td>
</tr> <!-- END - audio codecs -->
</table>
</fieldset>
<!-- ##FILTERS###################################################################### -->
<hr>
<fieldset class='collapsed' id="filters">
<legend onclick='toggle_expand(this)'>Filters</legend>
<table>
<tr><th><b>A/V Filters</b></th></tr>
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_CUT' value='avfilter:'
onchange="toggle_ftable('filter_cut',this.checked)">
FE2_FILTER_CUT
</label>
<table id='filter_cut' class='disabled'>
<tr>
<th><abbr title="default: 0">FE2_CUT_START_SEC</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CUT_START_SEC'></td>
</tr>
<tr>
<th><abbr title="default: -1">FE2_CUT_STOP_SEC</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CUT_STOP_SEC'></td>
</tr>
<tr>
<th><abbr title="default: 1">FE2_CUT_USE_SEEK</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_CUT_USE_SEEK">
<option value=""></option>
<option value="%(on2false)d">FALSE</option>
<option value="%(on2true)d">TRUE</option>
</select>
</td>
</tr>
</table>
</td>
</tr>
<!-- END - CUT filter parameters -->
<tr><th><b>Video Filters</b></th></tr>
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_ADAPTIVE_DEINTERLACE' value='vfilter:'
onchange="toggle_ftable('filter_adaptive_deinterlace',this.checked)">
FE2_FILTER_ADAPTIVE_DEINTERLACE
</label>
<table id='filter_adaptive_deinterlace' class='disabled'>
<tr>
<th><abbr title="default: 0">FE2_ADAPTIVE_DEINTERLACE_MODE</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_ADAPTIVE_DEINTERLACE_MODE'></td>
</tr>
</table>
</td>
</tr>
<!-- END - ADAPTIVE DEINTERLACE filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_BCHS' value='vfilter:'
onchange="toggle_ftable('filter_bchs',this.checked)">
FE2_FILTER_BCHS
</label>
<table id='filter_bchs' class='disabled'>
<tr>
<th><abbr title="default: 0">FE2_BCHS_BRIGHTNESS</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_BCHS_BRIGHTNESS'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_BCHS_CONTRAST</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_BCHS_CONTRAST'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_BCHS_HUE</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_BCHS_HUE'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_BCHS_SATURATION</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_BCHS_SATURATION'></td>
</tr>
</table>
</td>
</tr>
<!-- END - BCHS filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_CROP' value='vfilter:'
onchange="toggle_ftable('filter_crop',this.checked)">
FE2_FILTER_CROP
</label>
<table id='filter_crop' class='disabled'>
<tr>
<th><abbr title="default: 0">FE2_CROP_TOP</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CROP_TOP'></td>
</tr>
<tr>
<th><abbr title="default: input image height">FE2_CROP_BOTTOM</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CROP_BOTTOM'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_CROP_LEFT</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CROP_LEFT'></td>
</tr>
<tr>
<th><abbr title="default: input image width">FE2_CROP_RIGHT</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_CROP_RIGHT'></td>
</tr>
</table>
</td>
</tr>
<!-- END - CROP filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_FRAMERATE' value='vfilter:'
onchange="toggle_ftable('filter_framerate',this.checked)">
FE2_FILTER_FRAMERATE
</label>
<table id='filter_framerate' class='disabled'>
<tr>
<th><abbr title="decimation interval, range: [1,] default: disabled">FE2_FRAMERATE_DECIMATE</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_FRAMERATE_DECIMATE'></td>
</tr>
<tr>
<th><abbr title="explicit frame rate, range: (0.0,] default: disabled">FE2_FRAMERATE_FPS</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_FRAMERATE_FPS'></td>
</tr>
</table>
</td>
</tr>
<!-- END - FRAMERATE filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_OVERLAY' value='vfilter:'
onchange="toggle_ftable('filter_overlay',this.checked)">
FE2_FILTER_OVERLAY
</label>
<table id='filter_overlay' class='disabled'>
<tr>
<th>
<abbr title="Currently searching """ % flix_syms
print overlaydir
print """
for overlay images">FE2_OVERLAY_FILE</abbr>
</th>
<td>
""" % flix_syms
if os.path.exists(overlaydir):
print """<select name="Flix2_FilterSetParamAsStr:FE2_OVERLAY_FILE">"""
print "<option value=\"\"></option>\n"
files = os.listdir(overlaydir); files.sort()
for j in files:
if os.path.isdir(os.path.join(overlaydir,j)):
print "<option value=\"%s\">%s</option>" %\
(os.path.join(overlaydir,j), j)
print "</select>"
print """<br>default: None, must be set to the absolute path of the overlay
input file, e.g. '/path/to/my/overlay.png'"""
else:
print "WARNING couldn't open " + overlaydir + " os.path.exists() failed<br>"
print """
</td>
</tr>
<tr>
<th><abbr title="default: FALSE">FE2_OVERLAY_MASK_XY</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_OVERLAY_MASK_XY">
<option value=""></option>
<option value="%(on2false)d">FALSE</option>
<option value="%(on2true)d">TRUE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_MASK_X</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_MASK_X'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_MASK_Y</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_MASK_Y'></td>
</tr>
<tr>
<th><abbr title="default: FALSE">FE2_OVERLAY_MASK_RGB</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_OVERLAY_MASK_RGB">
<option value=""></option>
<option value="%(on2false)d">FALSE</option>
<option value="%(on2true)d">TRUE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_MASK_R</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_MASK_R'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_MASK_G</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_MASK_G'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_MASK_B</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_MASK_B'></td>
</tr>
<tr>
<th><abbr title="default: TOP LEFT">FE2_OVERLAY_POS</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_OVERLAY_POS">
<option value=""></option>
<option value="%(FE2_OVERLAY_POS_MODE_TOPLEFT)d">FE2_OVERLAY_POS_MODE_TOPLEFT</option>
<option value="%(FE2_OVERLAY_POS_MODE_BOTLEFT)d">FE2_OVERLAY_POS_MODE_BOTLEFT</option>
<option value="%(FE2_OVERLAY_POS_MODE_CENTER)d">FE2_OVERLAY_POS_MODE_CENTER</option>
<option value="%(FE2_OVERLAY_POS_MODE_TOPRIGHT)d">FE2_OVERLAY_POS_MODE_TOPRIGHT</option>
<option value="%(FE2_OVERLAY_POS_MODE_BOTRIGHT)d">FE2_OVERLAY_POS_MODE_BOTRIGHT</option>
<option value="%(FE2_OVERLAY_POS_MODE_XY)d">FE2_OVERLAY_POS_MODE_XY</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_POS_X</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_POS_X'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_OVERLAY_POS_Y</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_OVERLAY_POS_Y'></td>
</tr>
</table>
</td>
</tr>
<!-- END - OVERLAY filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_PNGEX' value='vfilter:'
onchange="toggle_ftable('filter_pngex',this.checked)">
FE2_FILTER_PNGEX
</label>
<table id='filter_pngex' class='disabled'>
<tr>
<th><abbr title="default: output file directory">FE2_PNGEX_OUTPUT_DIRECTORY</abbr></th>
<td><input type='text' name='Flix2_FilterSetParamAsStr:FE2_PNGEX_OUTPUT_DIRECTORY'></td>
</tr>
<tr>
<th><abbr title="default: none">FE2_PNGEX_FILENAME_PREFIX</abbr></th>
<td><input type='text' name='Flix2_FilterSetParamAsStr:FE2_PNGEX_FILENAME_PREFIX'></td>
</tr>
<tr>
<th><abbr title="default: none">FE2_PNGEX_FILENAME_SUFFIX</abbr></th>
<td><input type='text' name='Flix2_FilterSetParamAsStr:FE2_PNGEX_FILENAME_SUFFIX'></td>
</tr>
<tr>
<th><abbr title="default: input width">FE2_PNGEX_WIDTH</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_WIDTH'></td>
</tr>
<tr>
<th><abbr title="default: input height">FE2_PNGEX_HEIGHT</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_HEIGHT'></td>
</tr>
<tr>
<th><abbr title="default: FALSE">FE2_PNGEX_EXPORT_FIRST_FRAME_PNG</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_PNGEX_EXPORT_FIRST_FRAME_PNG">
<option value=""></option>
<option value="%(on2false)d">FALSE</option>
<option value="%(on2true)d">TRUE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: FALSE">FE2_PNGEX_ENABLE_ALPHA</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_PNGEX_ENABLE_ALPHA">
<option value=""></option>
<option value="%(on2false)d">FALSE</option>
<option value="%(on2true)d">TRUE</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="interval in ms; default: disabled">FE2_PNGEX_EXPORT_INTERVAL</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_EXPORT_INTERVAL'></td>
</tr>
<tr>
<th><abbr title="comma delimited, e.g. t0,t1,t2,...tn">FE2_PNGEX_EXPORT_TIME_STRING</abbr></th>
<td><input type='text' name='Flix2_FilterSetParamAsStr:FE2_PNGEX_EXPORT_TIME_STRING'></td>
</tr>
<tr>
<th><abbr title="default: FALSE">FE2_PNGEX_EXPORT_CUE_POINTS</abbr></th>
<td>
<select name="Flix2_FilterSetParam:FE2_PNGEX_EXPORT_CUE_POINTS">
<option value=""></option>
<option value="%(FE2_PNGEX_CP_ALL)d">All cue points (FE2_PNGEX_CP_ALL)</option>
<option value="%(FE2_PNGEX_CP_NAV)d">Only navigation cue points (FE2_PNGEX_CP_NAV)</option>
<option value="%(FE2_PNGEX_CP_EVENT)d">Only event cue points (FE2_PNGEX_CP_EVENT)</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="[-1,9] default: -1 (Z_DEFAULT_COMPRESSION)">FE2_PNGEX_COMPRESSION_LEVEL</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_COMPRESSION_LEVEL'></td>
</tr>
<tr><th><b>Automatic PNG Export Options:</b></th><td></td></tr>
<tr>
<th>FE2_PNGEX_AUTO_EXPORT_COUNT</th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_AUTO_EXPORT_COUNT'></td>
</tr>
<tr>
<th><abbr title="start time in ms; default: 0">FE2_PNGEX_AUTO_EXPORT_START_TIME</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_AUTO_EXPORT_START_TIME'></td>
</tr>
<tr>
<th><abbr title="stop time in ms; default: <clip length>">FE2_PNGEX_AUTO_EXPORT_END_TIME</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_AUTO_EXPORT_END_TIME'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_PNGEX_AUTO_EXPORT_RANDOM_PERIOD</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_PNGEX_AUTO_EXPORT_RANDOM_PERIOD'></td>
</tr>
</table>
</td>
</tr>
<!-- END - PNGEX filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_SCALE' value='vfilter:'
onchange="toggle_ftable('filter_scale',this.checked)">
FE2_FILTER_SCALE
</label>
<table id='filter_scale' class='disabled'>
<tr>
<th><abbr title="default: input image width">FE2_SCALE_WIDTH</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_SCALE_WIDTH'></td>
</tr>
<tr>
<th><abbr title="default: input image height">FE2_SCALE_HEIGHT</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_SCALE_HEIGHT'></td>
</tr>
</table>
</td>
</tr>
<!-- END - SCALE filter parameters -->
<tr><th><b>Audio Filters</b></th></tr>
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_HIGHPASS' value='afilter:'
onchange="toggle_ftable('filter_highpass',this.checked)">
FE2_FILTER_HIGHPASS
</label>
<table id='filter_highpass' class='disabled'>
<tr>
<th><abbr title="default: 0.707">FE2_HIGHPASS_Q</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_HIGHPASS_Q'></td>
</tr>
<tr>
<th>FE2_HIGHPASS_CUTOFF</th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_HIGHPASS_CUTOFF'></td>
</tr>
</table>
</td>
</tr>
<!-- END - HIGHPASS filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_LOWPASS' value='afilter:'
onchange="toggle_ftable('filter_lowpass',this.checked)">
FE2_FILTER_LOWPASS
</label>
<table id='filter_lowpass' class='disabled'>
<tr>
<th><abbr title="default: 0.707">FE2_LOWPASS_Q</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_LOWPASS_Q'></td>
</tr>
<tr>
<th>FE2_LOWPASS_CUTOFF</th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_LOWPASS_CUTOFF'></td>
</tr>
</table>
</td>
</tr>
<!-- END - LOWPASS filter parameters -->
<tr>
<td>
<label>
<input type='checkbox' class='filter'
name='FE2_FILTER_RESAMPLE' value='afilter:'
onchange="toggle_ftable('filter_resample',this.checked)">
FE2_FILTER_RESAMPLE
</label>
<table id='filter_resample' class='disabled'>
<tr>
<th><abbr title="default: 0">FE2_RESAMPLE_RATE</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_RESAMPLE_RATE'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_RESAMPLE_CHANNELS</abbr></th>
<td><input type='text' name='Flix2_FilterSetParam:FE2_RESAMPLE_CHANNELS'></td>
</tr>
</table>
</td>
</tr>
<!-- END - RESAMPLE filter parameters -->
</table>
</fieldset>
<!-- ##MUXERS####################################################################### -->
<hr>
<fieldset class='collapsed' id="muxers">
<legend onclick='toggle_expand(this)'>Muxers</legend>
<table>
<tr>
<td>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_3GP'
onfocus="set_muxer_visible('tgptable')">
FE2_MUXER_3GP
</label>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_3G2'
onfocus="set_muxer_visible('tg2table')">
FE2_MUXER_3G2
</label>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_FLV'
onfocus="set_muxer_visible('flvtable',true)">
FE2_MUXER_FLV
</label>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_MOV'
onfocus="set_muxer_visible('movtable')">
FE2_MUXER_MOV
</label>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_MP4'
onfocus="set_muxer_visible('mp4table')">
FE2_MUXER_MP4
</label>
<label>
<input type='radio' name='muxer:' value='FE2_MUXER_SWF'
onfocus="set_muxer_visible('swftable',true)">
FE2_MUXER_SWF
</label>
<!-- 3GP muxer parameters -->
<table id='tgptable' class='hidden'>
<tr>
<th>(FE2_MUXER_3GP currently defines no parameters)</th>
</tr>
</table>
<!-- END - 3GP muxer parameters -->
<!-- 3G2 muxer parameters -->
<table id='tg2table' class='hidden'>
<tr>
<th>(FE2_MUXER_3G2 currently defines no parameters)</th>
</tr>
</table>
<!-- END - 3G2 muxer parameters -->
<!-- FLV muxer parameters -->
<table id='flvtable' class='hidden'>
<tr>
<th><abbr title="Format = cueptNAME '=' cueptTIME_SECONDS e.g. 'evtpt0=343.0'">
FE2_FLV_CUEPT_EVENT</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_FLV_CUEPT_EVENT'></td>
</tr>
<tr>
<th><abbr title="Format = cueptNAME '=' cueptTIME_SECONDS e.g. 'navpt0=343.0'">
FE2_FLV_CUEPT_NAV</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_FLV_CUEPT_NAV'></td>
</tr>
<tr>
<th><abbr title="e.g. 'cuept_name&n0=v0&n1=v1...'">
FE2_FLV_CUEPT_PARAM</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_FLV_CUEPT_PARAM'></td>
</tr>
</table>
<!-- END - FLV muxer parameters -->
<!-- MOV muxer parameters -->
<table id='movtable' class='hidden'>
<tr>
<th>(FE2_MUXER_MOV currently defines no parameters)</th>
</tr>
</table>
<!-- END - MOV muxer parameters -->
<!-- MP4 muxer parameters -->
<table id='mp4table' class='hidden'>
<tr>
<th>(FE2_MUXER_MP4 currently defines no parameters)</th>
</tr>
</table>
<!-- END - MP4 muxer parameters -->
<!-- SWF muxer parameters -->
<table id='swftable' class='hidden'>
<tr>
<th><abbr title="default: video width">FE2_SWF_WIDTH</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_WIDTH'></td>
</tr>
<tr>
<th><abbr title="default: video height">FE2_SWF_HEIGHT</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_HEIGHT'></td>
</tr>
<tr>
<th><abbr title="default: video framerate">FE2_SWF_FRAMERATE</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_FRAMERATE'></td>
</tr>
<tr>
<th>FE2_SWF_LOOP_COUNT</th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_LOOP_COUNT'></td>
</tr>
<tr>
<th><abbr title="default: none">FE2_SWF_EMBEDDED_URL</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_SWF_EMBEDDED_URL'></td>
</tr>
<tr>
<th><abbr title="default: _self">FE2_SWF_EMBEDDED_URL_TARGET</abbr></th>
<td>
<select name='Flix2_MuxerSetParamAsStr:FE2_SWF_EMBEDDED_URL_TARGET'>
<option value=""></option>
<option value="_self">_self</option>
<option value="_blank">_blank</option>
<option value="_parent">_parent</option>
<option value="_top">_top</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: EmbeddedUrlIsLoadMovie">FE2_SWF_EMBEDDED_URL_TYPE</abbr></th>
<td>
<select name='Flix2_MuxerSetParam:FE2_SWF_EMBEDDED_URL_TYPE'>
<option value=""></option>
<option value="%(EmbeddedUrlIsGetUrl)d">EmbeddedUrlIsGetUrl</option>
<option value="%(EmbeddedUrlIsLoadMovie)d">EmbeddedUrlIsLoadMovie</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="e.g. n0=v0&n1=v1...">FE2_SWF_ADD_VARIABLE</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_SWF_ADD_VARIABLE'></td>
</tr>
<tr><th><b>Preloader Settings:</b></th><td></td></tr>
<tr>
<th><abbr title="default: SwfPreloaderNone">FE2_SWF_PRELOAD_TYPE</abbr></th>
<td>
<select name='Flix2_MuxerSetParam:FE2_SWF_PRELOAD_TYPE'>
<option value=""></option>
<option value="%(SwfPreloaderNone)d">SwfPreloaderNone</option>
<option value="%(SwfFixedPreloader)d">SwfFixedPreloader</option>
<option value="%(SwfAdaptivePreloader)d">SwfAdaptivePreloader</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 20">FE2_SWF_FIXED_PRELOAD_PCT</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_FIXED_PRELOAD_PCT'></td>
</tr>
<tr>
<th><abbr title="default: 1.1">FE2_SWF_ADAPTIVE_PRELOAD_BUFFER_FACTOR</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_ADAPTIVE_PRELOAD_BUFFER_FACTOR'></td>
</tr>
<tr><th><b>Start Settings:</b></th><td></td></tr>
<tr>
<th><abbr title="default: SwfOnMovieStartAutomatically">FE2_SWF_ON_START_OPTION</abbr></th>
<td>
<select name='Flix2_MuxerSetParam:FE2_SWF_ON_START_OPTION'>
<option value=""></option>
<option value="%(SwfOnMovieStartAutomatically)d">SwfOnMovieStartAutomatically</option>
<option value="%(SwfOnMovieStartOnClick)d">SwfOnMovieStartOnClick</option>
<option value="%(SwfOnMovieStartWait)d">SwfOnMovieStartWait</option>
<option value="%(SwfOnMovieStartEmbedSTOP)d">SwfOnMovieStartEmbedSTOP</option>
</select>
</td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_SWF_START_BLANK_FRAME</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_START_BLANK_FRAME'></td>
</tr>
<tr>
<th><abbr title="default: 0">FE2_SWF_START_WAIT_SEC</abbr></th>
<td><input type='text' name='Flix2_MuxerSetParam:FE2_SWF_START_WAIT_SEC'></td>
</tr>
<tr><th><b>End Settings:</b></th><td></td></tr>
<tr>
<th><abbr title="default: SwfOnMovieEndNothing">FE2_SWF_ON_END_OPTION</abbr></th>
<td>
<select name='Flix2_MuxerSetParam:FE2_SWF_ON_END_OPTION'>
<option value=""></option>
<option value="%(SwfOnMovieEndNothing)d">SwfOnMovieEndNothing</option>
<option value="%(SwfOnMovieEndSTOP)d">SwfOnMovieEndSTOP</option>
<option value="%(SwfOnMovieEndLoop)d">SwfOnMovieEndLoop</option>
<option value="%(SwfOnMovieEndUnload)d">SwfOnMovieEndUnload</option>
<option value="%(SwfOnMovieEndLoadMovie)d">SwfOnMovieEndLoadMovie</option>
</select>
</td>
</tr>
<tr>
<th>FE2_SWF_ON_END_URL</th>
<td><input type='text' name='Flix2_MuxerSetParamAsStr:FE2_SWF_ON_END_URL'></td>
</tr>
</table>
<!-- END - SWF muxer parameters -->
</table>
</fieldset>
<!-- ##END FORM######################################################### -->
<hr>
<p>
<input type="submit" value="Start Encode">
<input type='reset' value='Reset' onclick='reset_tables();'>
</p>
</form>
</div>
</body>
</html>
""" % flix_syms
import sys,os,cgi
import flixengine2
import time
import string
def print_encoder_status():
print "<br>Encoder Status<br>"
res= flixengine2.Flix2_GetEncoderState(flix)
print " Flix2_GetEncoderState: %d<br>" % res[1]
res= flixengine2.Flix2_Errno(flix)
print " Flix2_Errno: sc:%d flixerrno:%d syserrno:%d<br>" %\
(res[0],res[1],res[2])
def process_sc(func, sc):
print "<td align=\"center\">%d</td>" % sc
if (sc != flixengine2.ON2_OK):
if (sc == flixengine2.ON2_NET_ERROR): str = "rpcerr"
else: str = "flixerrno"
res = flixengine2.Flix2_Errno(flix)
print "<td>Flix2_Errno: sc:%d %s:%d syserrno:%d</td>" %\
(res[0],str,res[1],res[2])
raise Exception(func)
print "</tr>"
def SimpleGet(func):
res = func(flix)
if (res[0] != 0):
raise Exception(func)
return res[1]
def SimpleSet(func, arg):
functry = func+'(flix, arg)'
print "<tr><td>%s( %s )</td>" % (func, arg)
sc = eval(functry)
process_sc(func,sc)
def SimpleSetNum(func, arg):
functry = func+'(flix, int(arg))'
print "<tr><td>%s( %d )</td>" % (func, int(arg))
sc = eval(functry)
process_sc(func,sc)
def init_codec(name):
global codec, codecptr
if(codecptr):
flixengine2.delete_flix2plgnhandlep(codecptr)
print "<tr><td>Flix2_AddCodec( %s )</td>" % name
codecptr = flixengine2.new_flix2plgnhandlep()
sc = flixengine2.Flix2_AddCodec(codecptr, flix, eval('flixengine2.'+name))
process_sc('Flix2_AddCodec',sc)
codec = flixengine2.flix2plgnhandlep_value(codecptr)
def codec_interface(funcname, name, value):
print "<tr><td>%s( %s, %s )</td>" % (funcname,name,value)
if 'AsStr' in funcname:
functry = 'flixengine2.'+funcname+'(codec, flixengine2.'+name+' , \"'+value+'\")'
else:
functry = 'flixengine2.'+funcname+'(codec, flixengine2.'+name+' , '+value+')'
sc = eval(functry)
process_sc(funcname,sc)
def init_filter(name):
global filter, filterptr
if(filterptr):
flixengine2.delete_flix2plgnhandlep(filterptr)
print "<tr><td>Flix2_AddCodec( %s )</td>" % name
filterptr = flixengine2.new_flix2plgnhandlep()
sc = flixengine2.Flix2_AddFilter(filterptr, flix, eval('flixengine2.'+name))
process_sc('Flix2_AddFilter',sc)
filter = flixengine2.flix2plgnhandlep_value(filterptr)
def filter_interface(funcname, name, value):
print "<tr><td>%s( %s, %s )</td>" % (funcname,name,value)
if 'AsStr' in funcname:
functry = 'flixengine2.'+funcname+'(filter, flixengine2.'+name+' , \"'+value+'\")'
else:
functry = 'flixengine2.'+funcname+'(filter, flixengine2.'+name+' , '+value+')'
sc = eval(functry)
process_sc(funcname,sc)
def init_muxer(name):
global muxer, muxerptr
if(muxerptr):
flixengine2.delete_flix2plgnhandlep(muxerptr)
print "<tr><td>Flix2_AddMuxer( %s )</td>" % name
muxerptr = flixengine2.new_flix2plgnhandlep()
sc = flixengine2.Flix2_AddMuxer(muxerptr, flix, eval('flixengine2.'+name))
process_sc('Flix2_AddMuxer',sc)
muxer = flixengine2.flix2plgnhandlep_value(muxerptr)
def muxer_interface(funcname, name, value):