@remotion/media-parser 4.0.285 → 4.0.286
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/aac-codecprivate.d.ts +1 -1
- package/dist/combine-uint8-arrays.d.ts +1 -1
- package/dist/containers/aac/parse-aac.js +0 -3
- package/dist/containers/avc/create-sps-pps-data.d.ts +1 -1
- package/dist/containers/flac/get-channel-count.d.ts +1 -1
- package/dist/containers/flac/parse-flac-frame.js +0 -2
- package/dist/containers/flac/parse-streaminfo.js +0 -2
- package/dist/containers/iso-base-media/collect-sample-positions-from-trak.js +4 -3
- package/dist/containers/iso-base-media/get-moov-atom.js +0 -4
- package/dist/containers/iso-base-media/mdat/mdat.js +0 -3
- package/dist/containers/iso-base-media/mfra/get-mfra-atom.d.ts +3 -3
- package/dist/containers/iso-base-media/parse-boxes.js +0 -2
- package/dist/containers/iso-base-media/process-box.d.ts +0 -2
- package/dist/containers/iso-base-media/process-box.js +1 -3
- package/dist/containers/m3u/iterate-over-segment-files.js +1 -0
- package/dist/containers/m3u/run-over-m3u.js +0 -3
- package/dist/containers/mp3/parse-mpeg-header.js +0 -3
- package/dist/containers/riff/expect-riff-box.js +0 -2
- package/dist/containers/riff/parse-movi.js +0 -3
- package/dist/containers/transport-stream/adts-header.d.ts +1 -1
- package/dist/containers/transport-stream/discard-rest-of-packet.d.ts +1 -1
- package/dist/containers/transport-stream/find-separator.d.ts +17 -1
- package/dist/containers/transport-stream/find-separator.js +6 -5
- package/dist/containers/transport-stream/get-seeking-info.d.ts +4 -0
- package/dist/containers/transport-stream/get-seeking-info.js +17 -0
- package/dist/containers/transport-stream/handle-aac-packet.d.ts +10 -3
- package/dist/containers/transport-stream/handle-aac-packet.js +21 -16
- package/dist/containers/transport-stream/handle-avc-packet.d.ts +10 -3
- package/dist/containers/transport-stream/handle-avc-packet.js +26 -17
- package/dist/containers/transport-stream/parse-packet.d.ts +8 -4
- package/dist/containers/transport-stream/parse-packet.js +15 -16
- package/dist/containers/transport-stream/parse-pes.d.ts +5 -1
- package/dist/containers/transport-stream/parse-pes.js +4 -3
- package/dist/containers/transport-stream/parse-stream-packet.d.ts +6 -6
- package/dist/containers/transport-stream/parse-stream-packet.js +10 -115
- package/dist/containers/transport-stream/parse-transport-stream.js +15 -3
- package/dist/containers/transport-stream/process-stream-buffers.d.ts +26 -6
- package/dist/containers/transport-stream/process-stream-buffers.js +77 -12
- package/dist/containers/transport-stream/traversal.d.ts +3 -1
- package/dist/containers/transport-stream/traversal.js +10 -2
- package/dist/containers/wav/parse-fmt.js +0 -2
- package/dist/containers/wav/parse-media-section.js +0 -2
- package/dist/containers/webm/cues/fetch-web-cues.d.ts +12 -0
- package/dist/containers/webm/cues/fetch-web-cues.js +32 -0
- package/dist/containers/webm/cues/format-cues.d.ts +8 -0
- package/dist/containers/webm/cues/format-cues.js +41 -0
- package/dist/containers/webm/cues/get-seeking-byte.d.ts +14 -0
- package/dist/containers/webm/cues/get-seeking-byte.js +91 -0
- package/dist/containers/webm/fetch-web-cues.d.ts +12 -0
- package/dist/containers/webm/fetch-web-cues.js +29 -0
- package/dist/containers/webm/get-byte-for-cues.d.ts +5 -0
- package/dist/containers/webm/get-byte-for-cues.js +33 -0
- package/dist/containers/webm/get-ready-tracks.d.ts +9 -4
- package/dist/containers/webm/get-ready-tracks.js +6 -6
- package/dist/containers/webm/get-sample-from-block.d.ts +3 -2
- package/dist/containers/webm/get-sample-from-block.js +9 -8
- package/dist/containers/webm/get-seeking-byte.d.ts +14 -0
- package/dist/containers/webm/get-seeking-byte.js +91 -0
- package/dist/containers/webm/get-seeking-info.d.ts +3 -0
- package/dist/containers/webm/get-seeking-info.js +17 -0
- package/dist/containers/webm/parse-ebml.d.ts +5 -4
- package/dist/containers/webm/parse-ebml.js +29 -34
- package/dist/containers/webm/parse-webm-header.js +14 -2
- package/dist/containers/webm/seek/fetch-web-cues.d.ts +12 -0
- package/dist/containers/webm/seek/fetch-web-cues.js +32 -0
- package/dist/containers/webm/seek/format-cues.d.ts +8 -0
- package/dist/containers/webm/seek/format-cues.js +42 -0
- package/dist/containers/webm/seek/get-seeking-byte.d.ts +14 -0
- package/dist/containers/webm/seek/get-seeking-byte.js +100 -0
- package/dist/containers/webm/seek/get-seeking-info.d.ts +3 -0
- package/dist/containers/webm/seek/get-seeking-info.js +17 -0
- package/dist/containers/webm/segments/all-segments.d.ts +1 -0
- package/dist/containers/webm/segments.d.ts +10 -4
- package/dist/containers/webm/segments.js +30 -12
- package/dist/containers/webm/state-for-processing.d.ts +15 -0
- package/dist/containers/webm/state-for-processing.js +14 -0
- package/dist/controller/seek-signal.d.ts +2 -2
- package/dist/download-and-parse-media.js +2 -1
- package/dist/emit-audio-sample.d.ts +2 -5
- package/dist/emit-audio-sample.js +2 -5
- package/dist/esm/index.mjs +5057 -4394
- package/dist/esm/universal.mjs +1 -1
- package/dist/esm/web.mjs +1 -1
- package/dist/esm/worker-server-entry.mjs +2327 -1664
- package/dist/esm/worker-web-entry.mjs +2327 -1664
- package/dist/file-types/detect-file-type.js +3 -1
- package/dist/get-audio-codec.d.ts +2 -1
- package/dist/get-audio-codec.js +15 -1
- package/dist/get-sample-positions-from-mp4.d.ts +3 -0
- package/dist/get-sample-positions-from-mp4.js +46 -0
- package/dist/get-seeking-byte.d.ts +19 -0
- package/dist/get-seeking-byte.js +50 -0
- package/dist/get-seeking-info.d.ts +5 -10
- package/dist/get-seeking-info.js +12 -25
- package/dist/get-tracks.js +6 -2
- package/dist/index.d.ts +44 -19
- package/dist/init-video.js +4 -3
- package/dist/internal-parse-media.js +3 -2
- package/dist/iterator/buffer-iterator.d.ts +3 -3
- package/dist/iterator/buffer-manager.d.ts +3 -3
- package/dist/log.d.ts +5 -5
- package/dist/options.d.ts +1 -0
- package/dist/parse-loop.js +0 -3
- package/dist/parse-media-on-worker-entry.d.ts +1 -1
- package/dist/parse-media.js +2 -1
- package/dist/readers/from-web-file.js +1 -1
- package/dist/register-track.d.ts +2 -5
- package/dist/register-track.js +2 -10
- package/dist/seek-backwards.js +2 -3
- package/dist/seeking-info.d.ts +14 -1
- package/dist/state/iso-base-media/cached-sample-positions.d.ts +1 -1
- package/dist/state/keyframes.js +3 -0
- package/dist/state/matroska/lazy-cues-fetch.d.ts +19 -0
- package/dist/state/matroska/lazy-cues-fetch.js +51 -0
- package/dist/state/matroska/lazy-seek-fetch.d.ts +1 -0
- package/dist/state/matroska/lazy-seek-fetch.js +5 -0
- package/dist/state/matroska/webm.d.ts +46 -0
- package/dist/state/matroska/webm.js +121 -0
- package/dist/state/matroska.d.ts +0 -0
- package/dist/state/matroska.js +1 -0
- package/dist/state/parser-state.d.ts +34 -9
- package/dist/state/parser-state.js +7 -6
- package/dist/state/sample-callbacks.d.ts +1 -1
- package/dist/state/sample-callbacks.js +9 -9
- package/dist/state/samples-observed/slow-duration-fps.d.ts +11 -0
- package/dist/state/samples-observed/slow-duration-fps.js +92 -0
- package/dist/state/seek-infinite-loop.js +12 -2
- package/dist/state/transport-stream/observed-pes-header.d.ts +13 -0
- package/dist/state/transport-stream/observed-pes-header.js +29 -0
- package/dist/state/transport-stream/pts-start-offset.d.ts +5 -0
- package/dist/state/transport-stream/pts-start-offset.js +13 -0
- package/dist/state/transport-stream/start-offset.d.ts +2 -1
- package/dist/state/transport-stream/start-offset.js +3 -3
- package/dist/state/transport-stream/transport-stream.d.ts +6 -0
- package/dist/state/transport-stream/transport-stream.js +4 -2
- package/dist/state/video-section.js +14 -2
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/work-on-seek-request.d.ts +8 -0
- package/dist/work-on-seek-request.js +24 -6
- package/dist/worker-server.js +1 -0
- package/dist/worker.d.ts +0 -1
- package/package.json +4 -4
|
@@ -4,7 +4,7 @@ export declare const createAacCodecPrivate: ({ audioObjectType, sampleRate, chan
|
|
|
4
4
|
sampleRate: number;
|
|
5
5
|
channelConfiguration: number;
|
|
6
6
|
codecPrivate: Uint8Array | null;
|
|
7
|
-
}) => Uint8Array
|
|
7
|
+
}) => Uint8Array<ArrayBufferLike>;
|
|
8
8
|
export declare const parseAacCodecPrivate: (bytes: Uint8Array) => {
|
|
9
9
|
audioObjectType: number;
|
|
10
10
|
sampleRate: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const combineUint8Arrays: (arrays: Uint8Array[]) => Uint8Array
|
|
1
|
+
export declare const combineUint8Arrays: (arrays: Uint8Array[]) => Uint8Array<ArrayBufferLike>;
|
|
@@ -5,7 +5,6 @@ const aac_codecprivate_1 = require("../../aac-codecprivate");
|
|
|
5
5
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
6
6
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
7
7
|
const register_track_1 = require("../../register-track");
|
|
8
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
9
8
|
const parseAac = async (state) => {
|
|
10
9
|
const { iterator } = state;
|
|
11
10
|
const startOffset = iterator.counter.getOffset();
|
|
@@ -49,7 +48,6 @@ const parseAac = async (state) => {
|
|
|
49
48
|
const data = iterator.getSlice(frameLength);
|
|
50
49
|
if (state.callbacks.tracks.getTracks().length === 0) {
|
|
51
50
|
await (0, register_track_1.registerAudioTrack)({
|
|
52
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
53
51
|
container: 'aac',
|
|
54
52
|
track: {
|
|
55
53
|
codec: (0, aac_codecprivate_1.mapAudioObjectTypeToCodecString)(audioObjectType),
|
|
@@ -90,7 +88,6 @@ const parseAac = async (state) => {
|
|
|
90
88
|
},
|
|
91
89
|
timescale: 1,
|
|
92
90
|
}),
|
|
93
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
94
91
|
callbacks: state.callbacks,
|
|
95
92
|
});
|
|
96
93
|
return Promise.resolve(null);
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { SpsAndPps } from '../../state/parser-state';
|
|
2
|
-
export declare const createSpsPpsData: (avc1Profile: SpsAndPps) => Uint8Array
|
|
2
|
+
export declare const createSpsPpsData: (avc1Profile: SpsAndPps) => Uint8Array<ArrayBufferLike>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../iterator/buffer-iterator';
|
|
2
|
-
export declare const getChannelCount: (iterator: BufferIterator) =>
|
|
2
|
+
export declare const getChannelCount: (iterator: BufferIterator) => 1 | 2 | 8 | 5 | 4 | 6 | 3 | 7;
|
|
@@ -4,7 +4,6 @@ exports.parseFlacFrame = exports.parseFrameHeader = void 0;
|
|
|
4
4
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
5
5
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
6
6
|
const buffer_iterator_1 = require("../../iterator/buffer-iterator");
|
|
7
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
8
7
|
const get_block_size_1 = require("./get-block-size");
|
|
9
8
|
const get_channel_count_1 = require("./get-channel-count");
|
|
10
9
|
const get_sample_rate_1 = require("./get-sample-rate");
|
|
@@ -98,7 +97,6 @@ const emitSample = async ({ state, data, offset, }) => {
|
|
|
98
97
|
},
|
|
99
98
|
timescale: 1,
|
|
100
99
|
}),
|
|
101
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
102
100
|
callbacks: state.callbacks,
|
|
103
101
|
});
|
|
104
102
|
iterator.destroy();
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseStreamInfo = void 0;
|
|
4
4
|
const register_track_1 = require("../../register-track");
|
|
5
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
6
5
|
const parseStreamInfo = async ({ iterator, state, }) => {
|
|
7
6
|
const counter = iterator.counter.getOffset();
|
|
8
7
|
const minimumBlockSize = iterator.getUint16();
|
|
@@ -34,7 +33,6 @@ const parseStreamInfo = async ({ iterator, state, }) => {
|
|
|
34
33
|
state.structure.getFlacStructure().boxes.push(flacStreamInfo);
|
|
35
34
|
await (0, register_track_1.registerAudioTrack)({
|
|
36
35
|
container: 'flac',
|
|
37
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
38
36
|
track: {
|
|
39
37
|
codec: 'flac',
|
|
40
38
|
type: 'audio',
|
|
@@ -4,13 +4,14 @@ exports.collectSamplePositionsFromTrak = void 0;
|
|
|
4
4
|
const get_audio_codec_1 = require("../../get-audio-codec");
|
|
5
5
|
const get_fps_1 = require("../../get-fps");
|
|
6
6
|
const get_sample_positions_1 = require("../../get-sample-positions");
|
|
7
|
-
const
|
|
7
|
+
const get_sample_positions_from_mp4_1 = require("../../get-sample-positions-from-mp4");
|
|
8
8
|
const traversal_1 = require("./traversal");
|
|
9
9
|
const collectSamplePositionsFromTrak = (trakBox) => {
|
|
10
10
|
const isLpcm = (0, get_audio_codec_1.isLpcmAudioCodec)(trakBox);
|
|
11
11
|
const timescaleAndDuration = (0, get_fps_1.getTimescaleAndDuration)(trakBox);
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
const isIn24 = (0, get_audio_codec_1.isIn24AudioCodec)(trakBox);
|
|
13
|
+
if (isLpcm || isIn24) {
|
|
14
|
+
return (0, get_sample_positions_from_mp4_1.getGroupedSamplesPositionsFromMp4)(trakBox);
|
|
14
15
|
}
|
|
15
16
|
const stszBox = (0, traversal_1.getStszBox)(trakBox);
|
|
16
17
|
const stcoBox = (0, traversal_1.getStcoBox)(trakBox);
|
|
@@ -7,7 +7,6 @@ const register_track_1 = require("../../register-track");
|
|
|
7
7
|
const can_skip_tracks_1 = require("../../state/can-skip-tracks");
|
|
8
8
|
const has_tracks_section_1 = require("../../state/has-tracks-section");
|
|
9
9
|
const structure_1 = require("../../state/structure");
|
|
10
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
11
10
|
const process_box_1 = require("./process-box");
|
|
12
11
|
const traversal_1 = require("./traversal");
|
|
13
12
|
const getMoovAtom = async ({ endOfMdat, state, }) => {
|
|
@@ -29,7 +28,6 @@ const getMoovAtom = async ({ endOfMdat, state, }) => {
|
|
|
29
28
|
const onAudioTrack = state.onAudioTrack
|
|
30
29
|
? async ({ track, container }) => {
|
|
31
30
|
await (0, register_track_1.registerAudioTrack)({
|
|
32
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
33
31
|
track,
|
|
34
32
|
container,
|
|
35
33
|
logLevel: state.logLevel,
|
|
@@ -43,7 +41,6 @@ const getMoovAtom = async ({ endOfMdat, state, }) => {
|
|
|
43
41
|
const onVideoTrack = state.onVideoTrack
|
|
44
42
|
? async ({ track, container }) => {
|
|
45
43
|
await (0, register_track_1.registerVideoTrack)({
|
|
46
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
47
44
|
track,
|
|
48
45
|
container,
|
|
49
46
|
logLevel: state.logLevel,
|
|
@@ -79,7 +76,6 @@ const getMoovAtom = async ({ endOfMdat, state, }) => {
|
|
|
79
76
|
onlyIfMoovAtomExpected: {
|
|
80
77
|
tracks: tracksState,
|
|
81
78
|
isoState: null,
|
|
82
|
-
workOnSeekRequestOptions: null,
|
|
83
79
|
onAudioTrack,
|
|
84
80
|
onVideoTrack,
|
|
85
81
|
registerVideoSampleCallback: () => Promise.resolve(),
|
|
@@ -8,7 +8,6 @@ const skip_1 = require("../../../skip");
|
|
|
8
8
|
const cached_sample_positions_1 = require("../../../state/iso-base-media/cached-sample-positions");
|
|
9
9
|
const may_skip_video_data_1 = require("../../../state/may-skip-video-data");
|
|
10
10
|
const video_section_1 = require("../../../state/video-section");
|
|
11
|
-
const work_on_seek_request_1 = require("../../../work-on-seek-request");
|
|
12
11
|
const get_moov_atom_1 = require("../get-moov-atom");
|
|
13
12
|
const parseMdatSection = async (state) => {
|
|
14
13
|
const mediaSection = (0, video_section_1.getCurrentMediaSection)({
|
|
@@ -79,7 +78,6 @@ const parseMdatSection = async (state) => {
|
|
|
79
78
|
},
|
|
80
79
|
timescale: samplesWithIndex.track.timescale,
|
|
81
80
|
}),
|
|
82
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
83
81
|
callbacks: state.callbacks,
|
|
84
82
|
});
|
|
85
83
|
}
|
|
@@ -112,7 +110,6 @@ const parseMdatSection = async (state) => {
|
|
|
112
110
|
},
|
|
113
111
|
timescale: samplesWithIndex.track.timescale,
|
|
114
112
|
}),
|
|
115
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
116
113
|
callbacks: state.callbacks,
|
|
117
114
|
});
|
|
118
115
|
}
|
|
@@ -28,12 +28,12 @@ export declare const getMfraAtom: ({ src, contentLength, readerInterface, contro
|
|
|
28
28
|
leb128: () => number;
|
|
29
29
|
removeBytesRead: (force: boolean, mode: import("../../../options").ParseMediaMode) => {
|
|
30
30
|
bytesRemoved: number;
|
|
31
|
-
removedData: Uint8Array | null;
|
|
31
|
+
removedData: Uint8Array<ArrayBuffer> | null;
|
|
32
32
|
};
|
|
33
33
|
discard: (length: number) => void;
|
|
34
34
|
getEightByteNumber: (littleEndian?: boolean) => number;
|
|
35
35
|
getFourByteNumber: () => number;
|
|
36
|
-
getSlice: (amount: number) => Uint8Array
|
|
36
|
+
getSlice: (amount: number) => Uint8Array<ArrayBuffer>;
|
|
37
37
|
getAtom: () => string;
|
|
38
38
|
detectFileType: () => import("../../../file-types/detect-file-type").FileType;
|
|
39
39
|
getPaddedFourByteNumber: () => number;
|
|
@@ -57,7 +57,7 @@ export declare const getMfraAtom: ({ src, contentLength, readerInterface, contro
|
|
|
57
57
|
getUint(length: number): number;
|
|
58
58
|
getByteString(length: number, trimTrailingZeroes: boolean): string;
|
|
59
59
|
planBytes: (size: number) => {
|
|
60
|
-
discardRest: () => Uint8Array
|
|
60
|
+
discardRest: () => Uint8Array<ArrayBuffer>;
|
|
61
61
|
};
|
|
62
62
|
getFloat64: () => number;
|
|
63
63
|
readUntilNullTerminator: () => string;
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.parseIsoBaseMedia = void 0;
|
|
4
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
5
4
|
const mdat_1 = require("./mdat/mdat");
|
|
6
5
|
const process_box_1 = require("./process-box");
|
|
7
6
|
const parseIsoBaseMedia = async (state) => {
|
|
@@ -16,7 +15,6 @@ const parseIsoBaseMedia = async (state) => {
|
|
|
16
15
|
onlyIfMoovAtomExpected: {
|
|
17
16
|
tracks: state.callbacks.tracks,
|
|
18
17
|
isoState: state.iso,
|
|
19
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
20
18
|
onAudioTrack: state.onAudioTrack,
|
|
21
19
|
onVideoTrack: state.onVideoTrack,
|
|
22
20
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
@@ -5,12 +5,10 @@ import type { IsoBaseMediaState } from '../../state/iso-base-media/iso-state';
|
|
|
5
5
|
import type { SampleCallbacks } from '../../state/sample-callbacks';
|
|
6
6
|
import type { MediaSectionState } from '../../state/video-section';
|
|
7
7
|
import type { OnAudioTrack, OnVideoTrack } from '../../webcodec-sample-types';
|
|
8
|
-
import type { WorkOnSeekRequestOptions } from '../../work-on-seek-request';
|
|
9
8
|
import type { BoxAndNext } from './base-media-box';
|
|
10
9
|
export type OnlyIfMoovAtomExpected = {
|
|
11
10
|
tracks: TracksState;
|
|
12
11
|
isoState: IsoBaseMediaState | null;
|
|
13
|
-
workOnSeekRequestOptions: WorkOnSeekRequestOptions | null;
|
|
14
12
|
onVideoTrack: OnVideoTrack | null;
|
|
15
13
|
onAudioTrack: OnAudioTrack | null;
|
|
16
14
|
registerVideoSampleCallback: SampleCallbacks['registerVideoSampleCallback'];
|
|
@@ -198,7 +198,7 @@ const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMd
|
|
|
198
198
|
if (!onlyIfMoovAtomExpected) {
|
|
199
199
|
throw new Error('State is required');
|
|
200
200
|
}
|
|
201
|
-
const {
|
|
201
|
+
const { tracks, onAudioTrack, onVideoTrack } = onlyIfMoovAtomExpected;
|
|
202
202
|
const box = await (0, trak_1.parseTrak)({
|
|
203
203
|
size: boxSize,
|
|
204
204
|
offsetAtStart: fileOffset,
|
|
@@ -208,7 +208,6 @@ const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMd
|
|
|
208
208
|
const transformedTrack = (0, make_track_1.makeBaseMediaTrack)(box);
|
|
209
209
|
if (transformedTrack && transformedTrack.type === 'video') {
|
|
210
210
|
await (0, register_track_1.registerVideoTrack)({
|
|
211
|
-
workOnSeekRequestOptions,
|
|
212
211
|
track: transformedTrack,
|
|
213
212
|
container: 'mp4',
|
|
214
213
|
logLevel,
|
|
@@ -219,7 +218,6 @@ const processBox = async ({ iterator, logLevel, onlyIfMoovAtomExpected, onlyIfMd
|
|
|
219
218
|
}
|
|
220
219
|
if (transformedTrack && transformedTrack.type === 'audio') {
|
|
221
220
|
await (0, register_track_1.registerAudioTrack)({
|
|
222
|
-
workOnSeekRequestOptions,
|
|
223
221
|
track: transformedTrack,
|
|
224
222
|
container: 'mp4',
|
|
225
223
|
registerAudioSampleCallback: onlyIfMoovAtomExpected.registerAudioSampleCallback,
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.runOverM3u = void 0;
|
|
4
4
|
const log_1 = require("../../log");
|
|
5
5
|
const register_track_1 = require("../../register-track");
|
|
6
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
7
6
|
const iterate_over_segment_files_1 = require("./iterate-over-segment-files");
|
|
8
7
|
const runOverM3u = async ({ state, structure, playlistUrl, logLevel, }) => {
|
|
9
8
|
const tracksDone = state.m3u.getTrackDone(playlistUrl);
|
|
@@ -52,7 +51,6 @@ const runOverM3u = async ({ state, structure, playlistUrl, logLevel, }) => {
|
|
|
52
51
|
}
|
|
53
52
|
const onAudioSample = await (0, register_track_1.registerAudioTrack)({
|
|
54
53
|
container: 'm3u8',
|
|
55
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
56
54
|
track: {
|
|
57
55
|
...track,
|
|
58
56
|
trackId,
|
|
@@ -81,7 +79,6 @@ const runOverM3u = async ({ state, structure, playlistUrl, logLevel, }) => {
|
|
|
81
79
|
}
|
|
82
80
|
const onVideoSample = await (0, register_track_1.registerVideoTrack)({
|
|
83
81
|
container: 'm3u8',
|
|
84
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
85
82
|
track: {
|
|
86
83
|
...track,
|
|
87
84
|
trackId,
|
|
@@ -5,7 +5,6 @@ exports.parseMpegHeader = void 0;
|
|
|
5
5
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
6
6
|
const log_1 = require("../../log");
|
|
7
7
|
const register_track_1 = require("../../register-track");
|
|
8
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
9
8
|
const get_frame_length_1 = require("./get-frame-length");
|
|
10
9
|
const samples_per_mpeg_file_1 = require("./samples-per-mpeg-file");
|
|
11
10
|
function getSamplingFrequency({ bits, mpegVersion, }) {
|
|
@@ -245,7 +244,6 @@ const parseMpegHeader = async ({ state, }) => {
|
|
|
245
244
|
state.mp3Info.setMp3Info(info);
|
|
246
245
|
await (0, register_track_1.registerAudioTrack)({
|
|
247
246
|
container: 'mp3',
|
|
248
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
249
247
|
track: {
|
|
250
248
|
type: 'audio',
|
|
251
249
|
codec: 'mp3',
|
|
@@ -295,7 +293,6 @@ const parseMpegHeader = async ({ state, }) => {
|
|
|
295
293
|
trackId: 0,
|
|
296
294
|
type: 'key',
|
|
297
295
|
},
|
|
298
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
299
296
|
callbacks: state.callbacks,
|
|
300
297
|
});
|
|
301
298
|
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.expectRiffBox = void 0;
|
|
4
4
|
const register_track_1 = require("../../register-track");
|
|
5
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
6
5
|
const get_tracks_from_avi_1 = require("./get-tracks-from-avi");
|
|
7
6
|
const is_movi_1 = require("./is-movi");
|
|
8
7
|
const parse_riff_box_1 = require("./parse-riff-box");
|
|
@@ -39,7 +38,6 @@ const expectRiffBox = async (state) => {
|
|
|
39
38
|
strf: box.strf,
|
|
40
39
|
});
|
|
41
40
|
await (0, register_track_1.registerAudioTrack)({
|
|
42
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
43
41
|
track: audioTrack,
|
|
44
42
|
container: 'avi',
|
|
45
43
|
registerAudioSampleCallback: state.callbacks.registerAudioSampleCallback,
|
|
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.parseMovi = exports.handleChunk = void 0;
|
|
4
4
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
5
5
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
6
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
7
6
|
const key_1 = require("../avc/key");
|
|
8
7
|
const parse_avc_1 = require("../avc/parse-avc");
|
|
9
8
|
const traversal_1 = require("./traversal");
|
|
@@ -58,7 +57,6 @@ const handleChunk = async ({ state, ckId, ckSize, }) => {
|
|
|
58
57
|
},
|
|
59
58
|
timescale: 1,
|
|
60
59
|
}),
|
|
61
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
62
60
|
callbacks: state.callbacks,
|
|
63
61
|
});
|
|
64
62
|
return;
|
|
@@ -93,7 +91,6 @@ const handleChunk = async ({ state, ckId, ckSize, }) => {
|
|
|
93
91
|
},
|
|
94
92
|
timescale: 1,
|
|
95
93
|
}),
|
|
96
|
-
workOnSeekRequestOptions: (0, work_on_seek_request_1.getWorkOnSeekRequestOptions)(state),
|
|
97
94
|
callbacks: state.callbacks,
|
|
98
95
|
});
|
|
99
96
|
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { BufferIterator } from '../../iterator/buffer-iterator';
|
|
2
2
|
export declare const discardRestOfPacket: (iterator: BufferIterator) => void;
|
|
3
|
-
export declare const getRestOfPacket: (iterator: BufferIterator) => Uint8Array
|
|
3
|
+
export declare const getRestOfPacket: (iterator: BufferIterator) => Uint8Array<ArrayBuffer>;
|
|
@@ -1 +1,17 @@
|
|
|
1
|
-
export
|
|
1
|
+
export type FindNthSubarrayIndexNotFound = {
|
|
2
|
+
type: 'not-found';
|
|
3
|
+
index: number;
|
|
4
|
+
count: number;
|
|
5
|
+
};
|
|
6
|
+
type ReturnType = {
|
|
7
|
+
type: 'found';
|
|
8
|
+
index: number;
|
|
9
|
+
} | FindNthSubarrayIndexNotFound;
|
|
10
|
+
export declare function findNthSubarrayIndex({ array, subarray, n, startIndex, startCount, }: {
|
|
11
|
+
array: Uint8Array;
|
|
12
|
+
subarray: Uint8Array;
|
|
13
|
+
n: number;
|
|
14
|
+
startIndex: number;
|
|
15
|
+
startCount: number;
|
|
16
|
+
}): ReturnType;
|
|
17
|
+
export {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findNthSubarrayIndex = findNthSubarrayIndex;
|
|
4
|
-
function findNthSubarrayIndex(array, subarray, n) {
|
|
4
|
+
function findNthSubarrayIndex({ array, subarray, n, startIndex, startCount, }) {
|
|
5
5
|
const subarrayLength = subarray.length;
|
|
6
6
|
const arrayLength = array.length;
|
|
7
|
-
let count =
|
|
8
|
-
|
|
7
|
+
let count = startCount;
|
|
8
|
+
let i = startIndex;
|
|
9
|
+
for (i; i <= arrayLength - subarrayLength; i++) {
|
|
9
10
|
let match = true;
|
|
10
11
|
for (let j = 0; j < subarrayLength; j++) {
|
|
11
12
|
if (array[i + j] !== subarray[j]) {
|
|
@@ -16,9 +17,9 @@ function findNthSubarrayIndex(array, subarray, n) {
|
|
|
16
17
|
if (match) {
|
|
17
18
|
count++;
|
|
18
19
|
if (count === n) {
|
|
19
|
-
return i; // Return the starting index of the nth subarray
|
|
20
|
+
return { type: 'found', index: i }; // Return the starting index of the nth subarray
|
|
20
21
|
}
|
|
21
22
|
}
|
|
22
23
|
}
|
|
23
|
-
return -
|
|
24
|
+
return { type: 'not-found', index: i, count }; // Return -1 if nth subarray is not found
|
|
24
25
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TransportStreamSeekingInfo } from '../../seeking-info';
|
|
2
|
+
import type { TracksState } from '../../state/has-tracks-section';
|
|
3
|
+
import type { TransportStreamState } from '../../state/transport-stream/transport-stream';
|
|
4
|
+
export declare const getSeekingInfoFromTransportStream: (transportStream: TransportStreamState, tracksState: TracksState) => TransportStreamSeekingInfo;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSeekingInfoFromTransportStream = void 0;
|
|
4
|
+
const getSeekingInfoFromTransportStream = (transportStream, tracksState) => {
|
|
5
|
+
const firstVideoTrack = tracksState
|
|
6
|
+
.getTracks()
|
|
7
|
+
.find((t) => t.type === 'video');
|
|
8
|
+
if (!firstVideoTrack) {
|
|
9
|
+
throw new Error('No video track found');
|
|
10
|
+
}
|
|
11
|
+
return {
|
|
12
|
+
type: 'transport-stream-seeking-info',
|
|
13
|
+
observedPesHeaders: transportStream.observedPesHeaders.getPesKeyframeHeaders(),
|
|
14
|
+
ptsStartOffset: transportStream.startOffset.getOffset(firstVideoTrack.trackId),
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
exports.getSeekingInfoFromTransportStream = getSeekingInfoFromTransportStream;
|
|
@@ -1,8 +1,15 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LogLevel } from '../../log';
|
|
2
|
+
import type { SampleCallbacks } from '../../state/sample-callbacks';
|
|
3
|
+
import type { TransportStreamState } from '../../state/transport-stream/transport-stream';
|
|
4
|
+
import type { OnAudioTrack } from '../../webcodec-sample-types';
|
|
2
5
|
import type { TransportStreamPacketBuffer } from './process-stream-buffers';
|
|
3
|
-
export declare const handleAacPacket: ({ streamBuffer,
|
|
6
|
+
export declare const handleAacPacket: ({ streamBuffer, programId, offset, sampleCallbacks, logLevel, onAudioTrack, transportStream, makeSamplesStartAtZero, }: {
|
|
4
7
|
streamBuffer: TransportStreamPacketBuffer;
|
|
5
|
-
state: ParserState;
|
|
6
8
|
programId: number;
|
|
7
9
|
offset: number;
|
|
10
|
+
sampleCallbacks: SampleCallbacks;
|
|
11
|
+
logLevel: LogLevel;
|
|
12
|
+
onAudioTrack: OnAudioTrack | null;
|
|
13
|
+
transportStream: TransportStreamState;
|
|
14
|
+
makeSamplesStartAtZero: boolean;
|
|
8
15
|
}) => Promise<void>;
|
|
@@ -5,20 +5,23 @@ const aac_codecprivate_1 = require("../../aac-codecprivate");
|
|
|
5
5
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
6
6
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
7
7
|
const register_track_1 = require("../../register-track");
|
|
8
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
9
8
|
const adts_header_1 = require("./adts-header");
|
|
10
9
|
const handle_avc_packet_1 = require("./handle-avc-packet");
|
|
11
|
-
const handleAacPacket = async ({ streamBuffer,
|
|
12
|
-
var _a;
|
|
13
|
-
const adtsHeader = (0, adts_header_1.readAdtsHeader)(streamBuffer.
|
|
10
|
+
const handleAacPacket = async ({ streamBuffer, programId, offset, sampleCallbacks, logLevel, onAudioTrack, transportStream, makeSamplesStartAtZero, }) => {
|
|
11
|
+
var _a, _b;
|
|
12
|
+
const adtsHeader = (0, adts_header_1.readAdtsHeader)(streamBuffer.getBuffer());
|
|
14
13
|
if (!adtsHeader) {
|
|
15
14
|
throw new Error('Invalid ADTS header - too short');
|
|
16
15
|
}
|
|
17
16
|
const { channelConfiguration, codecPrivate, sampleRate, audioObjectType } = adtsHeader;
|
|
18
|
-
const isTrackRegistered =
|
|
17
|
+
const isTrackRegistered = sampleCallbacks.tracks.getTracks().find((t) => {
|
|
19
18
|
return t.trackId === programId;
|
|
20
19
|
});
|
|
21
20
|
if (!isTrackRegistered) {
|
|
21
|
+
const startOffset = makeSamplesStartAtZero
|
|
22
|
+
? Math.min(streamBuffer.pesHeader.pts, (_a = streamBuffer.pesHeader.dts) !== null && _a !== void 0 ? _a : Infinity)
|
|
23
|
+
: 0;
|
|
24
|
+
transportStream.startOffset.setOffset(programId, startOffset);
|
|
22
25
|
const track = {
|
|
23
26
|
type: 'audio',
|
|
24
27
|
codecPrivate,
|
|
@@ -35,19 +38,21 @@ const handleAacPacket = async ({ streamBuffer, state, programId, offset, }) => {
|
|
|
35
38
|
await (0, register_track_1.registerAudioTrack)({
|
|
36
39
|
track,
|
|
37
40
|
container: 'transport-stream',
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
onAudioTrack: state.onAudioTrack,
|
|
41
|
+
registerAudioSampleCallback: sampleCallbacks.registerAudioSampleCallback,
|
|
42
|
+
tracks: sampleCallbacks.tracks,
|
|
43
|
+
logLevel,
|
|
44
|
+
onAudioTrack,
|
|
43
45
|
});
|
|
44
46
|
}
|
|
45
47
|
const sample = {
|
|
46
|
-
cts: streamBuffer.pesHeader.pts
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
cts: streamBuffer.pesHeader.pts -
|
|
49
|
+
transportStream.startOffset.getOffset(programId),
|
|
50
|
+
dts: ((_b = streamBuffer.pesHeader.dts) !== null && _b !== void 0 ? _b : streamBuffer.pesHeader.pts) -
|
|
51
|
+
transportStream.startOffset.getOffset(programId),
|
|
52
|
+
timestamp: streamBuffer.pesHeader.pts -
|
|
53
|
+
transportStream.startOffset.getOffset(programId),
|
|
49
54
|
duration: undefined,
|
|
50
|
-
data:
|
|
55
|
+
data: streamBuffer.getBuffer(),
|
|
51
56
|
trackId: programId,
|
|
52
57
|
type: 'key',
|
|
53
58
|
offset,
|
|
@@ -59,8 +64,8 @@ const handleAacPacket = async ({ streamBuffer, state, programId, offset, }) => {
|
|
|
59
64
|
sample,
|
|
60
65
|
timescale: handle_avc_packet_1.MPEG_TIMESCALE,
|
|
61
66
|
}),
|
|
62
|
-
|
|
63
|
-
callbacks: state.callbacks,
|
|
67
|
+
callbacks: sampleCallbacks,
|
|
64
68
|
});
|
|
69
|
+
transportStream.lastEmittedSample.setLastEmittedSample(sample);
|
|
65
70
|
};
|
|
66
71
|
exports.handleAacPacket = handleAacPacket;
|
|
@@ -1,9 +1,16 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LogLevel } from '../../log';
|
|
2
|
+
import type { SampleCallbacks } from '../../state/sample-callbacks';
|
|
3
|
+
import type { TransportStreamState } from '../../state/transport-stream/transport-stream';
|
|
4
|
+
import type { OnVideoTrack } from '../../webcodec-sample-types';
|
|
2
5
|
import type { TransportStreamPacketBuffer } from './process-stream-buffers';
|
|
3
6
|
export declare const MPEG_TIMESCALE = 90000;
|
|
4
|
-
export declare const handleAvcPacket: ({ streamBuffer, programId,
|
|
7
|
+
export declare const handleAvcPacket: ({ streamBuffer, programId, offset, sampleCallbacks, logLevel, onVideoTrack, transportStream, makeSamplesStartAtZero, }: {
|
|
5
8
|
streamBuffer: TransportStreamPacketBuffer;
|
|
6
9
|
programId: number;
|
|
7
|
-
state: ParserState;
|
|
8
10
|
offset: number;
|
|
11
|
+
sampleCallbacks: SampleCallbacks;
|
|
12
|
+
logLevel: LogLevel;
|
|
13
|
+
onVideoTrack: OnVideoTrack | null;
|
|
14
|
+
transportStream: TransportStreamState;
|
|
15
|
+
makeSamplesStartAtZero: boolean;
|
|
9
16
|
}) => Promise<void>;
|
|
@@ -4,7 +4,6 @@ exports.handleAvcPacket = exports.MPEG_TIMESCALE = void 0;
|
|
|
4
4
|
const convert_audio_or_video_sample_1 = require("../../convert-audio-or-video-sample");
|
|
5
5
|
const emit_audio_sample_1 = require("../../emit-audio-sample");
|
|
6
6
|
const register_track_1 = require("../../register-track");
|
|
7
|
-
const work_on_seek_request_1 = require("../../work-on-seek-request");
|
|
8
7
|
const codec_string_1 = require("../avc/codec-string");
|
|
9
8
|
const create_sps_pps_data_1 = require("../avc/create-sps-pps-data");
|
|
10
9
|
const interpret_sps_1 = require("../avc/interpret-sps");
|
|
@@ -12,16 +11,20 @@ const key_1 = require("../avc/key");
|
|
|
12
11
|
const parse_avc_1 = require("../avc/parse-avc");
|
|
13
12
|
const sps_and_pps_1 = require("../avc/sps-and-pps");
|
|
14
13
|
exports.MPEG_TIMESCALE = 90000;
|
|
15
|
-
const handleAvcPacket = async ({ streamBuffer, programId,
|
|
16
|
-
var _a;
|
|
17
|
-
const avc = (0, parse_avc_1.parseAvc)(streamBuffer.
|
|
18
|
-
const isTrackRegistered =
|
|
14
|
+
const handleAvcPacket = async ({ streamBuffer, programId, offset, sampleCallbacks, logLevel, onVideoTrack, transportStream, makeSamplesStartAtZero, }) => {
|
|
15
|
+
var _a, _b;
|
|
16
|
+
const avc = (0, parse_avc_1.parseAvc)(streamBuffer.getBuffer());
|
|
17
|
+
const isTrackRegistered = sampleCallbacks.tracks.getTracks().find((t) => {
|
|
19
18
|
return t.trackId === programId;
|
|
20
19
|
});
|
|
21
20
|
if (!isTrackRegistered) {
|
|
22
21
|
const spsAndPps = (0, sps_and_pps_1.getSpsAndPps)(avc);
|
|
23
22
|
const dimensions = (0, interpret_sps_1.getDimensionsFromSps)(spsAndPps.sps.spsData);
|
|
24
23
|
const sampleAspectRatio = (0, interpret_sps_1.getSampleAspectRatioFromSps)(spsAndPps.sps.spsData);
|
|
24
|
+
const startOffset = makeSamplesStartAtZero
|
|
25
|
+
? Math.min(streamBuffer.pesHeader.pts, (_a = streamBuffer.pesHeader.dts) !== null && _a !== void 0 ? _a : Infinity)
|
|
26
|
+
: 0;
|
|
27
|
+
transportStream.startOffset.setOffset(programId, startOffset);
|
|
25
28
|
const track = {
|
|
26
29
|
m3uStreamFormat: null,
|
|
27
30
|
rotation: 0,
|
|
@@ -49,33 +52,39 @@ const handleAvcPacket = async ({ streamBuffer, programId, state, offset, }) => {
|
|
|
49
52
|
await (0, register_track_1.registerVideoTrack)({
|
|
50
53
|
track,
|
|
51
54
|
container: 'transport-stream',
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
tracks: state.callbacks.tracks,
|
|
55
|
+
logLevel,
|
|
56
|
+
onVideoTrack,
|
|
57
|
+
registerVideoSampleCallback: sampleCallbacks.registerVideoSampleCallback,
|
|
58
|
+
tracks: sampleCallbacks.tracks,
|
|
57
59
|
});
|
|
58
60
|
}
|
|
61
|
+
const type = (0, key_1.getKeyFrameOrDeltaFromAvcInfo)(avc);
|
|
59
62
|
// sample for webcodecs needs to be in nano seconds
|
|
60
63
|
const sample = {
|
|
61
|
-
cts: streamBuffer.pesHeader.pts
|
|
62
|
-
|
|
63
|
-
|
|
64
|
+
cts: streamBuffer.pesHeader.pts -
|
|
65
|
+
transportStream.startOffset.getOffset(programId),
|
|
66
|
+
dts: ((_b = streamBuffer.pesHeader.dts) !== null && _b !== void 0 ? _b : streamBuffer.pesHeader.pts) -
|
|
67
|
+
transportStream.startOffset.getOffset(programId),
|
|
68
|
+
timestamp: streamBuffer.pesHeader.pts -
|
|
69
|
+
transportStream.startOffset.getOffset(programId),
|
|
64
70
|
duration: undefined,
|
|
65
|
-
data:
|
|
71
|
+
data: streamBuffer.getBuffer(),
|
|
66
72
|
trackId: programId,
|
|
67
|
-
type
|
|
73
|
+
type,
|
|
68
74
|
offset,
|
|
69
75
|
timescale: exports.MPEG_TIMESCALE,
|
|
70
76
|
};
|
|
77
|
+
if (type === 'key') {
|
|
78
|
+
transportStream.observedPesHeaders.markPtsAsKeyframe(streamBuffer.pesHeader.pts);
|
|
79
|
+
}
|
|
71
80
|
await (0, emit_audio_sample_1.emitVideoSample)({
|
|
72
81
|
trackId: programId,
|
|
73
82
|
videoSample: (0, convert_audio_or_video_sample_1.convertAudioOrVideoSampleToWebCodecsTimestamps)({
|
|
74
83
|
sample,
|
|
75
84
|
timescale: exports.MPEG_TIMESCALE,
|
|
76
85
|
}),
|
|
77
|
-
|
|
78
|
-
callbacks: state.callbacks,
|
|
86
|
+
callbacks: sampleCallbacks,
|
|
79
87
|
});
|
|
88
|
+
transportStream.lastEmittedSample.setLastEmittedSample(sample);
|
|
80
89
|
};
|
|
81
90
|
exports.handleAvcPacket = handleAvcPacket;
|