void InbandTextTrack::addWebVTTCue(InbandTextTrackPrivate* trackPrivate, double start, double end, const String& id, const String& content, const String& settings) { UNUSED_PARAM(trackPrivate); ASSERT(trackPrivate == m_private); RefPtr<TextTrackCue> cue = TextTrackCue::create(scriptExecutionContext(), start, end, content); cue->setId(id); cue->setCueSettings(settings); if (hasCue(cue.get())) return; addCue(cue); }
void InbandWebVTTTextTrack::newCuesParsed() { Vector<RefPtr<WebVTTCueData>> cues; parser().getNewCues(cues); for (auto& cueData : cues) { RefPtr<VTTCue> vttCue = VTTCue::create(*scriptExecutionContext(), *cueData); if (hasCue(vttCue.get(), TextTrackCue::IgnoreDuration)) { LOG(Media, "InbandWebVTTTextTrack::newCuesParsed ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", vttCue->startTime(), vttCue->endTime(), vttCue->text().utf8().data()); return; } addCue(vttCue.release(), ASSERT_NO_EXCEPTION); } }
void InbandWebVTTTextTrack::newCuesParsed() { Vector<RefPtr<WebVTTCueData>> cues; m_webVTTParser->getNewCues(cues); for (size_t i = 0; i < cues.size(); ++i) { RefPtr<WebVTTCueData> cueData = cues[i]; RefPtr<TextTrackCue> cue = TextTrackCue::create(scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content()); cue->setId(cueData->id()); cue->setCueSettings(cueData->settings()); if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) { LOG(Media, "InbandWebVTTTextTrack::newCuesParsed ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data()); return; } addCue(cue.release()); } }
void InbandDataTextTrack::addDataCue(InbandTextTrackPrivate*, const MediaTime& start, const MediaTime& end, PassRefPtr<SerializedPlatformRepresentation> prpPlatformValue, const String& type) { RefPtr<SerializedPlatformRepresentation> platformValue = prpPlatformValue; if (m_incompleteCueMap.find(platformValue.get()) != m_incompleteCueMap.end()) return; auto cue = DataCue::create(*scriptExecutionContext(), start, end, platformValue.copyRef(), type); if (hasCue(cue.ptr(), TextTrackCue::IgnoreDuration)) { LOG(Media, "InbandDataTextTrack::addDataCue ignoring already added cue: start=%s, end=%s\n", toString(cue->startTime()).utf8().data(), toString(cue->endTime()).utf8().data()); return; } if (end.isPositiveInfinite() && mediaElement()) { cue->setEndTime(mediaElement()->durationMediaTime()); m_incompleteCueMap.add(WTFMove(platformValue), cue.copyRef()); } addCue(WTFMove(cue), ASSERT_NO_EXCEPTION); }
void InbandGenericTextTrack::addGenericCue(InbandTextTrackPrivate* trackPrivate, PassRefPtr<GenericCueData> prpCueData) { ASSERT_UNUSED(trackPrivate, trackPrivate == m_private); RefPtr<GenericCueData> cueData = prpCueData; if (m_cueMap.find(cueData.get())) return; RefPtr<TextTrackCueGeneric> cue = TextTrackCueGeneric::create(scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content()); updateCueFromCueData(cue.get(), cueData.get()); if (hasCue(cue.get(), TextTrackCue::IgnoreDuration)) { LOG(Media, "InbandGenericTextTrack::addGenericCue ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data()); return; } if (cueData->status() != GenericCueData::Complete) m_cueMap.add(cueData.get(), cue.get()); addCue(cue); }
void InbandTextTrack::addGenericCue(InbandTextTrackPrivate* trackPrivate, GenericCueData* cueData) { UNUSED_PARAM(trackPrivate); ASSERT(trackPrivate == m_private); RefPtr<TextTrackCueGeneric> cue = TextTrackCueGeneric::create(scriptExecutionContext(), cueData->startTime(), cueData->endTime(), cueData->content()); cue->setId(cueData->id()); cue->setBaseFontSizeRelativeToVideoHeight(cueData->baseFontSize()); cue->setFontSizeMultiplier(cueData->relativeFontSize()); cue->setFontName(cueData->fontName()); if (cueData->position() > 0) cue->setPosition(lround(cueData->position()), IGNORE_EXCEPTION); if (cueData->line() > 0) cue->setLine(lround(cueData->line()), IGNORE_EXCEPTION); if (cueData->size() > 0) cue->setSize(lround(cueData->size()), IGNORE_EXCEPTION); if (cueData->backgroundColor().isValid()) cue->setBackgroundColor(cueData->backgroundColor().rgb()); if (cueData->foregroundColor().isValid()) cue->setForegroundColor(cueData->foregroundColor().rgb()); if (cueData->align() == GenericCueData::Start) cue->setAlign(ASCIILiteral("start"), IGNORE_EXCEPTION); else if (cueData->align() == GenericCueData::Middle) cue->setAlign(ASCIILiteral("middle"), IGNORE_EXCEPTION); else if (cueData->align() == GenericCueData::End) cue->setAlign(ASCIILiteral("end"), IGNORE_EXCEPTION); cue->setSnapToLines(false); if (hasCue(cue.get())) { LOG(Media, "InbandTextTrack::addGenericCue ignoring already added cue: start=%.2f, end=%.2f, content=\"%s\"\n", cueData->startTime(), cueData->endTime(), cueData->content().utf8().data()); return; } addCue(cue); }