public VideoBlenderContext(VideoBlenderSetup setup, PayloadPool <Frame> framePool, IStreamerBase streamer, OverloadController overloadController, Action pushPipeline) { _name = new NodeName("VE", null, "BL", 1); _fps = setup.Fps; _framePool = framePool; _streamer = streamer; _overloadController = overloadController; _pushPipeline = pushPipeline; _delayFromRuntime = ToTime(setup.DelayFromRuntimeFrames); // 3 frames in client _pushPipelineDelay = ToTime(setup.PushPipelineDelayFrames); // 3 frames Reconfigure(setup); _timer = _streamer.Subscribe(15, OnTimer); if (setup.Dx != null) { if (setup.BlendingType == BlendingType.Smart) { _directXPipeline = LoadPipline(BlendingType.Linear, setup.Dx); _directXPipelineLowRes = LoadPipline(BlendingType.BilinearLowRes, setup.Dx); } else { _directXPipeline = LoadPipline(setup.BlendingType, setup.Dx); } } _currentFpsTicks = ToTicks(Core.GetCurrentTime() - 600_000); // -60ms }
public VideoEncoderTrunk(IStreamerBase streamer, OverloadController overloadController) { BlenderQueue = new UnorderedStreamQueue <Frame>(new NodeName("VE", null, "BLq", 1), streamer.FramePool); Blender = new VideoBlenderNode(new NodeName("VE", null, "BL", 1), streamer, overloadController); PreEncoderFilterQueue = new UnorderedStreamQueue <Frame>(new NodeName("VE", null, "FPreq", 3), streamer.FramePool); PreEncoderFilterPool = new NodePool <IFilterContext, FilterSetup, Frame, Frame>(new NodeName("VE", null, "FPre", 3), streamer, i => new FilterNode(new NodeName("VE", null, "FPre", 3, i), streamer)); EncoderQueue = new OrderedStreamQueue <Frame>(new NodeName("VE", null, "Eq", 4), streamer.FramePool); EncoderNode = new EncoderNode(new NodeName("VE", null, "E", 4), streamer); EncoderAndUiFilterDuplicateQueue = new DuplicateQueue <Frame>(streamer.FramePool); UiFilterQueue = new UnorderedStreamQueue <Frame>(new NodeName("VE", null, "FUIq", 9), streamer.FramePool, 2); BackgroundFrame = new FixedFrame(); }
public FpsQueue(NodeName name, ITargetQueue <TPayload> next, IStreamerBase streamerBase, PayloadPool <TPayload> payloadPool, int fps, int maxDeviation, AVRational timeBase, OverloadController overloadController, int version) { Name = name; _next = next; _payloadPool = payloadPool; Fps = fps; _maxDeviation = maxDeviation; _overloadController = overloadController; _version = version; _statisticKeeper = new StatisticKeeper <StatisticDataOfFpsQueue>(name); if (timeBase.den != 10_000_000) { throw new InvalidOperationException($"FpsQueue {name} requires correct timeBase (not {timeBase.num}/{timeBase.den})"); } }
private void Awake() { m_Rigidbody = GetComponent <Rigidbody>(); m_OverloadController = GetComponent <OverloadController>(); m_Source = GetComponent <AudioSource>(); }
public VideoBlenderNode(NodeName name, IStreamerBase streamer, OverloadController overloadController) : base(name, streamer) { _statisticKeeper2 = new StatisticKeeper <StatisticDataOfBlenderNode>(name); _overloadController = overloadController; }