@@ -32,7 +32,7 @@ shaka.util.TsParser = class {
3232 /** @private {?string} */
3333 this . videoCodec_ = null ;
3434
35- /** @private {!Array.<Uint8Array>} */
35+ /** @private {!Array.<!Array.< Uint8Array> >} */
3636 this . videoData_ = [ ] ;
3737
3838 /** @private {!Array.<shaka.extern.MPEG_PES>} */
@@ -44,7 +44,7 @@ shaka.util.TsParser = class {
4444 /** @private {?string} */
4545 this . audioCodec_ = null ;
4646
47- /** @private {!Array.<Uint8Array>} */
47+ /** @private {!Array.<!Array.< Uint8Array> >} */
4848 this . audioData_ = [ ] ;
4949
5050 /** @private {!Array.<shaka.extern.MPEG_PES>} */
@@ -53,7 +53,7 @@ shaka.util.TsParser = class {
5353 /** @private {?number} */
5454 this . id3Pid_ = null ;
5555
56- /** @private {!Array.<Uint8Array>} */
56+ /** @private {!Array.<!Array.< Uint8Array> >} */
5757 this . id3Data_ = [ ] ;
5858 }
5959
@@ -79,7 +79,6 @@ shaka.util.TsParser = class {
7979 */
8080 parse ( data ) {
8181 const packetLength = shaka . util . TsParser . PacketLength_ ;
82- const Uint8ArrayUtils = shaka . util . Uint8ArrayUtils ;
8382
8483 // A TS fragment should contain at least 3 TS packets, a PAT, a PMT, and
8584 // one PID.
@@ -162,38 +161,35 @@ shaka.util.TsParser = class {
162161 case this . videoPid_ : {
163162 const videoData = data . subarray ( offset , start + packetLength ) ;
164163 if ( payloadUnitStartIndicator ) {
165- this . videoData_ . push ( videoData ) ;
164+ this . videoData_ . push ( [ videoData ] ) ;
166165 } else if ( this . videoData_ . length ) {
167166 const prevVideoData = this . videoData_ [ this . videoData_ . length - 1 ] ;
168167 if ( prevVideoData ) {
169- this . videoData_ [ this . videoData_ . length - 1 ] =
170- Uint8ArrayUtils . concat ( prevVideoData , videoData ) ;
168+ this . videoData_ [ this . videoData_ . length - 1 ] . push ( videoData ) ;
171169 }
172170 }
173171 break ;
174172 }
175173 case this . audioPid_ : {
176174 const audioData = data . subarray ( offset , start + packetLength ) ;
177175 if ( payloadUnitStartIndicator ) {
178- this . audioData_ . push ( audioData ) ;
176+ this . audioData_ . push ( [ audioData ] ) ;
179177 } else if ( this . audioData_ . length ) {
180178 const prevAudioData = this . audioData_ [ this . audioData_ . length - 1 ] ;
181179 if ( prevAudioData ) {
182- this . audioData_ [ this . audioData_ . length - 1 ] =
183- Uint8ArrayUtils . concat ( prevAudioData , audioData ) ;
180+ this . audioData_ [ this . audioData_ . length - 1 ] . push ( audioData ) ;
184181 }
185182 }
186183 break ;
187184 }
188185 case this . id3Pid_ : {
189186 const id3Data = data . subarray ( offset , start + packetLength ) ;
190187 if ( payloadUnitStartIndicator ) {
191- this . id3Data_ . push ( id3Data ) ;
188+ this . id3Data_ . push ( [ id3Data ] ) ;
192189 } else if ( this . id3Data_ . length ) {
193190 const prevId3Data = this . id3Data_ [ this . id3Data_ . length - 1 ] ;
194191 if ( prevId3Data ) {
195- this . id3Data_ [ this . id3Data_ . length - 1 ] =
196- Uint8ArrayUtils . concat ( prevId3Data , id3Data ) ;
192+ this . id3Data_ [ this . id3Data_ . length - 1 ] . push ( id3Data ) ;
197193 }
198194 }
199195 break ;
@@ -588,7 +584,8 @@ shaka.util.TsParser = class {
588584 getMetadata ( ) {
589585 const timescale = shaka . util . TsParser . Timescale ;
590586 const metadata = [ ] ;
591- for ( const id3Data of this . id3Data_ ) {
587+ for ( const id3DataArray of this . id3Data_ ) {
588+ const id3Data = shaka . util . Uint8ArrayUtils . concat ( ...id3DataArray ) ;
592589 const pes = this . parsePES_ ( id3Data ) ;
593590 if ( pes ) {
594591 metadata . push ( {
@@ -612,7 +609,8 @@ shaka.util.TsParser = class {
612609 getAudioData ( ) {
613610 if ( this . audioData_ . length && ! this . audioPes_ . length ) {
614611 let sort = false ;
615- for ( const audioData of this . audioData_ ) {
612+ for ( const audioDataArray of this . audioData_ ) {
613+ const audioData = shaka . util . Uint8ArrayUtils . concat ( ...audioDataArray ) ;
616614 const pes = this . parsePES_ ( audioData ) ;
617615 let previousPes = this . audioPes_ . length ?
618616 this . audioPes_ [ this . audioPes_ . length - 1 ] : null ;
@@ -654,7 +652,8 @@ shaka.util.TsParser = class {
654652 getVideoData ( naluProcessing = true ) {
655653 if ( this . videoData_ . length && ! this . videoPes_ . length ) {
656654 let sort = false ;
657- for ( const videoData of this . videoData_ ) {
655+ for ( const videoDataArray of this . videoData_ ) {
656+ const videoData = shaka . util . Uint8ArrayUtils . concat ( ...videoDataArray ) ;
658657 const pes = this . parsePES_ ( videoData ) ;
659658 let previousPes = this . videoPes_ . length ?
660659 this . videoPes_ [ this . videoPes_ . length - 1 ] : null ;
0 commit comments