Пример #1
0
        private bool IsConditionSatisfied(ProfileCondition condition, float?currentValue)
        {
            if (!currentValue.HasValue)
            {
                // If the value is unknown, it satisfies if not marked as required
                return(!condition.IsRequired);
            }

            float expected;

            if (FloatHelper.TryParseCultureInvariant(condition.Value, out expected))
            {
                switch (condition.Condition)
                {
                case ProfileConditionType.Equals:
                    return(currentValue.Value.Equals(expected));

                case ProfileConditionType.GreaterThanEqual:
                    return(currentValue.Value >= expected);

                case ProfileConditionType.LessThanEqual:
                    return(currentValue.Value <= expected);

                case ProfileConditionType.NotEquals:
                    return(!currentValue.Value.Equals(expected));

                default:
                    throw new InvalidOperationException("Unexpected ProfileConditionType");
                }
            }

            return(false);
        }
Пример #2
0
        private void ApplyTranscodingConditions(StreamInfo item, IEnumerable <ProfileCondition> conditions)
        {
            foreach (ProfileCondition condition in conditions)
            {
                string value = condition.Value;

                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }

                // No way to express this
                if (condition.Condition == ProfileConditionType.GreaterThanEqual)
                {
                    continue;
                }

                switch (condition.Property)
                {
                case ProfileConditionValue.AudioBitrate:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.AudioBitrate = num;
                    }
                    break;
                }

                case ProfileConditionValue.AudioChannels:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxAudioChannels = num;
                    }
                    break;
                }

                case ProfileConditionValue.IsAnamorphic:
                case ProfileConditionValue.AudioProfile:
                case ProfileConditionValue.Has64BitOffsets:
                case ProfileConditionValue.PacketLength:
                case ProfileConditionValue.NumAudioStreams:
                case ProfileConditionValue.NumVideoStreams:
                case ProfileConditionValue.IsSecondaryAudio:
                case ProfileConditionValue.VideoTimestamp:
                {
                    // Not supported yet
                    break;
                }

                case ProfileConditionValue.RefFrames:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxRefFrames = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoBitDepth:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxVideoBitDepth = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoProfile:
                {
                    item.VideoProfile = (value ?? string.Empty).Split('|')[0];
                    break;
                }

                case ProfileConditionValue.Height:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxHeight = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoBitrate:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.VideoBitrate = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoFramerate:
                {
                    float num;
                    if (FloatHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxFramerate = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoLevel:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.VideoLevel = num;
                    }
                    break;
                }

                case ProfileConditionValue.Width:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxWidth = num;
                    }
                    break;
                }
                }
            }
        }
Пример #3
0
        private void ApplyTranscodingConditions(StreamInfo item, IEnumerable <ProfileCondition> conditions)
        {
            foreach (ProfileCondition condition in conditions)
            {
                string value = condition.Value;

                if (string.IsNullOrEmpty(value))
                {
                    continue;
                }

                switch (condition.Property)
                {
                case ProfileConditionValue.AudioBitrate:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.AudioBitrate = num;
                    }
                    break;
                }

                case ProfileConditionValue.AudioChannels:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxAudioChannels = num;
                    }
                    break;
                }

                case ProfileConditionValue.AudioProfile:
                case ProfileConditionValue.IsAnamorphic:
                case ProfileConditionValue.Has64BitOffsets:
                case ProfileConditionValue.PacketLength:
                case ProfileConditionValue.VideoTimestamp:
                {
                    // Not supported yet
                    break;
                }

                case ProfileConditionValue.RefFrames:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxRefFrames = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoBitDepth:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxVideoBitDepth = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoProfile:
                {
                    item.VideoProfile = value;
                    break;
                }

                case ProfileConditionValue.Height:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxHeight = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoBitrate:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.VideoBitrate = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoFramerate:
                {
                    float num;
                    if (FloatHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxFramerate = num;
                    }
                    break;
                }

                case ProfileConditionValue.VideoLevel:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.VideoLevel = num;
                    }
                    break;
                }

                case ProfileConditionValue.Width:
                {
                    int num;
                    if (IntHelper.TryParseCultureInvariant(value, out num))
                    {
                        item.MaxWidth = num;
                    }
                    break;
                }

                default:
                    throw new ArgumentException("Unrecognized ProfileConditionValue");
                }
            }
        }