Skip to content

Commit 67b4aab

Browse files
fix: on flush if a pmt has not been emitted and we have one, emit it (#388)
1 parent f7d0a5b commit 67b4aab

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

lib/m2ts/m2ts.js

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,7 @@ TransportParseStream.STREAM_TYPES = {
294294
ElementaryStream = function() {
295295
var
296296
self = this,
297+
segmentHadPmt = false,
297298
// PES packet fragments
298299
video = {
299300
data: [],
@@ -488,6 +489,8 @@ ElementaryStream = function() {
488489
});
489490
}
490491

492+
segmentHadPmt = true;
493+
491494
self.trigger('data', event);
492495
}
493496
})[data.type]();
@@ -519,6 +522,42 @@ ElementaryStream = function() {
519522
};
520523

521524
this.flush = function() {
525+
// if on flush we haven't had a pmt emitted
526+
// and we have a pmt to emit. emit the pmt
527+
// so that we trigger a trackinfo downstream.
528+
if (!segmentHadPmt && programMapTable) {
529+
var
530+
pmt = {
531+
type: 'metadata',
532+
tracks: []
533+
};
534+
// translate audio and video streams to tracks
535+
if (programMapTable.video !== null) {
536+
pmt.tracks.push({
537+
timelineStartInfo: {
538+
baseMediaDecodeTime: 0
539+
},
540+
id: +programMapTable.video,
541+
codec: 'avc',
542+
type: 'video'
543+
});
544+
}
545+
546+
if (programMapTable.audio !== null) {
547+
pmt.tracks.push({
548+
timelineStartInfo: {
549+
baseMediaDecodeTime: 0
550+
},
551+
id: +programMapTable.audio,
552+
codec: 'adts',
553+
type: 'audio'
554+
});
555+
}
556+
557+
self.trigger('data', pmt);
558+
}
559+
560+
segmentHadPmt = false;
522561
this.flushStreams_();
523562
this.trigger('done');
524563
};

0 commit comments

Comments
 (0)