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   * An audiovisual segment represents a temporal decomposition of the audiovisual stream that may have properties like
27   * text annotations attached to it.
28   *
29   * <pre>
30   * &lt;complexType name=&quot;AudioVisualSegmentType&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;SpatialDecomposition&quot;
40   *                       type=&quot;mpeg7:AudioVisualSegmentSpatialDecompositionType&quot;/&gt;
41   *                   &lt;element name=&quot;TemporalDecomposition&quot;
42   *                       type=&quot;mpeg7:AudioVisualSegmentTemporalDecompositionType&quot;/&gt;
43   *                   &lt;element name=&quot;SpatioTemporalDecomposition&quot;
44   *                       type=&quot;mpeg7:AudioVisualSegmentSpatioTemporalDecompositionType&quot;/&gt;
45   *                   &lt;element name=&quot;MediaSourceDecomposition&quot;
46   *                       type=&quot;mpeg7:AudioVisualSegmentMediaSourceDecompositionType&quot;/&gt;
47   *               &lt;/choice&gt;
48   *           &lt;/sequence&gt;
49   *       &lt;/extension&gt;
50   *   &lt;/complexContent&gt;
51   * &lt;/complexType&gt;
52   * </pre>
53   */
54  public interface AudioVisualSegment extends Segment {
55  
56    /**
57     * Returns <code>true</code> if there is a spatio temporal decomposition as part of this segment.
58     *
59     * @return <code>true</code> if there is a spatio temporal decomposition
60     */
61    boolean hasSpatioTemporalDecomposition();
62  
63    /**
64     * Creates a spatio temporal decomposition in this video segment.
65     *
66     * @param gap
67     *          <code>true</code> if there may be gap between the elements
68     * @param overlap
69     *          <code>true</code> if elements may overlap
70     * @return the new decomposition
71     * @throws IllegalStateException
72     *           if there is already such a decomposition
73     */
74    SpatioTemporalDecomposition createSpatioTemporalDecomposition(boolean gap, boolean overlap)
75            throws IllegalStateException;
76  
77    /**
78     * Returns the spatio temporal decomposition that contains information about elements on the segment such as text
79     * elements.
80     *
81     * @return the spatio temporal decomposition
82     */
83    SpatioTemporalDecomposition getSpatioTemporalDecomposition();
84  
85  }