@@ -1889,6 +1889,15 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
18891889 this . streamingEngine_ . updateDuration ( ) ;
18901890 }
18911891 } ,
1892+ newDrmInfo : ( stream ) => {
1893+ // We may need to create new sessions for any new init data.
1894+ const currentDrmInfo =
1895+ this . drmEngine_ ? this . drmEngine_ . getDrmInfo ( ) : null ;
1896+ // DrmEngine.newInitData() requires mediaKeys to be available.
1897+ if ( currentDrmInfo && this . drmEngine_ . getMediaKeys ( ) ) {
1898+ this . processDrmInfos_ ( currentDrmInfo . keySystem , stream ) ;
1899+ }
1900+ } ,
18921901 } ;
18931902
18941903 const startTime = Date . now ( ) / 1000 ;
@@ -5410,27 +5419,39 @@ shaka.Player = class extends shaka.util.FakeEventTarget {
54105419 }
54115420
54125421 // We may need to create new sessions for any new init data.
5413- const curDrmInfo = this . drmEngine_ ? this . drmEngine_ . getDrmInfo ( ) : null ;
5422+ const currentDrmInfo =
5423+ this . drmEngine_ ? this . drmEngine_ . getDrmInfo ( ) : null ;
54145424 // DrmEngine.newInitData() requires mediaKeys to be available.
5415- if ( curDrmInfo && this . drmEngine_ . getMediaKeys ( ) ) {
5425+ if ( currentDrmInfo && this . drmEngine_ . getMediaKeys ( ) ) {
54165426 for ( const variant of manifest . variants ) {
5417- const videoDrmInfos = variant . video ? variant . video . drmInfos : [ ] ;
5418- const audioDrmInfos = variant . audio ? variant . audio . drmInfos : [ ] ;
5419- const drmInfos = videoDrmInfos . concat ( audioDrmInfos ) ;
5420- for ( const drmInfo of drmInfos ) {
5421- // Ignore any data for different key systems.
5422- if ( drmInfo . keySystem == curDrmInfo . keySystem ) {
5423- for ( const initData of ( drmInfo . initData || [ ] ) ) {
5424- this . drmEngine_ . newInitData (
5425- initData . initDataType , initData . initData ) ;
5426- }
5427- }
5428- }
5427+ this . processDrmInfos_ ( currentDrmInfo . keySystem , variant . video ) ;
5428+ this . processDrmInfos_ ( currentDrmInfo . keySystem , variant . audio ) ;
54295429 }
54305430 }
54315431 this . checkRestrictedVariants_ ( manifest ) ;
54325432 }
54335433
5434+ /**
5435+ * @param {string } keySystem
5436+ * @param {?shaka.extern.Stream } stream
5437+ * @private
5438+ */
5439+ processDrmInfos_ ( keySystem , stream ) {
5440+ if ( ! stream ) {
5441+ return ;
5442+ }
5443+
5444+ for ( const drmInfo of stream . drmInfos ) {
5445+ // Ignore any data for different key systems.
5446+ if ( drmInfo . keySystem == keySystem ) {
5447+ for ( const initData of ( drmInfo . initData || [ ] ) ) {
5448+ this . drmEngine_ . newInitData (
5449+ initData . initDataType , initData . initData ) ;
5450+ }
5451+ }
5452+ }
5453+ }
5454+
54345455 /**
54355456 * @private
54365457 */
0 commit comments