1 /**
2 * Copyright (c) 2011, The University of Southampton and the individual contributors.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without modification,
6 * are permitted provided that the following conditions are met:
7 *
8 * * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10 *
11 * * Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14 *
15 * * Neither the name of the University of Southampton nor the names of its
16 * contributors may be used to endorse or promote products derived from this
17 * software without specific prior written permission.
18 *
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */
30 /**
31 *
32 */
33 package org.openimaj.video.processing.shotdetector;
34
35 import org.openimaj.image.Image;
36 import org.openimaj.video.timecode.VideoTimecode;
37
38 /**
39 * Represents a shot boundary that is a fade shot boundary between
40 * two scenes. This occurs over a time duration so has both a start
41 * and end timecode.
42 *
43 * @author David Dupplaw (dpd@ecs.soton.ac.uk)
44 * @param <T> Type of image
45 * @created 7 Jun 2011
46 *
47 */
48 public class FadeShotBoundary<T extends Image<?,T>> extends ShotBoundary<T>
49 {
50 /** The timecode at the end of the fade */
51 private VideoTimecode endTimecode;
52
53 /**
54 * Create a new fade shot boundary giving the start
55 * of the fade as a starting point.
56 *
57 * @param b The boundary at the start of the fade.
58 */
59 public FadeShotBoundary( ShotBoundary<T> b )
60 {
61 super( b.timecode );
62 }
63
64 /**
65 * Get the timecode at the end of the fade.
66 * @return The timecode at the end of the fade.
67 */
68 public VideoTimecode getEndTimecode()
69 {
70 return this.endTimecode;
71 }
72
73 /**
74 * Get the timecode at the start of the fade.
75 * @return The timecode at the start of the fade.
76 */
77 public VideoTimecode getStartTimecode()
78 {
79 return super.timecode;
80 }
81
82 /**
83 * Set the timecode at the end of the fade.
84 * @param v The timecode of end of the fade
85 */
86 public void setEndTimecode( VideoTimecode v )
87 {
88 this.endTimecode = v;
89 }
90
91 /**
92 * {@inheritDoc}
93 * @see org.openimaj.video.processing.shotdetector.ShotBoundary#getTimecode()
94 */
95 @Override
96 public VideoTimecode getTimecode()
97 {
98 return this.getEndTimecode();
99 }
100
101 /**
102 * {@inheritDoc}
103 * @see org.openimaj.video.processing.shotdetector.ShotBoundary#toString()
104 */
105 @Override
106 public String toString()
107 {
108 return "Fade "+getStartTimecode()+" -> "+getEndTimecode();
109 }
110 }