/*! \fn operator==(const QMediaTimeRange &a, const QMediaTimeRange &b) \relates QMediaTimeRange Returns true if all intervals in \a a are present in \a b. \since 1.0 */ bool operator==(const QMediaTimeRange &a, const QMediaTimeRange &b) { if (a.intervals().count() != b.intervals().count()) return false; for (int i = 0; i < a.intervals().count(); i++) { if(a.intervals()[i] != b.intervals()[i]) return false; } return true; }
QDebug operator<<(QDebug dbg, const QMediaTimeRange &range) { dbg.nospace() << "QMediaTimeRange( "; foreach (const QMediaTimeInterval &interval, range.intervals()) { dbg.nospace() << "(" << interval.start() << ", " << interval.end() << ") "; } dbg.space() << ")"; return dbg; }
void tst_QMediaTimeRange::testGetters() { QMediaTimeRange x; // isEmpty QVERIFY(x.isEmpty()); x.addInterval(10, 20); // isEmpty + isContinuous QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); x.addInterval(30, 40); // isEmpty + isContinuous + intervals + start + end QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.intervals().count() == 2); QVERIFY(x.intervals()[0].start() == 10); QVERIFY(x.intervals()[0].end() == 20); QVERIFY(x.intervals()[1].start() == 30); QVERIFY(x.intervals()[1].end() == 40); }
PassRefPtr<TimeRanges> MediaPlayerPrivate::buffered() const { RefPtr<TimeRanges> buffered = TimeRanges::create(); if (!m_mediaPlayerControl) return buffered; QMediaTimeRange playbackRanges = m_mediaPlayerControl->availablePlaybackRanges(); foreach (const QMediaTimeInterval interval, playbackRanges.intervals()) { float rangeMin = static_cast<float>(interval.start()) / 1000.0f; float rangeMax = static_cast<float>(interval.end()) / 1000.0f; buffered->add(rangeMin, rangeMax); } return buffered.release(); }
/*! \fn QMediaTimeRange::removeTimeRange(const QMediaTimeRange &range) Removes each of the intervals in \a range from this time range. Equivalent to calling removeInterval() for each interval in \a range. \since 1.0 */ void QMediaTimeRange::removeTimeRange(const QMediaTimeRange &range) { foreach(const QMediaTimeInterval &i, range.intervals()) { d->removeInterval(i); } }
/*! \fn QMediaTimeRange::addTimeRange(const QMediaTimeRange &range) Adds each of the intervals in \a range to this time range. Equivalent to calling addInterval() for each interval in \a range. \since 1.0 */ void QMediaTimeRange::addTimeRange(const QMediaTimeRange &range) { foreach(const QMediaTimeInterval &i, range.intervals()) { d->addInterval(i); } }
void tst_QMediaTimeRange::testRemoveInterval() { // Removing an interval, causing a split QMediaTimeRange x; x.addInterval(10, 50); x.removeInterval(20, 40); QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.intervals().count() == 2); QVERIFY(x.intervals()[0].start() == 10); QVERIFY(x.intervals()[0].end() == 19); QVERIFY(x.intervals()[1].start() == 41); QVERIFY(x.intervals()[1].end() == 50); // Removing an interval, causing a deletion x = QMediaTimeRange(); x.addInterval(20, 30); x.removeInterval(10, 40); QVERIFY(x.isEmpty()); // Removing an interval, causing a tail trim x = QMediaTimeRange(); x.addInterval(20, 40); x.removeInterval(30, 50); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 20); QVERIFY(x.latestTime() == 29); // Removing an interval, causing a head trim x = QMediaTimeRange(); x.addInterval(20, 40); x.removeInterval(10, 30); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 31); QVERIFY(x.latestTime() == 40); // Identical Remove x = QMediaTimeRange(); x.addInterval(10, 20); x.removeInterval(10, 20); QVERIFY(x.isEmpty()); // Multi-Trim x = QMediaTimeRange(); x.addInterval(10, 20); x.addInterval(30, 40); x.removeInterval(15, 35); QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.intervals().count() == 2); QVERIFY(x.intervals()[0].start() == 10); QVERIFY(x.intervals()[0].end() == 14); QVERIFY(x.intervals()[1].start() == 36); QVERIFY(x.intervals()[1].end() == 40); // Multi-Delete x = QMediaTimeRange(); x.addInterval(10, 20); x.addInterval(30, 40); x.addInterval(50, 60); x.removeInterval(10, 60); QVERIFY(x.isEmpty()); // Interval Parameter - Removing an interval, causing a split x = QMediaTimeRange(); x.addInterval(10, 50); x.removeInterval(QMediaTimeInterval(20, 40)); QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.intervals().count() == 2); QVERIFY(x.intervals()[0].start() == 10); QVERIFY(x.intervals()[0].end() == 19); QVERIFY(x.intervals()[1].start() == 41); QVERIFY(x.intervals()[1].end() == 50); // Interval Parameter - Abnormal Interval x = QMediaTimeRange(); x.addInterval(10, 40); x.removeInterval(QMediaTimeInterval(30, 20)); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 40); }
void tst_QMediaTimeRange::testAddInterval() { // All intervals Overlap QMediaTimeRange x; x.addInterval(10, 40); x.addInterval(30, 50); x.addInterval(20, 60); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 60); // 1 adjacent interval, 1 encompassed interval x = QMediaTimeRange(); x.addInterval(10, 40); x.addInterval(20, 30); x.addInterval(41, 50); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 50); // 1 overlapping interval, 1 disjoint interval x = QMediaTimeRange(); x.addInterval(10, 30); x.addInterval(20, 40); x.addInterval(50, 60); QVERIFY(!x.isEmpty()); QVERIFY(!x.isContinuous()); QVERIFY(x.intervals().count() == 2); QVERIFY(x.intervals()[0].start() == 10); QVERIFY(x.intervals()[0].end() == 40); QVERIFY(x.intervals()[1].start() == 50); QVERIFY(x.intervals()[1].end() == 60); // Identical Add x = QMediaTimeRange(); x.addInterval(10, 20); x.addInterval(10, 20); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 20); // Multi-Merge x = QMediaTimeRange(); x.addInterval(10, 20); x.addInterval(30, 40); x.addInterval(50, 60); x.addInterval(15, 55); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 60); // Interval Parameter - All intervals Overlap x = QMediaTimeRange(); x.addInterval(QMediaTimeInterval(10, 40)); x.addInterval(QMediaTimeInterval(30, 50)); x.addInterval(QMediaTimeInterval(20, 60)); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 60); // Interval Parameter - Abnormal Interval x = QMediaTimeRange(); x.addInterval(QMediaTimeInterval(20, 10)); QVERIFY(x.isEmpty()); }