| | |
| | '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; |
| | }; |
| | }; |
| |
|