diff --git a/awcy_server.ts b/awcy_server.ts index 98e8bac5..a11f5825 100644 --- a/awcy_server.ts +++ b/awcy_server.ts @@ -116,6 +116,7 @@ function process_build_queue() { env['CODEC'] = build_job.codec; env['EXTRA_OPTIONS'] = build_job.extra_options; env['BUILD_OPTIONS'] = build_job.build_options; + env['ENCODING_MODE'] = build_job.encoding_mode; env['RUN_ID'] = build_job.run_id; env['APP_DIR'] = app_dir; env['CODECS_SRC_DIR'] = codecs_src_dir; @@ -390,6 +391,7 @@ app.post('/submit/job',function(req,res) { 'extra_options': req.body.extra_options, 'build_options': req.body.build_options, 'qualities': req.body.qualities, + 'encoding_mode': req.body.encoding_mode, 'master': req.body.master, 'ab_compare': req.body.ab_compare, 'save_encode': req.body.save_encode, diff --git a/www/src/components/Job.tsx b/www/src/components/Job.tsx index 16635b0e..49d47fbb 100644 --- a/www/src/components/Job.tsx +++ b/www/src/components/Job.tsx @@ -145,6 +145,7 @@ export class JobComponent extends React.Component { constructor() { super(); @@ -28,6 +29,7 @@ export class SubmitJobFormComponent extends React.Component<{ job.extraOptions = template.extraOptions; job.nick = template.nick; job.qualities = template.qualities; + job.encodingMode = template.encodingMode; job.id = template.id; if (job.id.indexOf("@") > 0) { job.id = job.id.substr(0, job.id.indexOf("@")); @@ -37,11 +39,13 @@ export class SubmitJobFormComponent extends React.Component<{ } let task = job.task ? job.task : "objective-1-fast"; let codec = job.codec ? job.codec : "av1"; + let encoding_mode = job.encodingMode ? job.encodingMode : "quantizer"; job.id += "@" + formatDate(new Date()); this.state = { job: null, set: {label: task, value: task}, - codec: {label: Job.codecs[codec], value: codec} + codec: {label: Job.codecs[codec], value: codec}, + encoding_mode: {label: Job.encodingModes[encoding_mode], value: encoding_mode} } as any; job.saveEncodedFiles = true; this.setState({ job } as any); @@ -56,7 +60,7 @@ export class SubmitJobFormComponent extends React.Component<{ let job = this.state.job; switch (name) { case "all": - return ["id", "commit", "codec", "set", "nick", "qualities"].every(name => + return ["id", "commit", "codec", "encoding_mode", "set", "nick", "qualities"].every(name => (this.getValidationState(name) === "success") ) ? "success" : "error"; case "id": @@ -81,6 +85,11 @@ export class SubmitJobFormComponent extends React.Component<{ case "codec": if (this.state.codec.value) return "success"; break; + case "encoding_mode": + if (this.state.encoding_mode.value) { + return "success"; + } + break; case "set": if (this.state.set.value) return "success"; break; @@ -120,15 +129,21 @@ export class SubmitJobFormComponent extends React.Component<{ job.date = new Date(); job.task = this.state.set.value; job.codec = this.state.codec.value; + job.encodingMode = this.state.encoding_mode.value; this.props.onCreate(job); } onCancel() { this.props.onCancel(); } + onChangeCodec(codec: Option) { this.setState({ codec } as any, () => { }); } + onChangeEncodingMode(encoding_mode: Option) { + this.setState({ encoding_mode } as any, () => { }); + } + onChangeSet(set: Option) { this.setState({ set } as any, () => { }); } @@ -149,6 +164,12 @@ export class SubmitJobFormComponent extends React.Component<{ codecOptions.push({ value: key, label: name }); } + let encodingModeOptions = []; + for (let key in Job.encodingModes) { + let name = Job.encodingModes[key]; + encodingModeOptions.push({ value: key, label: name }); + } + let setOptions = []; for (let key in Job.sets) { let set = Job.sets[key]; @@ -171,6 +192,11 @@ export class SubmitJobFormComponent extends React.Component<{ + + Set