OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 374 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
385 // Return an empty range if all ranges are empty. | 385 // Return an empty range if all ranges are empty. |
386 if (highestEndTime < 0) | 386 if (highestEndTime < 0) |
387 return TimeRanges::create(); | 387 return TimeRanges::create(); |
388 | 388 |
389 // 4. Let intersection ranges equal a TimeRange object containing a single | 389 // 4. Let intersection ranges equal a TimeRange object containing a single |
390 // range from 0 to highest end time. | 390 // range from 0 to highest end time. |
391 TimeRanges* intersectionRanges = TimeRanges::create(0, highestEndTime); | 391 TimeRanges* intersectionRanges = TimeRanges::create(0, highestEndTime); |
392 | 392 |
393 // 5. For each SourceBuffer object in activeSourceBuffers run the following | 393 // 5. For each SourceBuffer object in activeSourceBuffers run the following |
394 // steps: | 394 // steps: |
395 bool ended = readyState() == endedKeyword(); | 395 bool ended = getReadyState() == endedKeyword(); |
396 for (size_t i = 0; i < ranges.size(); ++i) { | 396 for (size_t i = 0; i < ranges.size(); ++i) { |
397 // 5.1 Let source ranges equal the ranges returned by the buffered attribute | 397 // 5.1 Let source ranges equal the ranges returned by the buffered attribute |
398 // on the current SourceBuffer. | 398 // on the current SourceBuffer. |
399 TimeRanges* sourceRanges = ranges[i].get(); | 399 TimeRanges* sourceRanges = ranges[i].get(); |
400 | 400 |
401 // 5.2 If readyState is "ended", then set the end time on the last range in | 401 // 5.2 If readyState is "ended", then set the end time on the last range in |
402 // source ranges to highest end time. | 402 // source ranges to highest end time. |
403 if (ended && sourceRanges->length()) | 403 if (ended && sourceRanges->length()) |
404 sourceRanges->add( | 404 sourceRanges->add( |
405 sourceRanges->start(sourceRanges->length() - 1, ASSERT_NO_EXCEPTION), | 405 sourceRanges->start(sourceRanges->length() - 1, ASSERT_NO_EXCEPTION), |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
579 | 579 |
580 // 6. Update the media controller duration to new duration and run the | 580 // 6. Update the media controller duration to new duration and run the |
581 // HTMLMediaElement duration change algorithm. | 581 // HTMLMediaElement duration change algorithm. |
582 m_attachedElement->durationChanged(newDuration, requestSeek); | 582 m_attachedElement->durationChanged(newDuration, requestSeek); |
583 } | 583 } |
584 | 584 |
585 void MediaSource::setReadyState(const AtomicString& state) { | 585 void MediaSource::setReadyState(const AtomicString& state) { |
586 DCHECK(state == openKeyword() || state == closedKeyword() || | 586 DCHECK(state == openKeyword() || state == closedKeyword() || |
587 state == endedKeyword()); | 587 state == endedKeyword()); |
588 | 588 |
589 AtomicString oldState = readyState(); | 589 AtomicString oldState = getReadyState(); |
590 BLINK_MSLOG << __func__ << " this=" << this << " : " << oldState << " -> " | 590 BLINK_MSLOG << __func__ << " this=" << this << " : " << oldState << " -> " |
591 << state; | 591 << state; |
592 | 592 |
593 if (state == closedKeyword()) { | 593 if (state == closedKeyword()) { |
594 m_webMediaSource.reset(); | 594 m_webMediaSource.reset(); |
595 } | 595 } |
596 | 596 |
597 if (oldState == state) | 597 if (oldState == state) |
598 return; | 598 return; |
599 | 599 |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
688 // 1. Change the readyState attribute value to "ended". | 688 // 1. Change the readyState attribute value to "ended". |
689 // 2. Queue a task to fire a simple event named sourceended at the | 689 // 2. Queue a task to fire a simple event named sourceended at the |
690 // MediaSource. | 690 // MediaSource. |
691 setReadyState(endedKeyword()); | 691 setReadyState(endedKeyword()); |
692 | 692 |
693 // 3. Do various steps based on |eosStatus|. | 693 // 3. Do various steps based on |eosStatus|. |
694 m_webMediaSource->markEndOfStream(eosStatus); | 694 m_webMediaSource->markEndOfStream(eosStatus); |
695 } | 695 } |
696 | 696 |
697 bool MediaSource::isOpen() const { | 697 bool MediaSource::isOpen() const { |
698 return readyState() == openKeyword(); | 698 return getReadyState() == openKeyword(); |
699 } | 699 } |
700 | 700 |
701 void MediaSource::setSourceBufferActive(SourceBuffer* sourceBuffer, | 701 void MediaSource::setSourceBufferActive(SourceBuffer* sourceBuffer, |
702 bool isActive) { | 702 bool isActive) { |
703 if (!isActive) { | 703 if (!isActive) { |
704 DCHECK(m_activeSourceBuffers->contains(sourceBuffer)); | 704 DCHECK(m_activeSourceBuffers->contains(sourceBuffer)); |
705 m_activeSourceBuffers->remove(sourceBuffer); | 705 m_activeSourceBuffers->remove(sourceBuffer); |
706 return; | 706 return; |
707 } | 707 } |
708 | 708 |
(...skipping 17 matching lines...) Expand all Loading... |
726 } | 726 } |
727 | 727 |
728 m_activeSourceBuffers->insert(insertPosition, sourceBuffer); | 728 m_activeSourceBuffers->insert(insertPosition, sourceBuffer); |
729 } | 729 } |
730 | 730 |
731 HTMLMediaElement* MediaSource::mediaElement() const { | 731 HTMLMediaElement* MediaSource::mediaElement() const { |
732 return m_attachedElement.get(); | 732 return m_attachedElement.get(); |
733 } | 733 } |
734 | 734 |
735 bool MediaSource::isClosed() const { | 735 bool MediaSource::isClosed() const { |
736 return readyState() == closedKeyword(); | 736 return getReadyState() == closedKeyword(); |
737 } | 737 } |
738 | 738 |
739 void MediaSource::close() { | 739 void MediaSource::close() { |
740 setReadyState(closedKeyword()); | 740 setReadyState(closedKeyword()); |
741 } | 741 } |
742 | 742 |
743 bool MediaSource::attachToElement(HTMLMediaElement* element) { | 743 bool MediaSource::attachToElement(HTMLMediaElement* element) { |
744 if (m_attachedElement) | 744 if (m_attachedElement) |
745 return false; | 745 return false; |
746 | 746 |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
815 event->setTarget(this); | 815 event->setTarget(this); |
816 | 816 |
817 m_asyncEventQueue->enqueueEvent(event); | 817 m_asyncEventQueue->enqueueEvent(event); |
818 } | 818 } |
819 | 819 |
820 URLRegistry& MediaSource::registry() const { | 820 URLRegistry& MediaSource::registry() const { |
821 return MediaSourceRegistry::registry(); | 821 return MediaSourceRegistry::registry(); |
822 } | 822 } |
823 | 823 |
824 } // namespace blink | 824 } // namespace blink |
OLD | NEW |