use of org.opencastproject.smil.entity.api.SmilObject in project opencast by opencast.
the class SmilMediaParamGroupImpl method putAllChilds.
/**
* {@inheritDoc}
*/
@Override
public void putAllChilds(List<SmilObject> elements) {
for (SmilObject child : getParams()) {
elements.add(child);
((SmilObjectImpl) child).putAllChilds(elements);
}
}
use of org.opencastproject.smil.entity.api.SmilObject in project opencast by opencast.
the class SmilMediaParamGroupImpl method addParam.
/**
* Add given {@link SmilMediaParam}.
*
* @param param to add
*/
public void addParam(SmilMediaParam param) {
if (param == null) {
return;
}
SmilObject p = getElementOrNull(param.getId());
if (p != null && p instanceof SmilMediaParam) {
((SmilMediaParamImpl) p).setName(param.getName());
((SmilMediaParamImpl) p).setValue(param.getValue());
} else {
params.add(param);
}
}
use of org.opencastproject.smil.entity.api.SmilObject in project opencast by opencast.
the class SmilServiceImplTest method testAddClipWithParamGroupId.
/**
* passing a previously created paramGroupId
*/
@Test
public void testAddClipWithParamGroupId() throws Exception {
// first, create SMIL with 1 par, 1 video
TrackImpl videoTrack = new TrackImpl();
videoTrack.setIdentifier("presenter-track-1");
videoTrack.setFlavor(new MediaPackageElementFlavor("source", "presenter"));
videoTrack.setURI(new URI("http://hostname/video.mp4"));
videoTrack.addStream(new VideoStreamImpl());
videoTrack.setDuration(1000000000000L);
SmilResponse smilResponse = smilService.createNewSmil();
smilResponse = smilService.addParallel(smilResponse.getSmil());
SmilMediaContainer par = (SmilMediaContainer) smilResponse.getEntity();
// add video track into parallel element
smilResponse = smilService.addClip(smilResponse.getSmil(), par.getId(), videoTrack, 1000L, 1000000L);
SmilMediaObject media = null;
for (SmilObject entity : smilResponse.getEntities()) {
if (entity instanceof SmilMediaObject) {
media = (SmilMediaObject) entity;
break;
}
}
assertNotNull(media);
assertEquals(media.getId(), ((SmilMediaContainer) smilResponse.getSmil().getBody().getMediaElements().get(0)).getElements().get(0).getId());
assertTrue(media instanceof SmilMediaVideoImpl);
assertSame(((SmilMediaElement) media).getMediaType(), SmilMediaElement.MediaType.VIDEO);
// 1000 milliseconds = 1 second
assertEquals(1000L, ((SmilMediaElement) media).getClipBeginMS());
// duration is 1000000 milliseconds = 1000 soconds
// start + duration = 1s + 1000s = 1001s
assertEquals(1001000L, ((SmilMediaElement) media).getClipEndMS());
// get param group id
List<SmilMediaParamGroup> groups = smilResponse.getSmil().getHead().getParamGroups();
assertEquals(1, groups.size());
String paramGroupId = groups.get(0).getId();
// then, create a 2nd par with 1 video with the same param group id
TrackImpl videoTrack2 = new TrackImpl();
videoTrack2.setIdentifier("presenter-track-2");
videoTrack2.setFlavor(new MediaPackageElementFlavor("source2", "presenter"));
videoTrack2.setURI(new URI("http://hostname/video2.mp4"));
videoTrack2.addStream(new VideoStreamImpl());
videoTrack2.setDuration(2000000000000L);
smilResponse = smilService.addParallel(smilResponse.getSmil());
SmilMediaContainer par2 = null;
for (SmilObject entity : smilResponse.getEntities()) {
if (entity instanceof SmilMediaContainer && !entity.getId().equals(par.getId())) {
par2 = (SmilMediaContainer) entity;
break;
}
}
// add video track into parallel element
smilResponse = smilService.addClip(smilResponse.getSmil(), par2.getId(), videoTrack2, 2000L, 2000000L, paramGroupId);
SmilMediaObject media2 = null;
for (SmilObject entity : smilResponse.getEntities()) {
if (entity instanceof SmilMediaObject && !entity.getId().equals(media.getId())) {
media2 = (SmilMediaObject) entity;
break;
}
}
assertNotNull(media2);
SmilMediaElement mediaElement2 = (SmilMediaElement) ((SmilMediaContainer) smilResponse.getSmil().getBody().getMediaElements().get(1)).getElements().get(0);
assertEquals(media2.getId(), mediaElement2.getId());
assertTrue(media2 instanceof SmilMediaVideoImpl);
assertSame(((SmilMediaElement) media2).getMediaType(), SmilMediaElement.MediaType.VIDEO);
// 1000 milliseconds = 1 second
assertEquals(2000L, ((SmilMediaElement) media2).getClipBeginMS());
// duration is 2000000 milliseconds = 2000 seconds
// start + duration = 2s + 2000s = 2002s
assertEquals(2002000L, ((SmilMediaElement) media2).getClipEndMS());
// make sure there's still 1 param group
groups = smilResponse.getSmil().getHead().getParamGroups();
assertEquals(1, groups.size());
// make sure that the media element has the previous param groupo id
assertEquals(paramGroupId, mediaElement2.getParamGroup());
}
use of org.opencastproject.smil.entity.api.SmilObject in project opencast by opencast.
the class SmilServiceImpl method addClips.
/**
* {@inheritDoc}
*/
@Override
public SmilResponse addClips(Smil smil, String parentId, Track[] tracks, long start, long duration) throws SmilException {
List<SmilObject> trackEntities = new ArrayList<SmilObject>(tracks.length);
List<SmilObject> otherEntities = new ArrayList<SmilObject>(tracks.length);
for (Track track : tracks) {
// add single clip and collect entities from response
SmilResponse response = addClip(smil, parentId, track, start, duration);
if (response.getEntitiesCount() == 1) {
trackEntities.add(response.getEntity());
} else {
trackEntities.add(response.getEntities()[0]);
for (int e = 1; e < response.getEntitiesCount(); e++) {
otherEntities.add(response.getEntities()[e]);
}
}
}
// merge entities (track entities first)
SmilObject[] entities = new SmilObject[trackEntities.size() + otherEntities.size()];
for (int e = 0; e < entities.length; e++) {
entities[e] = (e < trackEntities.size() ? trackEntities.get(e) : otherEntities.get(e - trackEntities.size()));
}
// create new response
return new SmilResponseImpl(smil, entities);
}
use of org.opencastproject.smil.entity.api.SmilObject in project opencast by opencast.
the class SmilResponseImplTest method testGetEntitiesCount.
/**
* Test of getEntitiesCount method, of class SmilResponseImpl.
*/
@Test
public void testGetEntitiesCount() {
Smil smil = new SmilImpl();
SmilResponse response = new SmilResponseImpl(smil);
assertSame(0, response.getEntitiesCount());
response = new SmilResponseImpl(smil, smil.getBody());
assertSame(1, response.getEntitiesCount());
response = new SmilResponseImpl(smil, new SmilObject[] { smil.getHead(), smil.getBody() });
assertSame(2, response.getEntitiesCount());
}
Aggregations