Пример #1
0
        public void DataEventAfterSingleConfigurationChange()
        {
            Assert.DoesNotThrow(
                () =>
            {
                using (var bufferController = new StreamBufferController(Observable.Return <PlayerState>(PlayerState.Playing)))
                {
                    bufferController.Initialize(StreamType.Audio);
                    bufferController.Initialize(StreamType.Video);
                    var dataArgsHolder = new DataRequest[(int)StreamType.Count];

                    using (bufferController.DataNeededStateChanged()
                           .Subscribe(a => { dataArgsHolder[(int)a.StreamType] = a; },
                                      SynchronizationContext.Current))
                    {
                        var conf = new MetaDataStreamConfig
                        {
                            Bandwidth      = 123456789,
                            BufferDuration = TimeSpan.FromSeconds(15),
                            Stream         = StreamType.Audio
                        };
                        bufferController.SetMetaDataConfiguration(conf);

                        SpinWait.SpinUntil(() => dataArgsHolder[(int)StreamType.Audio] != null,
                                           TimeSpan.FromSeconds(2));

                        Assert.IsTrue(
                            dataArgsHolder[(int)StreamType.Audio].CompareMetaData(conf), $"Expected: Same Result: {conf} {dataArgsHolder[(int)StreamType.Audio]}");
                    }
                }
            });
        }
Пример #2
0
        public void UpdateBufferConfiguration(MetaDataStreamConfig newStreamConfig)
        {
            var previousMax = maxBufferDuration;

            UpdateBufferDuration(newStreamConfig.BufferDuration);

            var durationDiff = maxBufferDuration - previousMax;

            Interlocked.Add(ref bufferAvailableTicks, durationDiff.Ticks);
        }
Пример #3
0
        public static bool CompareMetaData(this DataRequest a, MetaDataStreamConfig b)
        {
            if (a == null && b == null)
            {
                return(true);
            }

            if (a == null || b == null)
            {
                return(false);
            }

            return(a.StreamType == b.StreamType() &&
                   a.Duration == b.BufferDuration);
        }