Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Candidate/1.6.0 #141

Merged
merged 34 commits into from
Oct 4, 2024
Merged
Changes from 1 commit
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
37d2468
Added failing test for media sequence calculation with skip
theRealRobG Aug 31, 2024
e8bf3ac
Added EXT-X-SKIP tag
theRealRobG Aug 31, 2024
ea3fa9c
Accounted for skip tags in media sequence calculation
theRealRobG Aug 31, 2024
9f03dc7
Adding multivariant playlist tags defined in draft 15 and still missi…
theRealRobG Sep 1, 2024
84b3a0b
Add attributes missing from EXT-X-MEDIA as of draft 15
theRealRobG Sep 2, 2024
63aaabc
Updated test comment with up-to-date docs for EXT-X-MEDIA
theRealRobG Sep 2, 2024
28d401a
Add attributes missing from EXT-X-STREAM-INF as of draft 15
theRealRobG Sep 2, 2024
064b48d
Add attributes missing from EXT-X-I-FRAME-STREAM-INF as of draft 15
theRealRobG Sep 2, 2024
9390aed
Updated encryption method enum with new type
theRealRobG Sep 2, 2024
a46b9e4
Added parsing for CHANNELS attribute
theRealRobG Sep 2, 2024
2441804
Added parsing for HDCP-LEVEL
theRealRobG Sep 2, 2024
492bc60
Added parsing for VIDEO-RANGE
theRealRobG Sep 3, 2024
4fd3f9d
Added parsing for REQ-VIDEO-LAYOUT
theRealRobG Sep 3, 2024
32d0ec8
Added parsing for FORMAT in EXT-X-SESSION-DATA
theRealRobG Sep 3, 2024
cdd2694
Corrected location for EXT-X-SESSION-DATA playlist validation
theRealRobG Sep 3, 2024
e6e31ca
Updated test sample manifest for readability
theRealRobG Sep 4, 2024
d7c4e21
Updated media sequence calculation logic to avoid unnecessary looping
theRealRobG Sep 4, 2024
0fdcbe6
Adding action to build and test iOS and tvOS targets
theRealRobG Sep 4, 2024
a234e9e
Attempting new way of defining iPhone device for testing
theRealRobG Sep 4, 2024
7d68c89
Added logging of env variables
theRealRobG Sep 4, 2024
4c90e1a
Cleaned up branches targeted for action
theRealRobG Sep 4, 2024
b79049c
Merge pull request #134 from Comcast/adding-github-actions
rmigneco Sep 4, 2024
f535098
Merge branch 'develop_1.x' into playlist-delta-updates
theRealRobG Sep 4, 2024
db05335
Merge pull request #130 from Comcast/playlist-delta-updates
rmigneco Sep 4, 2024
2f1eb23
Merge branch 'develop_1.x' into missing-multivariant-playlist-tags-fr…
theRealRobG Sep 4, 2024
c871de1
Favor structs over classes
theRealRobG Sep 7, 2024
f23275d
Favor not double declaring the issue variable
theRealRobG Sep 7, 2024
440593f
Clarified enum naming and favored more terse function syntax
theRealRobG Sep 7, 2024
34de4a9
Favor enums rather than structs holding enums
theRealRobG Sep 7, 2024
02d2cb9
Introduce unrecognized cases to keep parsing forward compatible
theRealRobG Sep 7, 2024
2d21125
Explicitly indicate class is final
theRealRobG Sep 9, 2024
9fbb538
Merge pull request #132 from Comcast/missing-multivariant-playlist-ta…
theRealRobG Sep 9, 2024
0c84c22
Merge branch 'develop_1.x' into candidate/1.6.0
theRealRobG Oct 4, 2024
d687e31
Update version to 1.6.0
theRealRobG Oct 4, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Added parsing for HDCP-LEVEL
theRealRobG committed Sep 2, 2024
commit 24418043a47cc8240525c3fc15061dc208e63ff0
29 changes: 28 additions & 1 deletion mambaSharedFramework/HLSValueTypes.swift
Original file line number Diff line number Diff line change
@@ -104,7 +104,7 @@ public func ==(lhs: HLSMediaType, rhs: HLSMediaType) -> Bool {

/// Represents an encryption method
///
/// Can be initialized with a string "NONE" or "AES-128" or "SAMPLE-AES" for a valid value
/// Can be initialized with a string "NONE" or "AES-128" or "SAMPLE-AES" or "SAMPLE-AES-CTR" for a valid value
public struct HLSEncryptionMethodType: Equatable, FailableStringLiteralConvertible {
public let type: EncryptionMethod
public enum EncryptionMethod: String {
@@ -131,6 +131,33 @@ public func ==(lhs: HLSEncryptionMethodType, rhs: HLSEncryptionMethodType) -> Bo
return lhs.type == rhs.type
}

/// Represents a minimum required HDCP level needed to play content.
public struct HLSHDCPLevel: Equatable, FailableStringLiteralConvertible {
public let type: HDCPLevel
public enum HDCPLevel: String {
/// Indicates that the content does not require output copy protections.
case none = "NONE"
/// Indicates that the Variant Stream could fail to play unless the output is protected by High-bandwidth
/// Digital Content Protection (HDCP) Type 0 or equivalent.
case type0 = "TYPE-0"
/// Indicates that the Variant Stream could fail to play unless the output is protected by HDCP Type 1 or
/// equivalent.
case type1 = "TYPE-1"
}
public init?(string: String) {
self.init(hdcpLevel: string)
}
public init?(hdcpLevel: String) {
guard let type = HDCPLevel(rawValue: hdcpLevel) else {
return nil
}
self.type = type
}
public init(hdcpLevel: HDCPLevel) {
self.type = hdcpLevel
}
}

/// Represents a playlist type
///
/// Can be initialized with a string "EVENT" or "VOD" for a valid value
Original file line number Diff line number Diff line change
@@ -433,7 +433,7 @@ extension PantosTag: HLSTagDescriptor, Equatable {
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.supplementalCodecs, optional: true, expectedType: HLSCodecArray.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.resolution, optional: true, expectedType: HLSResolution.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.frameRate, optional: true, expectedType: Double.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.hdcpLevel, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.hdcpLevel, optional: true, expectedType: HLSHDCPLevel.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.allowedCpc, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.videoRange, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.reqVideoLayout, optional: true, expectedType: String.self),
@@ -474,7 +474,7 @@ extension PantosTag: HLSTagDescriptor, Equatable {
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.codecs, optional: true, expectedType: HLSCodecArray.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.supplementalCodecs, optional: true, expectedType: HLSCodecArray.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.resolution, optional: true, expectedType: HLSResolution.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.hdcpLevel, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.hdcpLevel, optional: true, expectedType: HLSHDCPLevel.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.allowedCpc, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.videoRange, optional: true, expectedType: String.self),
HLSDictionaryTagValueIdentifierImpl(valueId: PantosValue.reqVideoLayout, optional: true, expectedType: String.self),
Original file line number Diff line number Diff line change
@@ -760,7 +760,8 @@ class GenericDictionaryTagValidatorTests: XCTestCase {
.score,
.programId,
.resolution,
.frameRate]
.frameRate,
.hdcpLevel]

validate(tag: PantosTag.EXT_X_STREAM_INF,
tagData: tagData,
@@ -908,7 +909,8 @@ class GenericDictionaryTagValidatorTests: XCTestCase {
.averageBandwidthBPS,
.score,
.programId,
.resolution]
.resolution,
.hdcpLevel]

validate(tag: PantosTag.EXT_X_I_FRAME_STREAM_INF,
tagData: tagData,