sig
  type scalar_type =
      [ `Float16
      | `Float32
      | `Float64
      | `Int16
      | `Int32
      | `Int64
      | `Int8
      | `UInt16
      | `UInt32
      | `UInt64
      | `UInt8 ]
  val scalar_type_byte_count : Gg.Raster.scalar_type -> int
  val pp_scalar_type : Format.formatter -> Gg.Raster.scalar_type -> unit
  type ('a, 'b) b_array = ('a, 'b, Bigarray.c_layout) Bigarray.Array1.t
  type buffer =
      [ `A_Float64 of float array
      | `B_Float16 of (int, Bigarray.int16_unsigned_elt) Gg.Raster.b_array
      | `B_Float32 of (float, Bigarray.float32_elt) Gg.Raster.b_array
      | `B_Float64 of (float, Bigarray.float64_elt) Gg.Raster.b_array
      | `B_Int16 of (int, Bigarray.int16_signed_elt) Gg.Raster.b_array
      | `B_Int32 of (int32, Bigarray.int32_elt) Gg.Raster.b_array
      | `B_Int64 of (int64, Bigarray.int64_elt) Gg.Raster.b_array
      | `B_Int8 of (int, Bigarray.int8_signed_elt) Gg.Raster.b_array
      | `B_UInt16 of (int, Bigarray.int16_unsigned_elt) Gg.Raster.b_array
      | `B_UInt32 of (int32, Bigarray.int32_elt) Gg.Raster.b_array
      | `B_UInt64 of (int64, Bigarray.int64_elt) Gg.Raster.b_array
      | `B_UInt8 of (int, Bigarray.int8_unsigned_elt) Gg.Raster.b_array
      | `S_UInt8 of string ]
  val buffer_scalar_type : Gg.Raster.buffer -> Gg.Raster.scalar_type
  val pp_buffer : Format.formatter -> Gg.Raster.buffer -> unit
  type sample_semantics =
      [ `Color of Gg.Color.profile * bool | `Other of string * int ]
  val rgb_l : Gg.Raster.sample_semantics
  val rgba_l : Gg.Raster.sample_semantics
  val gray_l : Gg.Raster.sample_semantics
  val graya_l : Gg.Raster.sample_semantics
  val pp_sample_semantics :
    Format.formatter -> Gg.Raster.sample_semantics -> unit
  type sample_pack =
      [ `FourCC of string * Gg.Raster.scalar_type option
      | `Other of string * Gg.Raster.scalar_type option
      | `PU8888 ]
  val pp_sample_pack : Format.formatter -> Gg.Raster.sample_pack -> unit
  type sample_format
  val sample_format_v :
    ?pack:Gg.Raster.sample_pack ->
    Gg.Raster.sample_semantics ->
    Gg.Raster.scalar_type -> Gg.Raster.sample_format
  val sf_semantics : Gg.Raster.sample_format -> Gg.Raster.sample_semantics
  val sf_scalar_type : Gg.Raster.sample_format -> Gg.Raster.scalar_type
  val sf_pack : Gg.Raster.sample_format -> Gg.Raster.sample_pack option
  val sf_dim : Gg.Raster.sample_format -> int
  val sf_scalar_count :
    ?first:int ->
    ?w_skip:int ->
    ?h_skip:int ->
    w:int -> ?h:int -> ?d:int -> Gg.Raster.sample_format -> int
  val pp_sample_format : Format.formatter -> Gg.Raster.sample_format -> unit
  type t = Gg.raster
  val v :
    ?res:Gg.v3 ->
    ?first:int ->
    ?w_skip:int ->
    ?h_skip:int ->
    w:int ->
    ?h:int ->
    ?d:int -> Gg.Raster.sample_format -> Gg.Raster.buffer -> Gg.Raster.t
  val res : Gg.Raster.t -> Gg.v3 option
  val first : Gg.Raster.t -> int
  val w_skip : Gg.Raster.t -> int
  val h_skip : Gg.Raster.t -> int
  val w : Gg.Raster.t -> int
  val h : Gg.Raster.t -> int
  val d : Gg.Raster.t -> int
  val sample_format : Gg.Raster.t -> Gg.Raster.sample_format
  val buffer : Gg.Raster.t -> Gg.Raster.buffer
  val dim : Gg.Raster.t -> int
  val size2 : Gg.Raster.t -> Gg.size2
  val size3 : Gg.Raster.t -> Gg.size3
  val sub :
    ?x:int ->
    ?y:int ->
    ?z:int -> ?w:int -> ?h:int -> ?d:int -> Gg.Raster.t -> Gg.Raster.t
  val pitches : Gg.Raster.t -> int * int * int
  val equal : Gg.Raster.t -> Gg.Raster.t -> bool
  val compare : Gg.Raster.t -> Gg.Raster.t -> int
  val to_string : Gg.Raster.t -> string
  val pp : Format.formatter -> Gg.Raster.t -> unit
end