Panda3D
|
A MovieVideo is actually any source that provides a sequence of video frames. More...
Public Member Functions | |
MovieVideoCursor (MovieVideo src) | |
This constructor returns a null video stream --- a stream of plain blue and white frames that last one second each. | |
bool | aborted () |
Returns true if the video has aborted prematurely. | |
bool | canSeek () |
Returns true if the movie can seek. | |
bool | canSeekFast () |
Returns true if seek operations are constant time. | |
string | encodeToBamStream () |
Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a string string. | |
bool | encodeToBamStream (basic_stringchar data, BamWriter writer) |
Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string. | |
bool | encodeToBamStream (basic_stringchar data) |
Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string. | |
fetchIntoBitbucket (double time) | |
Discards the next video frame. | |
fetchIntoTexture (double time, Texture t, int page) | |
Reads the specified video frame into the specified texture. | |
fetchIntoTextureAlpha (double time, Texture t, int page, int alpha_src) | |
Reads the specified video frame into the alpha channel of the supplied texture. | |
fetchIntoTextureRgb (double time, Texture t, int page) | |
Reads the specified video frame into the RGB channels of the supplied texture. | |
UpdateSeq | getBamModified () |
Returns the current bam_modified counter. | |
int | getNumComponents () |
Returns 4 if the movie has an alpha channel, 3 otherwise. | |
int | getRefCount () |
Returns the current reference count. | |
MovieVideo | getSource () |
Get the MovieVideo which this cursor references. | |
TypeHandle | getType () |
int | getTypeIndex () |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type. | |
bool | isExactType (TypeHandle handle) |
Returns true if the current object is the indicated type exactly. | |
bool | isOfType (TypeHandle handle) |
Returns true if the current object is or derives from the indicated type. | |
double | lastStart () |
Returns the start time of the last frame you read. | |
double | length () |
Returns the length of the movie. | |
markBamModified () | |
Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams. | |
double | nextStart () |
Returns the start time of the next frame you can read. | |
bool | ready () |
Returns true if the cursor is a streaming source, and if a video frame is ready to be read. | |
PyObject | reduce (PyObject self) |
This special Python method is implement to provide support for the pickle module. | |
PyObject | reducePersist (PyObject self, PyObject pickler) |
This special Python method is implement to provide support for the pickle module. | |
ref () | |
Explicitly increments the reference count. | |
setupTexture (Texture tex) | |
Set up the specified Texture object to contain content from this movie. | |
int | sizeX () |
Get the horizontal size of the movie. | |
int | sizeY () |
Get the vertical size of the movie. | |
bool | streaming () |
Returns true if the video frames are being "pushed" at us by something that operates at its own speed - for example, a webcam. | |
bool | testRefCountIntegrity () |
Does some easy checks to make sure that the reference count isn't completely bogus. | |
bool | testRefCountNonzero () |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus. | |
bool | unref () |
Explicitly decrements the reference count. | |
Static Public Member Functions | |
static TypedWritableReferenceCount | decodeFromBamStream (string data, BamReader reader) |
Reads the string created by a previous call to encode_to_bam_stream(), and extracts and returns the single object on that string. | |
static TypedWritableReferenceCount | decodeFromBamStream (string data) |
Reads the string created by a previous call to encode_to_bam_stream(), and extracts and returns the single object on that string. | |
static TypeHandle | getClassType () |
A MovieVideo is actually any source that provides a sequence of video frames.
That could include an AVI file, a digital camera, or an internet TV station. A MovieVideoCursor is a handle that lets you read data sequentially from a MovieVideo.
Thread safety: each individual MovieVideoCursor must be owned and accessed by a single thread. It is OK for two different threads to open the same file at the same time, as long as they use separate MovieVideoCursor objects.
MovieVideoCursor | ( | MovieVideo | src | ) |
This constructor returns a null video stream --- a stream of plain blue and white frames that last one second each.
To get more interesting video, you need to construct a subclass of this class.
bool aborted | ( | ) |
Returns true if the video has aborted prematurely.
For example, this could occur if the Movie was actually an internet TV station, and the connection was lost. Reaching the normal end of the video does not constitute an 'abort' condition.
bool canSeek | ( | ) |
Returns true if the movie can seek.
If this is true, seeking is still not guaranteed to be fast: for some movies, seeking is implemented by rewinding to the beginning and then fast-forwarding to the desired location. Even if the movie cannot seek, the fetch methods can still advance to an arbitrary location by reading frames and discarding them. However, to move backward, can_seek must return true.
bool canSeekFast | ( | ) |
Returns true if seek operations are constant time.
static TypedWritableReferenceCount decodeFromBamStream | ( | string | data, |
BamReader | reader | ||
) | [static, inherited] |
Reads the string created by a previous call to encode_to_bam_stream(), and extracts and returns the single object on that string.
Returns NULL on error.
This method is intended to replace decode_raw_from_bam_stream() when you know the stream in question returns an object of type TypedWritableReferenceCount, allowing for easier reference count management. Note that the caller is still responsible for maintaining the reference count on the return value.
static TypedWritableReferenceCount decodeFromBamStream | ( | string | data | ) | [static, inherited] |
Reads the string created by a previous call to encode_to_bam_stream(), and extracts and returns the single object on that string.
Returns NULL on error.
This method is intended to replace decode_raw_from_bam_stream() when you know the stream in question returns an object of type TypedWritableReferenceCount, allowing for easier reference count management. Note that the caller is still responsible for maintaining the reference count on the return value.
string encodeToBamStream | ( | ) | [inherited] |
Converts the TypedWritable object into a single stream of data using a BamWriter, and returns that data as a string string.
Returns empty string on failure.
This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same BamWriter to serialize all of them together.
bool encodeToBamStream | ( | basic_stringchar | data, |
BamWriter | writer | ||
) | [inherited] |
Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.
Returns true on success, false on failure.
This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same BamWriter to serialize all of them together.
bool encodeToBamStream | ( | basic_stringchar | data | ) | [inherited] |
Converts the TypedWritable object into a single stream of data using a BamWriter, and stores that data in the indicated string.
Returns true on success, false on failure.
This is a convenience method particularly useful for cases when you are only serializing a single object. If you have many objects to process, it is more efficient to use the same BamWriter to serialize all of them together.
fetchIntoBitbucket | ( | double | time | ) |
Discards the next video frame.
Still sets last_start and next_start.
See fetch_into_buffer for more details.
Reads the specified video frame into the specified texture.
See fetch_into_buffer for more details.
Reads the specified video frame into the alpha channel of the supplied texture.
The RGB channels of the texture are not touched.
See fetch_into_buffer for more details.
Reads the specified video frame into the RGB channels of the supplied texture.
The alpha channel of the texture is not touched.
See fetch_into_buffer for more details.
UpdateSeq getBamModified | ( | ) | [inherited] |
Returns the current bam_modified counter.
This counter is normally incremented automatically whenever the object is modified.
static TypeHandle getClassType | ( | ) | [static] |
Reimplemented from TypedWritableReferenceCount.
Reimplemented in InkblotVideoCursor, and FfmpegVideoCursor.
int getNumComponents | ( | ) |
Returns 4 if the movie has an alpha channel, 3 otherwise.
int getRefCount | ( | ) | [inherited] |
Returns the current reference count.
MovieVideo getSource | ( | ) |
Get the MovieVideo which this cursor references.
TypeHandle getType | ( | ) | [inherited] |
Reimplemented in AnimChannelBase.
int getTypeIndex | ( | ) | [inherited] |
Returns the internal index number associated with this object's TypeHandle, a unique number for each different type.
This is equivalent to get_type().get_index().
bool isExactType | ( | TypeHandle | handle | ) | [inherited] |
Returns true if the current object is the indicated type exactly.
bool isOfType | ( | TypeHandle | handle | ) | [inherited] |
Returns true if the current object is or derives from the indicated type.
double lastStart | ( | ) |
Returns the start time of the last frame you read.
MovieVideoCursor streams have variable frame rates. Each frame will specify how long it is to be displayed. These lengths may not be equal from frame to frame.
double length | ( | ) |
Returns the length of the movie.
Some kinds of Movie, such as internet TV station, might not have a predictable length. In that case, the length will be set to a very large number: 1.0E10. If the internet TV station goes offline, the video or audio stream will set its abort flag. Reaching the end of the movie (ie, the specified length) normally does not cause the abort flag to be set.
The video and audio streams produced by get_video and get_audio are always of unlimited duration - you can always read another video frame or another audio sample. This is true even if the specified length is reached, or an abort is flagged. If either stream runs out of data, it will synthesize blank video frames and silent audio samples as necessary to satisfy read requests.
Some AVI files have incorrect length values encoded into them - usually, they're a second or two long or short. When playing such an AVI using the Movie class, you may see a slightly truncated video, or a slightly elongated video (padded with black frames). There are utilities out there to fix the length values in AVI files.
markBamModified | ( | ) | [inherited] |
Increments the bam_modified counter, so that this object will be invalidated and retransmitted on any open bam streams.
This should normally not need to be called by user code; it should be called internally when the object has been changed in a way that legitimately requires its retransmission to any connected clients.
double nextStart | ( | ) |
Returns the start time of the next frame you can read.
MovieVideoCursor streams have variable frame rates. Each frame will specify how long it is to be displayed. These lengths may not be equal from frame to frame.
bool ready | ( | ) |
Returns true if the cursor is a streaming source, and if a video frame is ready to be read.
For non- streaming sources, this is always false.
PyObject reduce | ( | PyObject | self | ) | [inherited] |
This special Python method is implement to provide support for the pickle module.
This hooks into the native pickle and cPickle modules, but it cannot properly handle self-referential BAM objects.
PyObject reducePersist | ( | PyObject | self, |
PyObject | pickler | ||
) | [inherited] |
This special Python method is implement to provide support for the pickle module.
This is similar to __reduce__, but it provides additional support for the missing persistent-state object needed to properly support self-referential BAM objects written to the pickle stream. This hooks into the pickle and cPickle modules implemented in direct/src/stdpy.
ref | ( | ) | [inherited] |
Explicitly increments the reference count.
User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.
This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.
setupTexture | ( | Texture | tex | ) |
Set up the specified Texture object to contain content from this movie.
This should be called once, not every frame.
int sizeX | ( | ) |
Get the horizontal size of the movie.
int sizeY | ( | ) |
Get the vertical size of the movie.
bool streaming | ( | ) |
Returns true if the video frames are being "pushed" at us by something that operates at its own speed - for example, a webcam.
In this case, the frames come when they're ready to come. Attempting to read too soon will produce nothing, reading too late will cause frames to be dropped. In this case, the ready flag can be used to determine whether or not a frame is ready for reading.
When streaming, you should still pay attention to last_start, but the value of next_start is only a guess.
bool testRefCountIntegrity | ( | ) | [inherited] |
Does some easy checks to make sure that the reference count isn't completely bogus.
Returns true if ok, false otherwise.
Reimplemented in NodeReferenceCount, CachedTypedWritableReferenceCount, and NodeCachedReferenceCount.
bool testRefCountNonzero | ( | ) | [inherited] |
Does some easy checks to make sure that the reference count isn't zero, or completely bogus.
Returns true if ok, false otherwise.
bool unref | ( | ) | [inherited] |
Explicitly decrements the reference count.
Note that the object will not be implicitly deleted by unref() simply because the reference count drops to zero. (Having a member function delete itself is problematic.) However, see the helper function unref_delete().
User code should avoid using ref() and unref() directly, which can result in missed reference counts. Instead, let a PointerTo object manage the reference counting automatically.
This function is const, even though it changes the object, because generally fiddling with an object's reference count isn't considered part of fiddling with the object. An object might be const in other ways, but we still need to accurately count the number of references to it.
The return value is true if the new reference count is nonzero, false if it is zero.
Reimplemented in GeomVertexArrayFormat, and GeomVertexFormat.