oracle native 下载,Native Window

Native Window

#include

ANativeWindow represents the producer end of an image queue.

Summary

It is the C counterpart of the android.view.Surface object in Java, and can be converted both ways. Depending on the consumer, images submitted to ANativeWindow can be shown on the display or sent to other consumers, such as video encoders.

Enumerations

ANativeWindowTransform{

ANATIVEWINDOW_TRANSFORM_IDENTITY = 0x00,

ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL = 0x01,

ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL = 0x02,

ANATIVEWINDOW_TRANSFORM_ROTATE_90 = 0x04,

ANATIVEWINDOW_TRANSFORM_ROTATE_180 = ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL |

ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL,

ANATIVEWINDOW_TRANSFORM_ROTATE_270 = ANATIVEWINDOW_TRANSFORM_ROTATE_180 |

ANATIVEWINDOW_TRANSFORM_ROTATE_90

}

enum

Transforms that can be applied to buffers as they are displayed to a window.

ANativeWindow_LegacyFormat{

WINDOW_FORMAT_RGBA_8888 = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM,

WINDOW_FORMAT_RGBX_8888 = AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM,

WINDOW_FORMAT_RGB_565 = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM

}

enum

Legacy window pixel format names, kept for backwards compatibility.

Typedefs

typedef

Opaque type that provides access to a native window.

typedef

Struct that represents a windows buffer.

Functions

void

Acquire a reference on the given ANativeWindow object.

int32_t

Get the dataspace of the buffers in window.

int32_t

Return the current pixel format (AHARDWAREBUFFER_FORMAT_*) of the window surface.

int32_t

Return the current height in pixels of the window surface.

int32_t

Return the current width in pixels of the window surface.

int32_t

Lock the window's next drawing surface for writing.

void

Remove a reference that was previously acquired with ANativeWindow_acquire().

int32_t

All buffers queued after this call will be associated with the dataSpace parameter specified.

ANativeWindow_setBuffersGeometry(ANativeWindow *window, int32_t width, int32_t height, int32_t format)

int32_t

Change the format and size of the window buffers.

int32_t

Set a transform that will be applied to future buffers posted to the window.

ANativeWindow_setFrameRate(ANativeWindow *window, float frameRate, int8_t compatibility)

int32_t

Same as ANativeWindow_setFrameRateWithSeamlessness(window, frameRate, compatibility, true).

ANativeWindow_setFrameRateWithSeamlessness(ANativeWindow *window, float frameRate, int8_t compatibility, bool shouldBeSeamless)

int32_t

Sets the intended frame rate for this window.

void

Provides a hint to the window that buffers should be preallocated ahead of time.

int32_t

Unlock the window's drawing surface after previously locking it, posting the new buffer to the display.

Structs

Struct that represents a windows buffer.

Enumerations

ANativeWindowTransform

ANativeWindowTransform

Transforms that can be applied to buffers as they are displayed to a window.

Supported transforms are any combination of horizontal mirror, vertical mirror, and clockwise 90 degree rotation, in that order. Rotations of 180 and 270 degrees are made up of those basic transforms.

Properties

ANATIVEWINDOW_TRANSFORM_IDENTITY

ANATIVEWINDOW_TRANSFORM_MIRROR_HORIZONTAL

ANATIVEWINDOW_TRANSFORM_MIRROR_VERTICAL

ANATIVEWINDOW_TRANSFORM_ROTATE_180

ANATIVEWINDOW_TRANSFORM_ROTATE_270

ANATIVEWINDOW_TRANSFORM_ROTATE_90

ANativeWindow_FrameRateCompatibility

ANativeWindow_FrameRateCompatibility

Compatibility value for ANativeWindow_setFrameRate.

Properties

ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT

There are no inherent restrictions on the frame rate of this window.

When the system selects a frame rate other than what the app requested, the app will be able to run at the system frame rate without requiring pull down. This value should be used when displaying game content, UIs, and anything that isn't video.

ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_FIXED_SOURCE

This window is being used to display content with an inherently fixed frame rate, e.g. a video that has a specific frame rate.

When the system selects a frame rate other than what the app requested, the app will need to do pull down or use some other technique to adapt to the system's frame rate. The user experience is likely to be worse (e.g. more frame stuttering) than it would be if the system had chosen the app's requested frame rate. This value should be used for video content.

ANativeWindow_LegacyFormat

ANativeWindow_LegacyFormat

Legacy window pixel format names, kept for backwards compatibility.

New code and APIs should use AHARDWAREBUFFER_FORMAT_*.

Properties

WINDOW_FORMAT_RGBA_8888

Red: 8 bits, Green: 8 bits, Blue: 8 bits, Alpha: 8 bits.

WINDOW_FORMAT_RGBX_8888

Red: 8 bits, Green: 8 bits, Blue: 8 bits, Unused: 8 bits.

WINDOW_FORMAT_RGB_565

Red: 5 bits, Green: 6 bits, Blue: 5 bits.

Typedefs

ANativeWindow

struct ANativeWindow ANativeWindow

Opaque type that provides access to a native window.

A pointer can be obtained using ANativeWindow_fromSurface().

ANativeWindow_Buffer

struct ANativeWindow_Buffer ANativeWindow_Buffer

Struct that represents a windows buffer.

A pointer can be obtained using ANativeWindow_lock().

Functions

ANativeWindow_acquire

void ANativeWindow_acquire(

ANativeWindow *window

)

Acquire a reference on the given ANativeWindow object.

This prevents the object from being deleted until the reference is removed.

ANativeWindow_getBuffersDataSpace

int32_t ANativeWindow_getBuffersDataSpace(

ANativeWindow *window

)

Get the dataspace of the buffers in window.

Available since API level 28.

Details

Returns

the dataspace of buffers in window, ADATASPACE_UNKNOWN is returned if dataspace is unknown, or -EINVAL if window is invalid.

ANativeWindow_getFormat

int32_t ANativeWindow_getFormat(

ANativeWindow *window

)

Return the current pixel format (AHARDWAREBUFFER_FORMAT_*) of the window surface.

Details

Returns

a negative value on error.

ANativeWindow_getHeight

int32_t ANativeWindow_getHeight(

ANativeWindow *window

)

Return the current height in pixels of the window surface.

Details

Returns

a negative value on error.

ANativeWindow_getWidth

int32_t ANativeWindow_getWidth(

ANativeWindow *window

)

Return the current width in pixels of the window surface.

Details

Returns

negative value on error.

ANativeWindow_lock

int32_t ANativeWindow_lock(

ANativeWindow *window,

ANativeWindow_Buffer *outBuffer,

ARect *inOutDirtyBounds

)

Lock the window's next drawing surface for writing.

inOutDirtyBounds is used as an in/out parameter, upon entering the function, it contains the dirty region, that is, the region the caller intends to redraw. When the function returns, inOutDirtyBounds is updated with the actual area the caller needs to redraw this region is often extended by ANativeWindow_lock.

Details

Returns

0 for success, or a negative value on error.

ANativeWindow_release

void ANativeWindow_release(

ANativeWindow *window

)

Remove a reference that was previously acquired with ANativeWindow_acquire().

ANativeWindow_setBuffersDataSpace

int32_t ANativeWindow_setBuffersDataSpace(

ANativeWindow *window,

int32_t dataSpace

)

All buffers queued after this call will be associated with the dataSpace parameter specified.

dataSpace specifies additional information about the buffer. For example, it can be used to convey the color space of the image data in the buffer, or it can be used to indicate that the buffers contain depth measurement data instead of color images. The default dataSpace is 0, ADATASPACE_UNKNOWN, unless it has been overridden by the producer.

Available since API level 28.

Details

Parameters

dataSpace

data space of all buffers queued after this call.

Returns

0 for success, -EINVAL if window is invalid or the dataspace is not supported.

ANativeWindow_setBuffersGeometry

int32_t ANativeWindow_setBuffersGeometry(

ANativeWindow *window,

int32_t width,

int32_t height,

int32_t format

)

Change the format and size of the window buffers.

The width and height control the number of pixels in the buffers, not the dimensions of the window on screen. If these are different than the window's physical size, then its buffer will be scaled to match that size when compositing it to the screen. The width and height must be either both zero or both non-zero.

For all of these parameters, if 0 is supplied then the window's base value will come back in force.

Details

Parameters

width

width of the buffers in pixels.

height

height of the buffers in pixels.

format

one of the AHardwareBuffer_Format constants.

Returns

0 for success, or a negative value on error.

ANativeWindow_setBuffersTransform

int32_t ANativeWindow_setBuffersTransform(

ANativeWindow *window,

int32_t transform

)

Set a transform that will be applied to future buffers posted to the window.

Available since API level 26.

Details

Parameters

transform

Returns

0 for success, or -EINVAL if transform is invalid

ANativeWindow_setFrameRate

int32_t ANativeWindow_setFrameRate(

ANativeWindow *window,

float frameRate,

int8_t compatibility

)

Same as ANativeWindow_setFrameRateWithSeamlessness(window, frameRate, compatibility, true).

Available since API level 30.

ANativeWindow_setFrameRateWithSeamlessness

int32_t ANativeWindow_setFrameRateWithSeamlessness(

ANativeWindow *window,

float frameRate,

int8_t compatibility,

bool shouldBeSeamless

)

Sets the intended frame rate for this window.

On devices that are capable of running the display at different refresh rates, the system may choose a display refresh rate to better match this window's frame rate. Usage of this API won't introduce frame rate throttling, or affect other aspects of the application's frame production pipeline. However, because the system may change the display refresh rate, calls to this function may result in changes to Choreographer callback timings, and changes to the time interval at which the system releases buffers back to the application.

Note that this only has an effect for windows presented on the display. If this ANativeWindow is consumed by something other than the system compositor, e.g. a media codec, this call has no effect.

Available since API level 31.

Details

Parameters

frameRate

The intended frame rate of this window, in frames per second. 0 is a special value that indicates the app will accept the system's choice for the display frame rate, which is the default behavior if this function isn't called. The frameRate param does not need to be a valid refresh rate for this device's display - e.g., it's fine to pass 30fps to a device that can only run the display at 60fps.

compatibility

The frame rate compatibility of this window. The compatibility value may influence the system's choice of display refresh rate. See the ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_* values for more info.

shouldBeSeamless

Whether display refresh rate transitions should be seamless. A seamless transition is one that doesn't have any visual interruptions, such as a black screen for a second or two. True indicates that any frame rate changes caused by this request should be seamless. False indicates that non-seamless refresh rates are also acceptable.

Returns

0 for success, -EINVAL if the window, frame rate, or compatibility value are invalid.

ANativeWindow_tryAllocateBuffers

void ANativeWindow_tryAllocateBuffers(

ANativeWindow *window

)

Provides a hint to the window that buffers should be preallocated ahead of time.

Note that the window implementation is not guaranteed to preallocate any buffers, for instance if an implementation disallows allocation of new buffers, or if there is insufficient memory in the system to preallocate additional buffers

Available since API level 30.

ANativeWindow_unlockAndPost

int32_t ANativeWindow_unlockAndPost(

ANativeWindow *window

)

Unlock the window's drawing surface after previously locking it, posting the new buffer to the display.

Details

Returns

0 for success, or a negative value on error.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值