Skip to content

Commit f8b9559

Browse files
Merge pull request #833 from THEOplayer/feature/OPTIP-303-bridge-inBandMetadataTrackDispatchType
feat(OPTIP-303): bridge inBandMetadataTrackDispatchType to React Native
2 parents 1f1ed23 + f9a04d8 commit f8b9559

4 files changed

Lines changed: 12 additions & 1 deletion

File tree

android/src/main/java/com/theoplayer/track/TrackListAdapter.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ private const val PROP_NAME = "name"
2626
private const val PROP_ENABLED = "enabled"
2727
private const val PROP_SRC = "src"
2828
private const val PROP_FORCED = "forced"
29+
private const val PROP_IN_BAND_METADATA_TRACK_DISPATCH_TYPE = "inBandMetadataTrackDispatchType"
2930
private const val PROP_CAPTION_CHANNEL = "captionChannel"
3031
private const val PROP_AUDIO_SAMPLING_RATE = "audioSamplingRate"
3132
private const val PROP_BANDWIDTH = "bandwidth"
@@ -71,6 +72,7 @@ object TrackListAdapter {
7172
textTrackPayload.putBoolean(PROP_FORCED, textTrack.isForced)
7273

7374
// THEOplayer v10.13+
75+
textTrackPayload.putString(PROP_IN_BAND_METADATA_TRACK_DISPATCH_TYPE, textTrack.inBandMetadataTrackDispatchType ?: "")
7476
textTrack.captionChannel?.let { textTrackPayload.putInt(PROP_CAPTION_CHANNEL, it) }
7577

7678
// Optionally pass cue list.

ios/THEOplayerRCTTrackMetadataAggregator.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ let PROP_CUE_CONTENT: String = "content"
2929
let PROP_CUE_CUSTOM_ATTRIBUTES: String = "customAttributes"
3030
let PROP_SRC: String = "src"
3131
let PROP_FORCED: String = "forced"
32+
let PROP_IN_BAND_METADATA_TRACK_DISPATCH_TYPE: String = "inBandMetadataTrackDispatchType"
3233
let PROP_START_DATE: String = "startDate"
3334
let PROP_END_DATE: String = "endDate"
3435
let PROP_ATTRIBUTE_CLASS: String = "class"
@@ -80,6 +81,7 @@ class THEOplayerRCTTrackMetadataAggregator {
8081
entry[PROP_TYPE] = textTrack.type
8182
entry[PROP_SRC] = textTrack.src
8283
entry[PROP_FORCED] = textTrack.forced
84+
entry[PROP_IN_BAND_METADATA_TRACK_DISPATCH_TYPE] = textTrack.inBandMetadataTrackDispatchType
8385
// process cues when texttrack contains them
8486
if !textTrack.cues.isEmpty {
8587
var cueList: [[String:Any]] = []
@@ -327,6 +329,7 @@ class THEOplayerRCTTrackMetadataAggregator {
327329
track[PROP_LABEL] = trackDescription.label ?? "no label"
328330
track[PROP_TYPE] = "webvtt"
329331
track[PROP_SRC] = trackDescription.src.absoluteString
332+
track[PROP_IN_BAND_METADATA_TRACK_DISPATCH_TYPE] = ""
330333
var cueList: [[String:Any]] = []
331334
var cueIndex = 0
332335
for c in cues {

src/api/track/TextTrack.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,11 @@ export interface TextTrack extends Track {
150150
*/
151151
readonly forced: boolean;
152152

153+
/**
154+
* The in-band metadata track dispatch type of the text track.
155+
*/
156+
readonly inBandMetadataTrackDispatchType: string;
157+
153158
/**
154159
* The closed caption service number of the text track.
155160
*

src/internal/adapter/web/TrackUtils.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ export function fromNativeTextTrackList(tracks: NativeTextTrackList): TextTrack[
4141
}
4242

4343
export function fromNativeTextTrack(track: NativeTextTrack): TextTrack {
44-
const { id, uid, kind, label, language, mode, type, src, forced, captionChannel } = track;
44+
const { id, uid, kind, label, language, mode, type, src, forced, inBandMetadataTrackDispatchType, captionChannel } = track;
4545

4646
return {
4747
id,
@@ -53,6 +53,7 @@ export function fromNativeTextTrack(track: NativeTextTrack): TextTrack {
5353
type,
5454
src,
5555
forced,
56+
inBandMetadataTrackDispatchType,
5657
captionChannel,
5758
cues: track.cues ? track.cues.map((cue) => fromNativeCue(cue)) : [],
5859
} as TextTrack;

0 commit comments

Comments
 (0)