Internal class used by [VideoStream] to manage playback state when played from a [VideoStreamPlayer]. This class is intended to be overridden by video decoder extensions with custom implementations of [VideoStream]. Returns the number of audio channels. Returns the video duration in seconds, if known, or 0 if unknown. Returns the audio sample rate used for mixing. Return the current playback timestamp. Called in response to the [member VideoStreamPlayer.stream_position] getter. Allocates a [Texture2D] in which decoded video frames will be drawn. Returns the paused status, as set by [method _set_paused]. Returns the playback state, as determined by calls to [method _play] and [method _stop]. Called in response to [member VideoStreamPlayer.autoplay] or [method VideoStreamPlayer.play]. Note that manual playback may also invoke [method _stop] multiple times before this method is called. [method _is_playing] should return true once playing. Seeks to [code]time[/code] seconds. Called in response to the [member VideoStreamPlayer.stream_position] setter. Select the audio track [code]idx[/code]. Called when playback starts, and in response to the [member VideoStreamPlayer.audio_track] setter. Set the paused status of video playback. [method _is_paused] must return [code]paused[/code]. Called in response to the [member VideoStreamPlayer.paused] setter. Stops playback. May be called multiple times before [method _play], or in response to [method VideoStreamPlayer.stop]. [method _is_playing] should return false once stopped. Ticks video playback for [code]delta[/code] seconds. Called every frame as long as [method _is_paused] and [method _is_playing] return true. Render [code]num_frames[/code] audio frames (of [method _get_channels] floats each) from [code]buffer[/code], starting from index [code]offset[/code] in the array. Returns the number of audio frames rendered, or -1 on error.