Panda3D
panda
src
movies
movieVideoCursor.I
Go to the documentation of this file.
1
/**
2
* PANDA 3D SOFTWARE
3
* Copyright (c) Carnegie Mellon University. All rights reserved.
4
*
5
* All use of this software is subject to the terms of the revised BSD
6
* license. You should have received a copy of this license along
7
* with this source code in a file named "LICENSE."
8
*
9
* @file movieVideoCursor.I
10
* @author jyelon
11
* @date 2007-07-02
12
*/
13
14
/**
15
* Get the MovieVideo which this cursor references.
16
*/
17
INLINE PT(
MovieVideo
) MovieVideoCursor::
18
get_source()
const
{
19
return
_source;
20
}
21
22
/**
23
* Get the horizontal size of the movie.
24
*/
25
INLINE
int
MovieVideoCursor::
26
size_x()
const
{
27
return
_size_x;
28
}
29
30
/**
31
* Get the vertical size of the movie.
32
*/
33
INLINE
int
MovieVideoCursor::
34
size_y()
const
{
35
return
_size_y;
36
}
37
38
/**
39
* Returns 4 if the movie has an alpha channel, 3 otherwise.
40
*/
41
INLINE
int
MovieVideoCursor::
42
get_num_components()
const
{
43
return
_num_components;
44
}
45
46
/**
47
* Returns the length of the movie.
48
*
49
* Some kinds of Movie, such as internet TV station, might not have a
50
* predictable length. In that case, the length will be set to a very large
51
* number: 1.0E10. If the internet TV station goes offline, the video or audio
52
* stream will set its abort flag. Reaching the end of the movie (ie, the
53
* specified length) normally does not cause the abort flag to be set.
54
*
55
* The video and audio streams produced by get_video and get_audio are always
56
* of unlimited duration - you can always read another video frame or another
57
* audio sample. This is true even if the specified length is reached, or an
58
* abort is flagged. If either stream runs out of data, it will synthesize
59
* blank video frames and silent audio samples as necessary to satisfy read
60
* requests.
61
*
62
* Some AVI files have incorrect length values encoded into them - usually,
63
* they're a second or two long or short. When playing such an AVI using the
64
* Movie class, you may see a slightly truncated video, or a slightly
65
* elongated video (padded with black frames). There are utilities out there
66
* to fix the length values in AVI files.
67
*
68
*/
69
INLINE
double
MovieVideoCursor::
70
length()
const
{
71
return
_length;
72
}
73
74
/**
75
* Returns true if the movie can seek. If this is true, seeking is still not
76
* guaranteed to be fast: for some movies, seeking is implemented by rewinding
77
* to the beginning and then fast-forwarding to the desired location. Even if
78
* the movie cannot seek, the fetch methods can still advance to an arbitrary
79
* location by reading frames and discarding them. However, to move backward,
80
* can_seek must return true.
81
*/
82
INLINE
bool
MovieVideoCursor::
83
can_seek()
const
{
84
return
_can_seek;
85
}
86
87
/**
88
* Returns true if seek operations are constant time.
89
*/
90
INLINE
bool
MovieVideoCursor::
91
can_seek_fast()
const
{
92
return
_can_seek_fast;
93
}
94
95
/**
96
* Returns true if the video has aborted prematurely. For example, this could
97
* occur if the Movie was actually an internet TV station, and the connection
98
* was lost. Reaching the normal end of the video does not constitute an
99
* 'abort' condition.
100
*/
101
INLINE
bool
MovieVideoCursor::
102
aborted()
const
{
103
return
_aborted;
104
}
105
106
/**
107
* Returns true if the video frames are being "pushed" at us by something that
108
* operates at its own speed - for example, a webcam. In this case, the
109
* frames come when they're ready to come. Attempting to read too soon will
110
* produce nothing, reading too late will cause frames to be dropped. In this
111
* case, the ready flag can be used to determine whether or not a frame is
112
* ready for reading.
113
*
114
* When streaming, you should still pay attention to last_start, but the value
115
* of next_start is only a guess.
116
*/
117
INLINE
bool
MovieVideoCursor::
118
streaming()
const
{
119
return
_streaming;
120
}
121
122
/**
123
* Returns true if the cursor is a streaming source, and if a video frame is
124
* ready to be read. For non- streaming sources, this is always false.
125
*/
126
INLINE
bool
MovieVideoCursor::
127
ready()
const
{
128
return
_ready;
129
}
MovieVideo
A MovieVideo is actually any source that provides a sequence of video frames.
Definition:
movieVideo.h:38
Generated on Mon Sep 14 2020 15:06:57 for Panda3D by
1.8.20