public float getImplicitDuration() { float dur = -1.0F; if (ENDSYNC_LAST.equals(getEndSync())) { NodeList children = getTimeChildren(); for (int i = 0; i < children.getLength(); ++i) { ElementTime child = (ElementTime) children.item(i); TimeList endTimeList = child.getEnd(); for (int j = 0; j < endTimeList.getLength(); ++j) { Time endTime = endTimeList.item(j); if (endTime.getTimeType() == Time.SMIL_TIME_INDEFINITE) { // Return "indefinite" here. return -1.0F; } if (endTime.getResolved()) { float end = (float)endTime.getResolvedOffset(); dur = (end > dur) ? end : dur; } } } } // Other endsync types are not supported now. return dur; }
private synchronized void seekActiveMedia() { for (int i = mActiveElements.size() - 1; i >= 0; i--) { ElementTime element = mActiveElements.get(i); if (element instanceof SmilParElementImpl) { return; } double offset = getOffsetTime(element); if ((offset >= 0) && (offset <= mCurrentTime)) { if (LOCAL_LOGV) { Log.v(TAG, "[SEEK] " + " at " + mCurrentTime + " " + element); } element.seekElement( (float) (mCurrentTime - offset) ); } } }
public short getFillDefault() { String fillDefault = mSmilElement.getAttribute(FILLDEFAULT_ATTRIBUTE_NAME); if (fillDefault.equalsIgnoreCase(FILL_REMOVE_ATTRIBUTE)) { return FILL_REMOVE; } else if (fillDefault.equalsIgnoreCase(FILL_FREEZE_ATTRIBUTE)) { return FILL_FREEZE; } else if (fillDefault.equalsIgnoreCase(FILL_AUTO_ATTRIBUTE)) { return FILL_AUTO; } else if (fillDefault.equalsIgnoreCase(FILL_HOLD_ATTRIBUTE)) { // FIXME handle it as freeze for now return FILL_FREEZE; } else if (fillDefault.equalsIgnoreCase(FILL_TRANSITION_ATTRIBUTE)) { // FIXME handle it as freeze for now return FILL_FREEZE; } else { /* * fillDefault = inherit * Specifies that the value of this attribute (and of the fill behavior) are * inherited from the fillDefault value of the parent element. * This is the default value. */ ElementTime parent = getParentElementTime(); if (parent == null) { /* * fillDefault = auto * If there is no parent element, the value is "auto". */ return FILL_AUTO; } else { return ((ElementTimeImpl) parent).getFillDefault(); } } }
public NodeList getActiveChildrenAt(float instant) { NodeList allChildren = this.getTimeChildren(); ArrayList<Node> nodes = new ArrayList<Node>(); for (int i = 0; i < allChildren.getLength(); i++) { instant -= ((ElementTime) allChildren.item(i)).getDur(); if (instant < 0) { nodes.add(allChildren.item(i)); return new NodeListImpl(nodes); } } return new NodeListImpl(nodes); }
public float getDur() { float dur = super.getDur(); if (dur == 0) { NodeList children = getTimeChildren(); for (int i = 0; i < children.getLength(); ++i) { ElementTime child = (ElementTime) children.item(i); if (child.getDur() < 0) { // Return "indefinite" since containing a child whose duration is indefinite. return -1.0F; } dur += child.getDur(); } } return dur; }
public synchronized void init(ElementTime root) { mRoot = root; mAllEntries = getTimeline(mRoot, 0, Long.MAX_VALUE); mMediaTimeUpdatedEvent = ((DocumentEvent) mRoot).createEvent("Event"); mMediaTimeUpdatedEvent.initEvent(MEDIA_TIME_UPDATED_EVENT, false, false); mActiveElements = new ArrayList<>(); }
private synchronized double getOffsetTime(ElementTime element) { for (int i = mCurrentSlide; i < mCurrentElement; i++) { TimelineEntry entry = mAllEntries.get(i); if (element.equals(entry.getElement())) { return entry.getOffsetTime() * 1000; // in ms } } return -1; }
private synchronized void seekActiveMedia() { for (int i = mActiveElements.size() - 1; i >= 0; i--) { ElementTime element = mActiveElements.get(i); if (element instanceof SmilParElementImpl) { return; } double offset = getOffsetTime(element); if ((offset >= 0) && (offset <= mCurrentTime)) { if (LOCAL_LOGV) Log.v(TAG, "[SEEK] " + " at " + mCurrentTime + " " + element); element.seekElement( (float) (mCurrentTime - offset) ); } } }
private synchronized void endActiveElements() { for (int i = mActiveElements.size() - 1; i >= 0; i--) { ElementTime element = mActiveElements.get(i); if (LOCAL_LOGV) Log.v(TAG, "[STOP] " + " at " + mCurrentTime + " " + element); element.endElement(); } }
private synchronized void pauseActiveElements() { for (int i = mActiveElements.size() - 1; i >= 0; i--) { ElementTime element = mActiveElements.get(i); if (LOCAL_LOGV) Log.v(TAG, "[PAUSE] " + " at " + mCurrentTime + " " + element); element.pauseElement(); } }
private synchronized void resumeActiveElements() { int size = mActiveElements.size(); for (int i = 0; i < size; i++) { ElementTime element = mActiveElements.get(i); if (LOCAL_LOGV) Log.v(TAG, "[RESUME] " + " at " + mCurrentTime + " " + element); element.resumeElement(); } }
public short getFillDefault() { String fillDefault = mSmilElement.getAttribute(FILLDEFAULT_ATTRIBUTE_NAME); if (fillDefault.equalsIgnoreCase(FILL_REMOVE_ATTRIBUTE)) { return FILL_REMOVE; } else if (fillDefault.equalsIgnoreCase(FILL_FREEZE_ATTRIBUTE)) { return FILL_FREEZE; } else if (fillDefault.equalsIgnoreCase(FILL_AUTO_ATTRIBUTE)) { return FILL_AUTO; } else if (fillDefault.equalsIgnoreCase(FILL_HOLD_ATTRIBUTE)) { // FIXME handle it as freeze for now return FILL_FREEZE; } else if (fillDefault.equalsIgnoreCase(FILL_TRANSITION_ATTRIBUTE)) { // FIXME handle it as freeze for now return FILL_FREEZE; } else { /* * fillDefault = inherit * Specifies that the value of this attribute (and of the fill behavior) are * inherited from the fillDefault value of the parent element. * This is the default value. */ ElementTime parent = getParentElementTime(); if (parent == null) { /* * fillDefault = auto * If there is no parent element, the value is "auto". */ return FILL_AUTO; } else { return parent.getFillDefault(); } } }
public void handleEvent(Event evt) { if (evt.getType().equals(SmilParElementImpl.SMIL_SLIDE_START_EVENT)) { if (LOCAL_LOGV) { Log.v(TAG, "Start to play slide: " + this); } mVisible = true; } else if (mFill != ElementTime.FILL_FREEZE) { if (LOCAL_LOGV) { Log.v(TAG, "Stop playing slide: " + this); } mVisible = false; } notifyModelChanged(false); }
public void handleEvent(Event evt) { if (evt.getType().equals(SmilMediaElementImpl.SMIL_MEDIA_START_EVENT)) { mVisible = true; } else if (mFill != ElementTime.FILL_FREEZE) { mVisible = false; } notifyModelChanged(false); }
@Override public void handleEvent(Event evt) { if (evt.getType().equals(SmilMediaElementImpl.SMIL_MEDIA_START_EVENT)) { mVisible = true; } else if (mFill != ElementTime.FILL_FREEZE) { mVisible = false; } notifyModelChanged(false); }
public void handleEvent(Event evt) { String evtType = evt.getType(); if (LOCAL_LOGV || Log.isLoggable(LogTag.APP, Log.VERBOSE)) { Log.v(TAG, "[VideoModel] handleEvent " + evt.getType() + " on " + this); } MediaAction action = MediaAction.NO_ACTIVE_ACTION; if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_START_EVENT)) { action = MediaAction.START; // if the Music player app is playing audio, we should pause that so it won't // interfere with us playing video here. pauseMusicPlayer(); mVisible = true; } else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_END_EVENT)) { action = MediaAction.STOP; if (mFill != ElementTime.FILL_FREEZE) { mVisible = false; } } else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_PAUSE_EVENT)) { action = MediaAction.PAUSE; mVisible = true; } else if (evtType.equals(SmilMediaElementImpl.SMIL_MEDIA_SEEK_EVENT)) { action = MediaAction.SEEK; mSeekTo = ((EventImpl) evt).getSeekTo(); mVisible = true; } appendAction(action); notifyModelChanged(false); }