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;
42   *                   type=&quot;mpeg7:VisualTimeSeriesType&quot;/&gt;
43   *               &lt;/choice&gt;
44   *               &lt;element name=&quot;MultipleView&quot; type=&quot;mpeg7:MultipleViewType&quot;
45   *               minOccurs=&quot;0&quot;/&gt;
46   *               &lt;element name=&quot;Mosaic&quot; type=&quot;mpeg7:MosaicType&quot; minOccurs=&quot;0&quot;
47   *               maxOccurs=&quot;unbounded&quot;/&gt;
48   *               &lt;choice minOccurs=&quot;0&quot; maxOccurs=&quot;unbounded&quot;&gt;
49   *                   &lt;element name=&quot;SpatialDecomposition&quot;
50   *                   type=&quot;mpeg7:VideoSegmentSpatialDecompositionType&quot;/&gt;
51   *                   &lt;element name=&quot;TemporalDecomposition&quot;
52   *                   type=&quot;mpeg7:VideoSegmentTemporalDecompositionType&quot;/&gt;
53   *                   &lt;element name=&quot;SpatioTemporalDecomposition&quot;
54   *                   type=&quot;mpeg7:VideoSegmentSpatioTemporalDecompositionType&quot;/&gt;
55   *                   &lt;element name=&quot;MediaSourceDecomposition&quot;
56   *                   type=&quot;mpeg7:VideoSegmentMediaSourceDecompositionType&quot;/&gt;
57   *               &lt;/choice&gt;
58   *           &lt;/sequence&gt;
59   *       &lt;/extension&gt;
60   *   &lt;/complexContent&gt;
61   * &lt;/complexType&gt;
62   * </pre>
63   */
64  public interface VideoSegment extends Segment {
65  
66    /**
67     * Returns <code>true</code> if there is a spatio temporal decomposition as part of this segment.
68     *
69     * @return <code>true</code> if there is a spatio temporal decomposition
70     */
71    boolean hasSpatioTemporalDecomposition();
72  
73    /**
74     * Creates a spatio temporal decomposition in this video segment.
75     *
76     * @param gap
77     *          <code>true</code> if there may be gap between the elements
78     * @param overlap
79     *          <code>true</code> if elements may overlap
80     * @return the new decomposition
81     * @throws IllegalStateException
82     *           if there is already such a decomposition
83     */
84    SpatioTemporalDecomposition createSpatioTemporalDecomposition(boolean gap, boolean overlap)
85            throws IllegalStateException;
86  
87    /**
88     * Returns the spatio temporal decomposition that contains information about elements on the segment such as text
89     * elements.
90     *
91     * @return the spatio temporal decomposition
92     */
93    SpatioTemporalDecomposition getSpatioTemporalDecomposition();
94  
95  }