<?xml version="1.0" encoding="UTF-8" ?>
<class name="VideoStreamPlayback" inherits="Resource" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Internal class used by [VideoStream] to manage playback state when played from a [VideoStreamPlayer].
</brief_description>
<description>
This class is intended to be overridden by video decoder extensions with custom implementations of [VideoStream].
</description>
<tutorials>
</tutorials>
<methods>
<method name="_get_channels" qualifiers="virtual const">
<return type="int" />
<description>
Returns the number of audio channels.
</description>
</method>
<method name="_get_length" qualifiers="virtual const">
<return type="float" />
<description>
Returns the video duration in seconds, if known, or 0 if unknown.
</description>
</method>
<method name="_get_mix_rate" qualifiers="virtual const">
<return type="int" />
<description>
Returns the audio sample rate used for mixing.
</description>
</method>
<method name="_get_playback_position" qualifiers="virtual const">
<return type="float" />
<description>
Return the current playback timestamp. Called in response to the [member VideoStreamPlayer.stream_position] getter.
</description>
</method>
<method name="_get_texture" qualifiers="virtual const">
<return type="Texture2D" />
<description>
Allocates a [Texture2D] in which decoded video frames will be drawn.
</description>
</method>
<method name="_is_paused" qualifiers="virtual const">
<return type="bool" />
<description>
Returns the paused status, as set by [method _set_paused].
</description>
</method>
<method name="_is_playing" qualifiers="virtual const">
<return type="bool" />
<description>
Returns the playback state, as determined by calls to [method _play] and [method _stop].
</description>
</method>
<method name="_play" qualifiers="virtual">
<return type="void" />
<description>
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.
</description>
</method>
<method name="_seek" qualifiers="virtual">
<return type="void" />
<param index="0" name="time" type="float" />
<description>
Seeks to [param time] seconds. Called in response to the [member VideoStreamPlayer.stream_position] setter.
</description>
</method>
<method name="_set_audio_track" qualifiers="virtual">
<return type="void" />
<param index="0" name="idx" type="int" />
<description>
Select the audio track [param idx]. Called when playback starts, and in response to the [member VideoStreamPlayer.audio_track] setter.
</description>
</method>
<method name="_set_paused" qualifiers="virtual">
<return type="void" />
<param index="0" name="paused" type="bool" />
<description>
Set the paused status of video playback. [method _is_paused] must return [param paused]. Called in response to the [member VideoStreamPlayer.paused] setter.
</description>
</method>
<method name="_stop" qualifiers="virtual">
<return type="void" />
<description>
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.
</description>
</method>
<method name="_update" qualifiers="virtual">
<return type="void" />
<param index="0" name="delta" type="float" />
<description>
Ticks video playback for [param delta] seconds. Called every frame as long as [method _is_paused] and [method _is_playing] return true.
</description>
</method>
<method name="mix_audio">
<return type="int" />
<param index="0" name="num_frames" type="int" />
<param index="1" name="buffer" type="PackedFloat32Array" default="PackedFloat32Array()" />
<param index="2" name="offset" type="int" default="0" />
<description>
Render [param num_frames] audio frames (of [method _get_channels] floats each) from [param buffer], starting from index [param offset] in the array. Returns the number of audio frames rendered, or -1 on error.
</description>
</method>
</methods>
</class>