public override void BuildPipeline(StreamContext context) { SetupAssemblyLoader(); // input bool doInputReader = context.Source.NeedsInputReaderUnit; if (doInputReader) { context.Pipeline.AddDataUnit(context.Source.GetInputReaderUnit(), 1); } // get parameters VLCParameters vlcparam = GenerateVLCParameters(context); int duration = (int)Math.Round((decimal)context.MediaInfo.Duration / 1000); // add the unit VLCManagedEncoder unit; if (doInputReader) { unit = new VLCManagedEncoder(vlcparam.Sout, vlcparam.Arguments, context, VLCManagedEncoder.InputMethod.NamedPipe); } else { unit = new VLCManagedEncoder(vlcparam.Sout, vlcparam.Arguments, context, VLCManagedEncoder.InputMethod.File, context.Source.GetPath()); } context.Pipeline.AddDataUnit(unit, 5); }
public void BuildPipeline(StreamContext context, EncoderUnit.LogStream log) { // input bool doInputReader = context.Source.NeedsInputReaderUnit; if (doInputReader) { context.Pipeline.AddDataUnit(context.Source.GetInputReaderUnit(), 1); } // get parameters VLCParameters vlcparam = GenerateVLCParameters(context); string path = @"\#OUT#"; string sout = vlcparam.Sout.Replace("#OUT#", path); // generate vlc argument string var quotedArgList = vlcparam.Arguments.Select(x => x.Replace("\"", "\\\"")); string vlcArguments = "\"" + String.Join("\" \"", quotedArgList) + "\""; string arguments = GenerateArguments(vlcparam.Input, sout, vlcArguments); // add the unit EncoderUnit.TransportMethod input = doInputReader ? EncoderUnit.TransportMethod.NamedPipe : EncoderUnit.TransportMethod.Other; EncoderUnit.TransportMethod outputMethod = readOutputStream ? EncoderUnit.TransportMethod.NamedPipe : EncoderUnit.TransportMethod.Other; // waiting for output pipe is meaningless for VLC as it opens it way earlier then that it actually writes to it. Instead, log parsing // in VLCWrapped handles the delay (yes, this class is standalone probably useless but is provided for debugging). EncoderUnit unit = new EncoderUnit(context.Profile.CodecParameters["path"], arguments, input, outputMethod, log); unit.DebugOutput = false; // change this for debugging context.Pipeline.AddDataUnit(unit, 5); }
protected override void AddEncoderToPipeline(bool hasInputReader) { SetupAssemblyLoader(); // get parameters VLCParameters vlcparam = GenerateVLCParameters(); int duration = (int)Math.Round((decimal)Context.MediaInfo.Duration / 1000); // add the unit VLCManagedEncoder unit; if (hasInputReader) { unit = new VLCManagedEncoder(vlcparam.Sout, vlcparam.Arguments, Context, VLCManagedEncoder.InputMethod.NamedPipe); } else { unit = new VLCManagedEncoder(vlcparam.Sout, vlcparam.Arguments, Context, VLCManagedEncoder.InputMethod.File, Context.Source.GetPath()); } Context.Pipeline.AddDataUnit(unit, 5); }