Starboard Module Reference: image.h

API for hardware accelerated image decoding. This module allows for the client to feed in raw, encoded data to be decoded directly into an SbDecodeTarget. It also provides an interface for the client to query what combinations of encoded image formats and SbDecodeTargetFormats are supported or not.

All functions in this module are safe to call from any thread at any point in time.

SbImageIsDecodeSupported and SbImageDecode Example

SbDecodeTargetProvider* provider = GetProviderFromSomewhere();
void* data = GetCompressedJPEGFromSomewhere();
int data_size = GetCompressedJPEGSizeFromSomewhere();
const char* mime_type = "image/jpeg";
SbDecodeTargetFormat format = kSbDecodeTargetFormat1PlaneRGBA;

if (!SbImageIsDecodeSupported(mime_type, format)) {
  return;
}

SbDecodeTarget result_target = SbImageDecode(provider, data, data_size,
                                             mime_type, format);

Functions

SbImageDecode

Attempt to decode encoded mime_type image data data of size data_size into an SbDecodeTarget of SbDecodeFormatType format, possibly using SbDecodeTargetProvider provider, if it is non-null. Thus, four following scenarios regarding the provider may happen:

  1. The provider is required by the SbImageDecode implementation and no provider is given. The implementation should gracefully fail by immediately returning kSbDecodeTargetInvalid.

  2. The provider is required and is passed in. The implementation will proceed forward, using the SbDecodeTarget from the provider.

  3. The provider is not required and is passed in. The provider will NOT be called, and the implementation will proceed to decoding however it desires.

  4. The provider is not required and is not passed in. The implementation will proceed forward. The data pointer must not be NULL. The mime_type string must not be NULL. Thus, it is NOT safe for clients of this API to assume that the provider it passes in will be called. Finally, if the decode succeeds, a new SbDecodeTarget will be allocated. If mime_type image decoding for the requested format is not supported or the decode fails, kSbDecodeTargetInvalid will be returned, with any intermediate allocations being cleaned up in the implementation.

Declaration

SbDecodeTarget SbImageDecode(SbDecodeTargetGraphicsContextProvider *context_provider, void *data, int data_size, const char *mime_type, SbDecodeTargetFormat format)

SbImageIsDecodeSupported

Whether the current platform supports hardware accelerated decoding an image of mime type mime_type into SbDecodeTargetFormat format. The mime_type must not be NULL. The result of this function must not change over the course of the program, which means that the results of this function may be cached indefinitely.

Declaration

bool SbImageIsDecodeSupported(const char *mime_type, SbDecodeTargetFormat format)