Struct ndk::surface_texture::SurfaceTexture
source · [−]pub struct SurfaceTexture { /* private fields */ }
api-level-28
only.Expand description
An opaque type to manage android.graphics.SurfaceTexture
from native code
Implementations
sourceimpl SurfaceTexture
impl SurfaceTexture
sourcepub unsafe fn from_ptr(ptr: NonNull<ASurfaceTexture>) -> Self
pub unsafe fn from_ptr(ptr: NonNull<ASurfaceTexture>) -> Self
sourcepub unsafe fn from_surface_texture(
env: *mut JNIEnv,
surface_texture: jobject
) -> Option<Self>
pub unsafe fn from_surface_texture(
env: *mut JNIEnv,
surface_texture: jobject
) -> Option<Self>
Get a reference to the native SurfaceTexture
from the corresponding Java object.
Safety
This function should be called with a healthy JVM pointer and with a non-null
android.graphics.SurfaceTexture
, which must be kept alive on the Java/Kotlin side.
The caller must keep a reference to the Java android.graphics.SurfaceTexture
during the
lifetime of the returned SurfaceTexture
. Failing to do so could result in the
SurfaceTexture
to stop functioning properly once the Java object gets finalized.
However, this will not result in program termination.
sourcepub fn ptr(&self) -> NonNull<ASurfaceTexture>
pub fn ptr(&self) -> NonNull<ASurfaceTexture>
Returns a pointer to the native ffi::ASurfaceTexture
.
sourcepub fn acquire_native_window(&self) -> Option<NativeWindow>
pub fn acquire_native_window(&self) -> Option<NativeWindow>
Returns a reference to a NativeWindow
(i.e. the Producer) for this SurfaceTexture
.
This is equivalent to Java’s:
Surface sur = new Surface(surfaceTexture);
sourcepub fn attach_to_gl_context(&self, tex_name: u32) -> Result<()>
pub fn attach_to_gl_context(&self, tex_name: u32) -> Result<()>
Attach the SurfaceTexture
to the OpenGL ES context that is current on the calling
thread.
A new OpenGL ES texture object is created and populated with the SurfaceTexture
image
frame that was current at the time of the last call to
detach_from_gl_context()
. This new texture is bound to
the GL_TEXTURE_EXTERNAL_OES
texture target.
This can be used to access the SurfaceTexture
image contents from multiple OpenGL ES
contexts. Note, however, that the image contents are only accessible from one OpenGL ES
context at a time.
sourcepub fn detach_from_gl_context(&self) -> Result<()>
pub fn detach_from_gl_context(&self) -> Result<()>
Detach the SurfaceTexture
from the OpenGL ES context that owns the OpenGL ES texture
object.
This call must be made with the OpenGL ES context current on the calling thread. The OpenGL
ES texture object will be deleted as a result of this call. After calling this method all
calls to update_tex_image()
will fail until a successful call
to attach_to_gl_context()
is made.
This can be used to access the SurfaceTexture
image contents from multiple OpenGL ES
contexts. Note, however, that the image contents are only accessible from one OpenGL ES
context at a time.
sourcepub fn transform_matrix(&self) -> [f32; 16]
pub fn transform_matrix(&self) -> [f32; 16]
Retrieve the 4x4 texture coordinate transform matrix associated with the texture image set
by the most recent call to update_tex_image()
.
This transform matrix maps 2D homogeneous texture coordinates of the form (s, t, 0, 1)
with s
and t
in the inclusive range [0, 1]
to the texture coordinate that should be
used to sample that location from the texture. Sampling the texture outside of the range of
this transform is undefined.
The matrix is stored in column-major order so that it may be passed directly to OpenGL ES
via the glLoadMatrixf()
or glUniformMatrix4fv()
functions.
sourcepub fn timestamp(&self) -> Duration
pub fn timestamp(&self) -> Duration
Retrieve the timestamp associated with the texture image set by the most recent call to
update_tex_image()
.
This timestamp is in nanoseconds, and is normally monotonically increasing. The timestamp
should be unaffected by time-of-day adjustments, and for a camera should be strictly
monotonic but for a MediaPlayer
may be reset when the position is set. The specific
meaning and zero point of the timestamp depends on the source providing images to the
SurfaceTexture
. Unless otherwise specified by the image source, timestamps cannot
generally be compared across SurfaceTexture
instances, or across multiple program
invocations. It is mostly useful for determining time offsets between subsequent frames.
For EGL/Vulkan producers, this timestamp is the desired present time set with the
EGL_ANDROID_presentation_time
or VK_GOOGLE_display_timing
extensions.
sourcepub fn update_tex_image(&self) -> Result<()>
pub fn update_tex_image(&self) -> Result<()>
Update the texture image to the most recent frame from the image stream.
This may only be called while the OpenGL ES context that owns the texture is current on the
calling thread. It will implicitly bind its texture to the GL_TEXTURE_EXTERNAL_OES
texture target.
Trait Implementations
sourceimpl Debug for SurfaceTexture
impl Debug for SurfaceTexture
sourceimpl Drop for SurfaceTexture
impl Drop for SurfaceTexture
sourceimpl Hash for SurfaceTexture
impl Hash for SurfaceTexture
sourceimpl Ord for SurfaceTexture
impl Ord for SurfaceTexture
sourceimpl PartialEq<SurfaceTexture> for SurfaceTexture
impl PartialEq<SurfaceTexture> for SurfaceTexture
sourcefn eq(&self, other: &SurfaceTexture) -> bool
fn eq(&self, other: &SurfaceTexture) -> bool
This method tests for self
and other
values to be equal, and is used
by ==
. Read more
sourcefn ne(&self, other: &SurfaceTexture) -> bool
fn ne(&self, other: &SurfaceTexture) -> bool
This method tests for !=
.
sourceimpl PartialOrd<SurfaceTexture> for SurfaceTexture
impl PartialOrd<SurfaceTexture> for SurfaceTexture
sourcefn partial_cmp(&self, other: &SurfaceTexture) -> Option<Ordering>
fn partial_cmp(&self, other: &SurfaceTexture) -> Option<Ordering>
This method returns an ordering between self
and other
values if one exists. Read more
1.0.0 · sourcefn lt(&self, other: &Rhs) -> bool
fn lt(&self, other: &Rhs) -> bool
This method tests less than (for self
and other
) and is used by the <
operator. Read more
1.0.0 · sourcefn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
This method tests less than or equal to (for self
and other
) and is used by the <=
operator. Read more
impl Eq for SurfaceTexture
impl Send for SurfaceTexture
impl StructuralEq for SurfaceTexture
impl StructuralPartialEq for SurfaceTexture
Auto Trait Implementations
impl RefUnwindSafe for SurfaceTexture
impl !Sync for SurfaceTexture
impl Unpin for SurfaceTexture
impl UnwindSafe for SurfaceTexture
Blanket Implementations
sourceimpl<T> BorrowMut<T> for T where
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
const: unstable · sourcefn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more