| |
| 'use strict'; |
|
|
| var utils = require('../utils'); |
|
|
| |
| |
| |
|
|
| module.exports = function(proto) { |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.mergeAdd = |
| proto.addInput = |
| proto.input = function(source) { |
| var isFile = false; |
| var isStream = false; |
|
|
| if (typeof source !== 'string') { |
| if (!('readable' in source) || !(source.readable)) { |
| throw new Error('Invalid input'); |
| } |
|
|
| var hasInputStream = this._inputs.some(function(input) { |
| return input.isStream; |
| }); |
|
|
| if (hasInputStream) { |
| throw new Error('Only one input stream is supported'); |
| } |
|
|
| isStream = true; |
| source.pause(); |
| } else { |
| var protocol = source.match(/^([a-z]{2,}):/i); |
| isFile = !protocol || protocol[0] === 'file'; |
| } |
|
|
| this._inputs.push(this._currentInput = { |
| source: source, |
| isFile: isFile, |
| isStream: isStream, |
| options: utils.args() |
| }); |
|
|
| return this; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.withInputFormat = |
| proto.inputFormat = |
| proto.fromFormat = function(format) { |
| if (!this._currentInput) { |
| throw new Error('No input specified'); |
| } |
|
|
| this._currentInput.options('-f', format); |
| return this; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.withInputFps = |
| proto.withInputFPS = |
| proto.withFpsInput = |
| proto.withFPSInput = |
| proto.inputFPS = |
| proto.inputFps = |
| proto.fpsInput = |
| proto.FPSInput = function(fps) { |
| if (!this._currentInput) { |
| throw new Error('No input specified'); |
| } |
|
|
| this._currentInput.options('-r', fps); |
| return this; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.nativeFramerate = |
| proto.withNativeFramerate = |
| proto.native = function() { |
| if (!this._currentInput) { |
| throw new Error('No input specified'); |
| } |
|
|
| this._currentInput.options('-re'); |
| return this; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.setStartTime = |
| proto.seekInput = function(seek) { |
| if (!this._currentInput) { |
| throw new Error('No input specified'); |
| } |
|
|
| this._currentInput.options('-ss', seek); |
|
|
| return this; |
| }; |
|
|
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| proto.loop = function(duration) { |
| if (!this._currentInput) { |
| throw new Error('No input specified'); |
| } |
|
|
| this._currentInput.options('-loop', '1'); |
|
|
| if (typeof duration !== 'undefined') { |
| this.duration(duration); |
| } |
|
|
| return this; |
| }; |
| }; |
|
|