wppaste
WordPress

Parser

Source
wp-includes/class-avif-info.php:315

Compatibility

WordPress
core
  • 6.7.7
  • 6.8.8
  • 6.9.7
  • 7.0.4
  • 7.1.0

Present in every tracked release (6.7.7 to 7.1.0).

Properties · 4

$handleprivate
$num_parsed_boxesprivate
$data_was_skippedprivate
$featurespublic

Methods · 7

Source code

class Parser {  private $handle; // Input stream.  private $num_parsed_boxes = 0;  private $data_was_skipped = false;  public $features;   function __construct( $handle ) {    $this->handle   = $handle;    $this->features = new Features();  }   /**   * Parses an "ipco" box.   *   * "ispe" is used for width and height, "pixi" and "av1C" are used for bit depth   * and number of channels, and "auxC" is used for alpha.   *   * @param stream  $handle              The resource the box will be parsed from.   * @param int     $num_remaining_bytes The number of bytes that should be available from the resource.   * @return Status                      FOUND on success or an error on failure.   */  private function parse_ipco( $num_remaining_bytes ) {    $box_index = 1; // 1-based index. Used for iterating over properties.    do {      $box    = new Box();      $status = $box->parse( $this->handle, $this->num_parsed_boxes, $num_remaining_bytes );      if ( $status != FOUND ) {        return $status;      }       if ( $box->type == 'ispe' ) {        // See ISO/IEC 23008-12:2017(E) 6.5.3.2        if ( $box->content_size < 8 ) {          return INVALID;        }        if ( !( $data = read( $this->handle, 8 ) ) ) {          return TRUNCATED;        }        $width  = read_big_endian( substr( $data, 0, 4 ), 4 );        $height = read_big_endian( substr( $data, 4, 4 ), 4 );        if ( $width == 0 || $height == 0 ) {          return INVALID;        }        if ( count( $this->features->dim_props ) <= MAX_FEATURES &&             $box_index <= MAX_VALUE ) {          $dim_prop_count = count( $this->features->dim_props );          $this->features->dim_props[$dim_prop_count]                 = new Dim_Prop();          $this->features->dim_props[$dim_prop_count]->property_index = $box_index;          $this->features->dim_props[$dim_prop_count]->width          = $width;          $this->features->dim_props[$dim_prop_count]->height         = $height;        } else {          $this->data_was_skipped = true;        }        if ( !skip( $this->handle, $box->content_size - 8 ) ) {          return TRUNCATED;        }      } else if ( $box->type == 'pixi' ) {        // See ISO/IEC 23008-12:2017(E) 6.5.6.2        if ( $box->content_size < 1 ) {          return INVALID;        }        if ( !( $data = read( $this->handle, 1 ) ) ) {          return TRUNCATED;        }        $num_channels = read_big_endian( $data, 1 );        if ( $num_channels < 1 ) {          return INVALID;        }        if ( $box->content_size < 1 + $num_channels ) {          return INVALID;        }        if ( !( $data = read( $this->handle, 1 ) ) ) {          return TRUNCATED;        }        $bit_depth = read_big_endian( $data, 1 );        if ( $bit_depth < 1 ) {          return INVALID;        }        for ( $i = 1; $i < $num_channels; ++$i ) {          if ( !( $data = read( $this->handle, 1 ) ) ) {

Changelog

Unchanged from 6.7.7 through 7.1.0.

  1. 6.7.7
  2. 6.8.8
  3. 6.9.7
  4. 7.0.4
  5. 7.1.0

Signature, return type and hooks compared across 5 parsed releases.

About this page

Parsed data
Generated from the wordpress-develop 6.7.7 tag, from src/wp-includes/class-avif-info.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.
Corrections
Something wrong on this page? Report it and it gets fixed in the next regeneration.