View Javadoc
1   /*
2    * Licensed to The Apereo Foundation under one or more contributor license
3    * agreements. See the NOTICE file distributed with this work for additional
4    * information regarding copyright ownership.
5    *
6    *
7    * The Apereo Foundation licenses this file to you under the Educational
8    * Community License, Version 2.0 (the "License"); you may not use this file
9    * except in compliance with the License. You may obtain a copy of the License
10   * at:
11   *
12   *   http://opensource.org/licenses/ecl2.txt
13   *
14   * Unless required by applicable law or agreed to in writing, software
15   * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
16   * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
17   * License for the specific language governing permissions and limitations under
18   * the License.
19   *
20   */
21  
22  
23  package org.opencastproject.metadata.mpeg7;
24  
25  /**
26   * A video segment represents a temporal decomposition of the video stream that may have properties like text
27   * annotations attached to it.
28   *
29   * <pre>
30   * &lt;complexType name=&quot;VideoSegmentType&quot;&gt;
31   *   &lt;complexContent&gt;
32   *       &lt;extension base=&quot;mpeg7:SegmentType&quot;&gt;
33   *           &lt;sequence&gt;
34   *               &lt;choice minOccurs=&quot;0&quot;&gt;
35   *                   &lt;element name=&quot;MediaTime&quot; type=&quot;mpeg7:MediaTimeType&quot;/&gt;
36   *                   &lt;element name=&quot;TemporalMask&quot; type=&quot;mpeg7:TemporalMaskType&quot;/&gt;
37   *               &lt;/choice&gt;
38   *               &lt;choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
39   *                   &lt;element name=&quot;VisualDescriptor&quot; type=&quot;mpeg7:VisualDType&quot;/&gt;
40   *                   &lt;element name=&quot;VisualDescriptionScheme&quot; type=&quot;mpeg7:VisualDSType&quot;/&gt;
41   *                   &lt;element name=&quot;VisualTimeSeriesDescriptor&quot; type=&quot;mpeg7:VisualTimeSeriesType&quot;/&gt;
42   *               &lt;/choice&gt;
43   *               &lt;element name=&quot;MultipleView&quot; type=&quot;mpeg7:MultipleViewType&quot; minOccurs=&quot;0&quot;/&gt;
44   *               &lt;element name=&quot;Mosaic&quot; type=&quot;mpeg7:MosaicType&quot; minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;/&gt;
45   *               &lt;choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
46   *                   &lt;element name=&quot;SpatialDecomposition&quot; type=&quot;mpeg7:VideoSegmentSpatialDecompositionType&quot;/&gt;
47   *                   &lt;element name=&quot;TemporalDecomposition&quot; type=&quot;mpeg7:VideoSegmentTemporalDecompositionType&quot;/&gt;
48   *                   &lt;element name=&quot;SpatioTemporalDecomposition&quot; type=&quot;mpeg7:VideoSegmentSpatioTemporalDecompositionType&quot;/&gt;
49   *                   &lt;element name=&quot;MediaSourceDecomposition&quot; type=&quot;mpeg7:VideoSegmentMediaSourceDecompositionType&quot;/&gt;
50   *               &lt;/choice&gt;
51   *           &lt;/sequence&gt;
52   *       &lt;/extension&gt;
53   *   &lt;/complexContent&gt;
54   * &lt;/complexType&gt;
55   * </pre>
56   */
57  public interface VideoSegment extends Segment {
58  
59    /**
60     * Returns <code>true</code> if there is a spatio temporal decomposition as part of this segment.
61     *
62     * @return <code>true</code> if there is a spatio temporal decomposition
63     */
64    boolean hasSpatioTemporalDecomposition();
65  
66    /**
67     * Creates a spatio temporal decomposition in this video segment.
68     *
69     * @param gap
70     *          <code>true</code> if there may be gap between the elements
71     * @param overlap
72     *          <code>true</code> if elements may overlap
73     * @return the new decomposition
74     * @throws IllegalStateException
75     *           if there is already such a decomposition
76     */
77    SpatioTemporalDecomposition createSpatioTemporalDecomposition(boolean gap, boolean overlap)
78            throws IllegalStateException;
79  
80    /**
81     * Returns the spatio temporal decomposition that contains information about elements on the segment such as text
82     * elements.
83     *
84     * @return the spatio temporal decomposition
85     */
86    SpatioTemporalDecomposition getSpatioTemporalDecomposition();
87  
88  }