void tst_QMediaTimeRange::testCtor() { // Default Ctor QMediaTimeRange a; QVERIFY(a.isEmpty()); // (qint, qint) Ctor QMediaTimeRange b(10, 20); QVERIFY(!b.isEmpty()); QVERIFY(b.isContinuous()); QVERIFY(b.earliestTime() == 10); QVERIFY(b.latestTime() == 20); // Interval Ctor QMediaTimeRange c(QMediaTimeInterval(30, 40)); QVERIFY(!c.isEmpty()); QVERIFY(c.isContinuous()); QVERIFY(c.earliestTime() == 30); QVERIFY(c.latestTime() == 40); // Abnormal Interval Ctor QMediaTimeRange d(QMediaTimeInterval(20, 10)); QVERIFY(d.isEmpty()); // Copy Ctor QMediaTimeRange e(b); QVERIFY(!e.isEmpty()); QVERIFY(e.isContinuous()); QVERIFY(e.earliestTime() == 10); QVERIFY(e.latestTime() == 20); }
QMediaTimeRange QGstreamerPlayerControl::availablePlaybackRanges() const { QMediaTimeRange ranges; if (m_session->isSeekable()) ranges.addInterval(0, m_session->duration()); return ranges; }
QMediaTimeRange QXAMediaPlayerControl::availablePlaybackRanges() const { QT_TRACE_FUNCTION_ENTRY; QMediaTimeRange retVal; RET_s_IF_p_IS_NULL(mSession, retVal); if (mSession->isSeekable()) retVal.addInterval(0, mSession->duration()); QT_TRACE_FUNCTION_EXIT; return retVal; }
/*! \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; }
QMediaTimeRange QWmpPlayerControl::availablePlaybackRanges() const { QMediaTimeRange ranges; IWMPMedia *media = 0; if (m_controls && m_controls->get_currentItem(&media) == S_OK) { double duration = 0; media->get_duration(&duration); media->Release(); if(duration > 0) ranges.addInterval(0, duration * 1000); } return ranges; }
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(); }
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::testClear() { QMediaTimeRange x; // Clear Nothing x.clear(); QVERIFY(x.isEmpty()); // Clear Single x = QMediaTimeRange(10, 20); x.clear(); QVERIFY(x.isEmpty()); // Clear Multiple x = QMediaTimeRange(); x.addInterval(10, 20); x.addInterval(30, 40); x.clear(); QVERIFY(x.isEmpty()); }
/*! \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()); }
void tst_QMediaTimeRange::testAssignment() { QMediaTimeRange x; // Range Assignment x = QMediaTimeRange(10, 20); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 10); QVERIFY(x.latestTime() == 20); // Interval Assignment x = QMediaTimeInterval(30, 40); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 30); QVERIFY(x.latestTime() == 40); // Shared Data Check QMediaTimeRange y; y = x; y.addInterval(10, 20); QVERIFY(!x.isEmpty()); QVERIFY(x.isContinuous()); QVERIFY(x.earliestTime() == 30); QVERIFY(x.latestTime() == 40); }
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); }