sig
  type video_flag =
      SWSURFACE
    | HWSURFACE
    | ANYFORMAT
    | HWPALETTE
    | DOUBLEBUF
    | FULLSCREEN
    | HWACCEL
    | SRCCOLORKEY
    | RLEACCEL
    | SRCALPHA
    | SRCCLIPPING
    | OPENGL
    | RESIZABLE
    | NOFRAME
  type surface
  val surface_pixels : Sdl.Video.surface -> Sdl.byte_array
  val surface_width : Sdl.Video.surface -> int
  val surface_height : Sdl.Video.surface -> int
  val surface_flags : Sdl.Video.surface -> Sdl.Video.video_flag list
  val surface_bpp : Sdl.Video.surface -> int
  val surface_rmask : Sdl.Video.surface -> int
  val surface_gmask : Sdl.Video.surface -> int
  val surface_bmask : Sdl.Video.surface -> int
  val surface_amask : Sdl.Video.surface -> int
  val free_surface : Sdl.Video.surface -> unit
  val must_lock : Sdl.Video.surface -> bool
  val lock_surface : Sdl.Video.surface -> unit
  val unlock_surface : Sdl.Video.surface -> unit
  val video_mode_ok : int -> int -> int -> Sdl.Video.video_flag list -> bool
  val set_video_mode :
    int -> int -> int -> Sdl.Video.video_flag list -> Sdl.Video.surface
  val create_rgb_surface :
    Sdl.Video.video_flag list -> int -> int -> int -> Sdl.Video.surface
  val load_bmp : string -> Sdl.Video.surface
  val save_bmp : Sdl.Video.surface -> string -> unit
  val set_color_key :
    Sdl.Video.surface -> Sdl.Video.video_flag list -> int32 -> unit
  val set_alpha :
    Sdl.Video.surface -> Sdl.Video.video_flag list -> int -> unit
  val set_clipping : Sdl.Video.surface -> int -> int -> int -> int -> unit
  val disable_clipping : Sdl.Video.surface -> unit
  val display_format : Sdl.Video.surface -> Sdl.Video.surface
  val get_rgb : Sdl.Video.surface -> int32 -> int * int * int
  val get_rgba : Sdl.Video.surface -> int32 -> int * int * int * int
  val map_rgb : Sdl.Video.surface -> int -> int -> int -> int32
  val map_rgba : Sdl.Video.surface -> int -> int -> int -> int -> int32
  type rect = {
    mutable rect_x : int;
    mutable rect_y : int;
    mutable rect_w : int;
    mutable rect_h : int;
  }
  val fill_surface : Sdl.Video.surface -> int32 -> unit
  val fill_rect : Sdl.Video.surface -> Sdl.Video.rect -> int32 -> unit
  val update_surface : Sdl.Video.surface -> unit
  val update_rect : Sdl.Video.surface -> int -> int -> int -> int -> unit
  val update_rects : Sdl.Video.surface -> Sdl.Video.rect array -> unit
  val flip : Sdl.Video.surface -> unit
  val blit_surface :
    Sdl.Video.surface ->
    Sdl.Video.rect option ->
    Sdl.Video.surface -> Sdl.Video.rect option -> unit
  type color = { red : int; green : int; blue : int; }
  val set_colors :
    Sdl.Video.surface -> Sdl.Video.color array -> int -> int -> bool
  val show_cursor : bool -> unit
  val warp_mouse : int -> int -> unit
  val string_of_pixels : Sdl.Video.surface -> string
end