@@ -3761,6 +3761,54 @@ describe('HlsParser', () => {
3761
3761
expect ( newDrmInfoSpy ) . toHaveBeenCalled ( ) ;
3762
3762
} ) ;
3763
3763
3764
+ it ( 'constructs DrmInfo for WisePlay' , async ( ) => {
3765
+ const master = [
3766
+ '#EXTM3U\n' ,
3767
+ '#EXT-X-STREAM-INF:BANDWIDTH=200,CODECS="avc1.4d401f",' ,
3768
+ 'RESOLUTION=960x540,FRAME-RATE=60\n' ,
3769
+ 'video\n' ,
3770
+ ] . join ( '' ) ;
3771
+
3772
+ const initDataBase64 =
3773
+ 'dGhpcyBpbml0IGRhdGEgY29udGFpbnMgaGlkZGVuIHNlY3JldHMhISE=' ;
3774
+
3775
+ const keyId = 'abc123' ;
3776
+
3777
+ const media = [
3778
+ '#EXTM3U\n' ,
3779
+ '#EXT-X-TARGETDURATION:6\n' ,
3780
+ '#EXT-X-PLAYLIST-TYPE:VOD\n' ,
3781
+ '#EXT-X-KEY:METHOD=SAMPLE-AES-CTR,' ,
3782
+ 'KEYID=0X' + keyId + ',' ,
3783
+ 'KEYFORMAT="urn:uuid:3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c",' ,
3784
+ 'URI="data:text/plain;base64,' ,
3785
+ initDataBase64 , '",\n' ,
3786
+ '#EXT-X-MAP:URI="init.mp4"\n' ,
3787
+ '#EXTINF:5,\n' ,
3788
+ '#EXT-X-BYTERANGE:121090@616\n' ,
3789
+ 'main.mp4' ,
3790
+ ] . join ( '' ) ;
3791
+
3792
+ const manifest = shaka . test . ManifestGenerator . generate ( ( manifest ) => {
3793
+ manifest . anyTimeline ( ) ;
3794
+ manifest . addPartialVariant ( ( variant ) => {
3795
+ variant . addPartialStream ( ContentType . VIDEO , ( stream ) => {
3796
+ stream . encrypted = true ;
3797
+ stream . addDrmInfo ( 'com.huawei.wiseplay' , ( drmInfo ) => {
3798
+ drmInfo . addCencInitData ( initDataBase64 ) ;
3799
+ drmInfo . keyIds . add ( keyId ) ;
3800
+ drmInfo . encryptionScheme = 'cenc' ;
3801
+ } ) ;
3802
+ } ) ;
3803
+ } ) ;
3804
+ manifest . sequenceMode = sequenceMode ;
3805
+ manifest . type = shaka . media . ManifestParser . HLS ;
3806
+ } ) ;
3807
+
3808
+ await testHlsParser ( master , media , manifest ) ;
3809
+ expect ( newDrmInfoSpy ) . toHaveBeenCalled ( ) ;
3810
+ } ) ;
3811
+
3764
3812
it ( 'constructs DrmInfo for PlayReady' , async ( ) => {
3765
3813
const master = [
3766
3814
'#EXTM3U\n' ,
@@ -4039,6 +4087,57 @@ describe('HlsParser', () => {
4039
4087
expect ( actual ) . toEqual ( manifest ) ;
4040
4088
} ) ;
4041
4089
4090
+ it ( 'for WisePlay' , async ( ) => {
4091
+ const initDataBase64 =
4092
+ 'dGhpcyBpbml0IGRhdGEgY29udGFpbnMgaGlkZGVuIHNlY3JldHMhISE=' ;
4093
+
4094
+ const keyId = 'abc123' ;
4095
+
4096
+ const master = [
4097
+ '#EXTM3U\n' ,
4098
+ '#EXT-X-STREAM-INF:BANDWIDTH=200,CODECS="avc1.4d401f",' ,
4099
+ 'RESOLUTION=960x540,FRAME-RATE=30\n' ,
4100
+ 'video\n' ,
4101
+ '#EXT-X-STREAM-INF:BANDWIDTH=300,CODECS="avc1.4d401f",' ,
4102
+ 'RESOLUTION=960x540,FRAME-RATE=60\n' ,
4103
+ 'video2\n' ,
4104
+ '#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES-CTR,' ,
4105
+ 'KEYID=0X' + keyId + ',' ,
4106
+ 'KEYFORMAT="urn:uuid:3d5e6d35-9b9a-41e8-b843-dd3c6e72c42c",' ,
4107
+ 'URI="data:text/plain;base64,' ,
4108
+ initDataBase64 , '",\n' ,
4109
+ ] . join ( '' ) ;
4110
+
4111
+ const manifest = shaka . test . ManifestGenerator . generate ( ( manifest ) => {
4112
+ manifest . anyTimeline ( ) ;
4113
+ manifest . addPartialVariant ( ( variant ) => {
4114
+ variant . addPartialStream ( ContentType . VIDEO , ( stream ) => {
4115
+ stream . addDrmInfo ( 'com.huawei.wiseplay' , ( drmInfo ) => {
4116
+ drmInfo . addCencInitData ( initDataBase64 ) ;
4117
+ drmInfo . keyIds . add ( keyId ) ;
4118
+ drmInfo . encryptionScheme = 'cenc' ;
4119
+ } ) ;
4120
+ } ) ;
4121
+ } ) ;
4122
+ manifest . addPartialVariant ( ( variant ) => {
4123
+ variant . addPartialStream ( ContentType . VIDEO , ( stream ) => {
4124
+ stream . addDrmInfo ( 'com.huawei.wiseplay' , ( drmInfo ) => {
4125
+ drmInfo . addCencInitData ( initDataBase64 ) ;
4126
+ drmInfo . keyIds . add ( keyId ) ;
4127
+ drmInfo . encryptionScheme = 'cenc' ;
4128
+ } ) ;
4129
+ } ) ;
4130
+ } ) ;
4131
+ manifest . sequenceMode = sequenceMode ;
4132
+ manifest . type = shaka . media . ManifestParser . HLS ;
4133
+ } ) ;
4134
+
4135
+ fakeNetEngine . setResponseText ( 'test:/master' , master ) ;
4136
+
4137
+ const actual = await parser . start ( 'test:/master' , playerInterface ) ;
4138
+ expect ( actual ) . toEqual ( manifest ) ;
4139
+ } ) ;
4140
+
4042
4141
it ( 'for PlayReady' , async ( ) => {
4043
4142
const initDataBase64 =
4044
4143
'AAAAKXBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAAAlQbGF5cmVhZHk=' ;
0 commit comments