dav1d/wrapper

    Dark Mode
Search:
Group by:

Low-level C-wrapper for dav1d av1 decoder generated with nimterop

Everything is imported, "dav1d" prefix is removed

Types

va_list {...}{.importc, header: "<stdarg.h>".} = object
ObuType = distinct cint
TxfmMode = distinct cint
FilterMode = distinct cint
AdaptiveBoolean = distinct cint
RestorationType = distinct cint
WarpedMotionType = distinct cint
PixelLayout = distinct cint
FrameType = distinct cint
ColorPrimaries = distinct cint
TransferCharacteristics = distinct cint
MatrixCoefficients = distinct cint
ChromaSamplePosition = distinct cint
UserData {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
           importc: "struct Dav1dUserData".} = object
  data*: ptr uint8           ## ```
                             ##   /< data pointer
                             ## ```
  `ref`*: ptr Ref            ## ```
                             ##   /< allocation origin
                             ## ```
  
  A reference-counted object wrapper for a user-configurable pointer.
DataProps {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
            importc: "struct Dav1dDataProps".} = object
  timestamp*: int64 ## ```
                    ##   /< container timestamp of input data, INT64_MIN if unknown (default)
                    ## ```
  duration*: int64 ## ```
                   ##   /< container duration of input data, 0 if unknown (default)
                   ## ```
  offset*: int64 ## ```
                 ##   /< stream offset of input data, -1 if unknown (default)
                 ## ```
  size*: uint                ## ```
                             ##   /< packet size, default Dav1dData.sz
                             ## ```
  user_data*: UserData       ## ```
                             ##   /< user-configurable data, default NULL members
                             ## ```
  
  Input packet metadata which are copied from the input data used to
   decode each image into the matching structure of the output image
   returned back to the user. Since these are metadata fields, they
   can be used for other purposes than the documented ones, they will
   still be passed from input data to output picture without being
   used internally.
Type_dav1dh1 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh1".} = object
  alpha*: int16
  beta*: int16
  gamma*: int16
  delta*: int16
Union_dav1dh1 {...}{.union, bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                importc: "union Union_dav1dh1".} = object
  p*: Type_dav1dh1
  abcd*: array[4, int16]
WarpedMotionParams {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                     importc: "struct Dav1dWarpedMotionParams".} = object
  `type`*: WarpedMotionType
  matrix*: array[6, int32]
  u*: Union_dav1dh1
ContentLightLevel {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                    importc: "struct Dav1dContentLightLevel".} = object
  max_content_light_level*: cint
  max_frame_average_light_level*: cint
MasteringDisplay {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                   importc: "struct Dav1dMasteringDisplay".} = object
  primaries*: array[3, array[2, uint16]] ## ```
                                         ##   /< 0.16 fixed point
                                         ## ```
  white_point*: array[2, uint16] ## ```
                                 ##   /< 0.16 fixed point
                                 ## ```
  max_luminance*: uint32     ## ```
                             ##   /< 24.8 fixed point
                             ## ```
  min_luminance*: uint32     ## ```
                             ##   /< 18.14 fixed point
                             ## ```
  
ITUTT35 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
          importc: "struct Dav1dITUTT35".} = object
  country_code*: uint8
  country_code_extension_byte*: uint8
  payload_size*: uint
  payload*: ptr uint8
SequenceHeader {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                 importc: "struct Dav1dSequenceHeader".} = object
  profile*: cint ## ```
                 ##   Stream profile, 0 for 8-10 bits/component 4:2:0 or monochrome;
                 ##        1 for 8-10 bits/component 4:4:4; 2 for 4:2:2 at any bits/component,
                 ##        or 12 bits/component at any chroma subsampling.
                 ## ```
  max_width*: cint ## ```
                   ##   Maximum dimensions for this stream. In non-scalable streams, these
                   ##        are often the actual dimensions of the stream, although that is not
                   ##        a normative requirement.
                   ## ```
  max_height*: cint ## ```
                    ##   Maximum dimensions for this stream. In non-scalable streams, these
                    ##        are often the actual dimensions of the stream, although that is not
                    ##        a normative requirement.
                    ## ```
  layout*: PixelLayout       ## ```
                             ##   /< format of the picture
                             ## ```
  pri*: ColorPrimaries       ## ```
                             ##   /< color primaries (av1)
                             ## ```
  trc*: TransferCharacteristics ## ```
                                ##   /< transfer characteristics (av1)
                                ## ```
  mtrx*: MatrixCoefficients  ## ```
                             ##   /< matrix coefficients (av1)
                             ## ```
  chr*: ChromaSamplePosition ## ```
                             ##   /< chroma sample position (av1)
                             ##     
                             ##        0, 1 and 2 mean 8, 10 or 12 bits/component, respectively. This is not
                             ##        exactly the same as 'hbd' from the spec; the spec's hbd distinguishes
                             ##        between 8 (0) and 10-12 (1) bits/component, and another element
                             ##        (twelve_bit) to distinguish between 10 and 12 bits/component. To get
                             ##        the spec's hbd, use !!our_hbd, and to get twelve_bit, use hbd == 2.
                             ## ```
  hbd*: cint ## ```
             ##   /< chroma sample position (av1)
             ##     
             ##        0, 1 and 2 mean 8, 10 or 12 bits/component, respectively. This is not
             ##        exactly the same as 'hbd' from the spec; the spec's hbd distinguishes
             ##        between 8 (0) and 10-12 (1) bits/component, and another element
             ##        (twelve_bit) to distinguish between 10 and 12 bits/component. To get
             ##        the spec's hbd, use !!our_hbd, and to get twelve_bit, use hbd == 2.
             ## ```
  color_range*: cint ## ```
                     ##   Pixel data uses JPEG pixel range ([0,255] for 8bits) instead of
                     ##        MPEG pixel range ([16,235] for 8bits luma, [16,240] for 8bits chroma).
                     ## ```
  num_operating_points*: cint
  major_level*: cint
  minor_level*: cint
  initial_display_delay*: cint
  idc*: cint
  tier*: cint
  decoder_model_param_present*: cint
  display_model_param_present*: cint
  still_picture*: cint
  reduced_still_picture_header*: cint
  timing_info_present*: cint
  num_units_in_tick*: cint
  time_scale*: cint
  equal_picture_interval*: cint
  num_ticks_per_picture*: cuint
  decoder_model_info_present*: cint
  encoder_decoder_buffer_delay_length*: cint
  num_units_in_decoding_tick*: cint
  buffer_removal_delay_length*: cint
  frame_presentation_delay_length*: cint
  display_model_info_present*: cint
  width_n_bits*: cint
  height_n_bits*: cint
  frame_id_numbers_present*: cint
  delta_frame_id_n_bits*: cint
  frame_id_n_bits*: cint
  sb128*: cint
  filter_intra*: cint
  intra_edge_filter*: cint
  inter_intra*: cint
  masked_compound*: cint
  warped_motion*: cint
  dual_filter*: cint
  order_hint*: cint
  jnt_comp*: cint
  ref_frame_mvs*: cint
  screen_content_tools*: AdaptiveBoolean
  force_integer_mv*: AdaptiveBoolean
  order_hint_n_bits*: cint
  super_res*: cint
  cdef*: cint
  restoration*: cint
  ss_hor*: cint
  ss_ver*: cint
  monochrome*: cint
  color_description_present*: cint
  separate_uv_delta_q*: cint
  film_grain_present*: cint
  decoder_buffer_delay*: cint
  encoder_buffer_delay*: cint
  low_delay_mode*: cint
SegmentationData {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                   importc: "struct Dav1dSegmentationData".} = object
  delta_q*: cint
  delta_lf_y_v*: cint
  delta_lf_y_h*: cint
  delta_lf_u*: cint
  delta_lf_v*: cint
  `ref`*: cint
  skip*: cint
  globalmv*: cint
SegmentationDataSet {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                      importc: "struct Dav1dSegmentationDataSet".} = object
  d*: array[8, SegmentationData]
  preskip*: cint
  last_active_segid*: cint
LoopfilterModeRefDeltas {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                          importc: "struct Dav1dLoopfilterModeRefDeltas".} = object
  mode_delta*: cint
  ref_delta*: array[(7 + typeof(7)(1)), cint]
FilmGrainData {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                importc: "struct Dav1dFilmGrainData".} = object
  seed*: cuint
  num_y_points*: cint
  y_points*: uint8
  chroma_scaling_from_luma*: cint
  num_uv_points*: array[2, cint]
  uv_points*: uint8
  scaling_shift*: cint
  ar_coeff_lag*: cint
  ar_coeffs_y*: array[24, int8]
  ar_coeffs_uv*: int8
  ar_coeff_shift*: uint64
  grain_scale_shift*: cint
  uv_mult*: array[2, cint]
  uv_luma_mult*: array[2, cint]
  uv_offset*: array[2, cint]
  overlap_flag*: cint
  clip_to_restricted_range*: cint
Type_dav1dh2 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh2".} = object
  data*: FilmGrainData
  present*: cint
  update*: cint
Type_dav1dh3 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh3".} = object
  width_scale_denominator*: cint
  enabled*: cint
Type_dav1dh4 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh4".} = object
  uniform*: cint
  n_bytes*: cuint
  min_log2_cols*: cint
  max_log2_cols*: cint
  log2_cols*: cint
  cols*: cint
  min_log2_rows*: cint
  max_log2_rows*: cint
  log2_rows*: cint
  rows*: cint
  col_start_sb*: array[64 + typeof(64)(1), uint16]
  row_start_sb*: array[64 + typeof(64)(1), uint16]
  update*: cint
Type_dav1dh5 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh5".} = object
  yac*: cint
  ydc_delta*: cint
  udc_delta*: cint
  uac_delta*: cint
  vdc_delta*: cint
  vac_delta*: cint
  qm*: cint
  qm_y*: cint
  qm_u*: cint
  qm_v*: cint
Type_dav1dh6 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh6".} = object
  enabled*: cint
  update_map*: cint
  temporal*: cint
  update_data*: cint
  seg_data*: SegmentationDataSet
  lossless*: array[8, cint]
  qidx*: array[8, cint]
Type_dav1dh8 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh8".} = object
  present*: cint
  res_log2*: cint
Type_dav1dh9 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh9".} = object
  present*: cint
  res_log2*: cint
  multi*: cint
Type_dav1dh7 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Type_dav1dh7".} = object
  q*: Type_dav1dh8
  lf*: Type_dav1dh9
Type_dav1dh10 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                importc: "struct Type_dav1dh10".} = object
  level_y*: cint
  level_u*: cint
  level_v*: cint
  mode_ref_delta_enabled*: cint
  mode_ref_delta_update*: cint
  mode_ref_deltas*: LoopfilterModeRefDeltas
  sharpness*: cint
Type_dav1dh11 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                importc: "struct Type_dav1dh11".} = object
  damping*: cint
  n_bits*: cint
  y_strength*: array[8, cint]
  uv_strength*: array[8, cint]
Type_dav1dh12 {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                importc: "struct Type_dav1dh12".} = object
  `type`*: RestorationType
  unit_size*: cint
FrameHeader {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
              importc: "struct Dav1dFrameHeader".} = object
  film_grain*: Type_dav1dh2
  frame_type*: FrameType     ## ```
                             ##   /< type of the picture
                             ## ```
  width*: cint               ## ```
                             ##   /< type of the picture
                             ## ```
  height*: cint              ## ```
                             ##   /< type of the picture
                             ## ```
  frame_offset*: cint        ## ```
                             ##   /< frame number
                             ## ```
  temporal_id*: cint         ## ```
                             ##   /< temporal id of the frame for SVC
                             ## ```
  spatial_id*: cint          ## ```
                             ##   /< spatial id of the frame for SVC
                             ## ```
  show_existing_frame*: cint
  existing_frame_idx*: cint
  frame_id*: cint
  frame_presentation_delay*: cint
  show_frame*: cint
  showable_frame*: cint
  error_resilient_mode*: cint
  disable_cdf_update*: cint
  allow_screen_content_tools*: cint
  force_integer_mv*: cint
  frame_size_override*: cint
  primary_ref_frame*: cint
  buffer_removal_time_present*: cint
  buffer_removal_time*: cint
  refresh_frame_flags*: cint
  render_width*: cint
  render_height*: cint
  super_res*: Type_dav1dh3
  have_render_size*: cint
  allow_intrabc*: cint
  frame_ref_short_signaling*: cint
  refidx*: array[7, cint]
  hp*: cint
  subpel_filter_mode*: FilterMode
  switchable_motion_mode*: cint
  use_ref_frame_mvs*: cint
  refresh_context*: cint
  tiling*: Type_dav1dh4
  quant*: Type_dav1dh5
  segmentation*: Type_dav1dh6
  delta*: Type_dav1dh7
  all_lossless*: cint
  loopfilter*: Type_dav1dh10
  cdef*: Type_dav1dh11
  restoration*: Type_dav1dh12
  txfm_mode*: TxfmMode
  switchable_comp_refs*: cint
  skip_mode_allowed*: cint
  skip_mode_enabled*: cint
  skip_mode_refs*: array[2, cint]
  warp_motion*: cint
  reduced_txtp_set*: cint
  gmv*: array[7, WarpedMotionParams]
PictureParameters {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
                    importc: "struct Dav1dPictureParameters".} = object
  w*: cint                   ## ```
                             ##   /< width (in pixels)
                             ## ```
  h*: cint                   ## ```
                             ##   /< height (in pixels)
                             ## ```
  layout*: PixelLayout       ## ```
                             ##   /< format of the picture
                             ## ```
  bpc*: cint                 ## ```
                             ##   /< bits per pixel component (8 or 10)
                             ## ```
  
cPicture {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
           importc: "struct Dav1dPicture".} = object
  seq_hdr*: ptr SequenceHeader
  frame_hdr*: ptr FrameHeader
  data*: array[3, pointer] ## ```
                           ##   Pointers to planar image data (Y is [0], U is [1], V is [2]). The data
                           ##        should be bytes (for 8 bpc) or words (for 10 bpc). In case of words
                           ##        containing 10 bpc image data, the pixels should be located in the LSB
                           ##        bits, so that values range between [0, 1023]; the upper bits should be
                           ##        zero'ed out.
                           ## ```
  stride*: array[2, ByteAddress] ## ```
                                 ##   Number of bytes between 2 lines in data[] for luma [0] or chroma [1].
                                 ## ```
  p*: PictureParameters
  m*: DataProps
  content_light*: ptr ContentLightLevel ## ```
                                        ##   High Dynamic Range Content Light Level metadata applying to this picture,
                                        ##        as defined in section 5.8.3 and 6.7.3
                                        ## ```
  mastering_display*: ptr MasteringDisplay ## ```
                                           ##   High Dynamic Range Mastering Display Color Volume metadata applying to
                                           ##        this picture, as defined in section 5.8.4 and 6.7.4
                                           ## ```
  itut_t35*: ptr ITUTT35 ## ```
                         ##   ITU-T T.35 metadata as defined in section 5.8.2 and 6.7.2
                         ## ```
  reserved*: array[4, ptr uint] ## ```
                                ##   /< reserved for future use
                                ## ```
  frame_hdr_ref*: ptr Ref    ## ```
                             ##   /< Dav1dFrameHeader allocation origin
                             ## ```
  seq_hdr_ref*: ptr Ref      ## ```
                             ##   /< Dav1dSequenceHeader allocation origin
                             ## ```
  content_light_ref*: ptr Ref ## ```
                              ##   /< Dav1dContentLightLevel allocation origin
                              ## ```
  mastering_display_ref*: ptr Ref ## ```
                                  ##   /< Dav1dMasteringDisplay allocation origin
                                  ## ```
  itut_t35_ref*: ptr Ref     ## ```
                             ##   /< Dav1dITUTT35 allocation origin
                             ## ```
  reserved_ref*: array[4, ptr uint] ## ```
                                    ##   /< reserved for future use
                                    ## ```
  `ref`*: ptr Ref            ## ```
                             ##   /< Frame data allocation origin
                             ## ```
  allocator_data*: pointer   ## ```
                             ##   /< pointer managed by the allocator
                             ## ```
  
PicAllocator {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
               importc: "struct Dav1dPicAllocator".} = object
  cookie*: pointer ## ```
                   ##   /< custom data to pass to the allocator callbacks.
                   ##     
                   ##        Allocate the picture buffer based on the Dav1dPictureParameters.
                   ##       
                   ##        The data[0], data[1] and data[2] must be DAV1D_PICTURE_ALIGNMENT byte
                   ##        aligned and with a pixel width/height multiple of 128 pixels. Any
                   ##        allocated memory area should also be padded by DAV1D_PICTURE_ALIGNMENT
                   ##        bytes.
                   ##        data[1] and data[2] must share the same stride[1].
                   ##       
                   ##        This function will be called on the main thread (the thread which calls
                   ##        dav1d_get_picture()).
                   ##       
                   ##        @param  pic The picture to allocate the buffer for. The callback needs to
                   ##                    fill the picture data[0], data[1], data[2], stride[0] and
                   ##                    stride[1].
                   ##                    The allocator can fill the pic allocator_data pointer with
                   ##                    a custom pointer that will be passed to
                   ##                    release_picture_callback().
                   ##        @param cookie Custom pointer passed to all calls.
                   ##       
                   ##        @note No fields other than data, stride and allocator_data must be filled
                   ##              by this callback.
                   ##        @return 0 on success. A negative DAV1D_ERR value on error.
                   ## ```
  alloc_picture_callback*: proc (pic: ptr cPicture; cookie: pointer): cint {...}{.
      cdecl.} ## ```
              ##   /< custom data to pass to the allocator callbacks.
              ##     
              ##        Allocate the picture buffer based on the Dav1dPictureParameters.
              ##       
              ##        The data[0], data[1] and data[2] must be DAV1D_PICTURE_ALIGNMENT byte
              ##        aligned and with a pixel width/height multiple of 128 pixels. Any
              ##        allocated memory area should also be padded by DAV1D_PICTURE_ALIGNMENT
              ##        bytes.
              ##        data[1] and data[2] must share the same stride[1].
              ##       
              ##        This function will be called on the main thread (the thread which calls
              ##        dav1d_get_picture()).
              ##       
              ##        @param  pic The picture to allocate the buffer for. The callback needs to
              ##                    fill the picture data[0], data[1], data[2], stride[0] and
              ##                    stride[1].
              ##                    The allocator can fill the pic allocator_data pointer with
              ##                    a custom pointer that will be passed to
              ##                    release_picture_callback().
              ##        @param cookie Custom pointer passed to all calls.
              ##       
              ##        @note No fields other than data, stride and allocator_data must be filled
              ##              by this callback.
              ##        @return 0 on success. A negative DAV1D_ERR value on error.
              ## ```
  release_picture_callback*: proc (pic: ptr cPicture; cookie: pointer) {...}{.cdecl.} ## ```
                                                                                 ##   Release the picture buffer.
                                                                                 ##       
                                                                                 ##        If frame threading is used, this function may be called by the main
                                                                                 ##        thread (the thread which calls dav1d_get_picture()) or any of the frame
                                                                                 ##        threads and thus must be thread-safe. If frame threading is not used,
                                                                                 ##        this function will only be called on the main thread.
                                                                                 ##       
                                                                                 ##        @param pic    The picture that was filled by alloc_picture_callback().
                                                                                 ##        @param cookie Custom pointer passed to all calls.
                                                                                 ## ```
  
cData {...}{.bycopy,
        header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
        importc: "struct Dav1dData".} = object
  data*: ptr uint8           ## ```
                             ##   /< data pointer
                             ## ```
  sz*: uint                  ## ```
                             ##   /< data size
                             ## ```
  `ref`*: ptr Ref            ## ```
                             ##   /< allocation origin
                             ## ```
  m*: DataProps ## ```
                ##   /< user provided metadata passed to the output picture
                ## ```
  
Context {...}{.header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
          importc: "Dav1dContext", incompleteStruct.} = object
Ref {...}{.header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
      importc: "Dav1dRef", incompleteStruct.} = object
Logger {...}{.bycopy,
         header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
         importc: "struct Dav1dLogger".} = object
  cookie*: pointer ## ```
                   ##   /< Custom data to pass to the callback.
                   ##     
                   ##        Logger callback. May be NULL to disable logging.
                   ##       
                   ##        @param cookie Custom pointer passed to all calls.
                   ##        @param format The vprintf compatible format string.
                   ##        @param     ap List of arguments referenced by the format string.
                   ## ```
  callback*: proc (cookie: pointer; format: cstring; ap: va_list) {...}{.cdecl.} ## ```
                                                                            ##   /< Custom data to pass to the callback.
                                                                            ##     
                                                                            ##        Logger callback. May be NULL to disable logging.
                                                                            ##       
                                                                            ##        @param cookie Custom pointer passed to all calls.
                                                                            ##        @param format The vprintf compatible format string.
                                                                            ##        @param     ap List of arguments referenced by the format string.
                                                                            ## ```
  
Settings {...}{.bycopy, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h",
           importc: "struct Dav1dSettings".} = object
  n_frame_threads*: cint
  n_tile_threads*: cint
  apply_grain*: cint
  operating_point*: cint ## ```
                         ##   /< select an operating point for scalable AV1 bitstreams (0 - 31)
                         ## ```
  all_layers*: cint ## ```
                    ##   /< output all spatial layers of a scalable AV1 biststream
                    ## ```
  frame_size_limit*: cuint   ## ```
                             ##   /< maximum frame size, in pixels (0 = unlimited)
                             ## ```
  allocator*: PicAllocator   ## ```
                             ##   /< Picture allocator callback.
                             ## ```
  logger*: Logger            ## ```
                             ##   /< Logger callback.
                             ## ```
  reserved*: array[32, uint8] ## ```
                              ##   /< reserved for future use
                              ## ```
  

Consts

dav1dStd = false
dav1dGit = true
dav1dDL = false
dav1dConan = false
dav1dJBB = false
dav1dStatic = true
dav1dSetVer = "2ca1bfc3"
dav1dPath = "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h"
dav1dLPath = "/home/carlo/.cache/nim/nimterop/dav1d/build/src/libdav1d.a"
dav1dLDeps = []
MAX_CDEF_STRENGTHS = 8
MAX_OPERATING_POINTS = 32
MAX_TILE_COLS = 64
MAX_TILE_ROWS = 64
MAX_SEGMENTS = 8
NUM_REF_FRAMES = 8
PRIMARY_REF_NONE = 7
REFS_PER_FRAME = 7
TOTAL_REFS_PER_FRAME = 8
OBU_SEQ_HDR = 1'i32
OBU_TD = 2'i32
OBU_FRAME_HDR = 3'i32
OBU_TILE_GRP = 4'i32
OBU_METADATA = 5'i32
OBU_FRAME = 6'i32
OBU_REDUNDANT_FRAME_HDR = 7'i32
OBU_PADDING = 15'i32
TX_4X4_ONLY = 0'i32
TX_LARGEST = 1
TX_SWITCHABLE = 2
N_TX_MODES = 3
FILTER_8TAP_REGULAR = 0'i32
FILTER_8TAP_SMOOTH = 1
FILTER_8TAP_SHARP = 2
N_SWITCHABLE_FILTERS = 3
FILTER_BILINEAR = 3'i32
N_FILTERS = 4
FILTER_SWITCHABLE = 4'i32
OFF = 0'i32
ON = 1'i32
ADAPTIVE = 2'i32
RESTORATION_NONE = 0'i32
RESTORATION_SWITCHABLE = 1
RESTORATION_WIENER = 2
RESTORATION_SGRPROJ = 3
WM_TYPE_IDENTITY = 0'i32
WM_TYPE_TRANSLATION = 1
WM_TYPE_ROT_ZOOM = 2
WM_TYPE_AFFINE = 3
PIXEL_LAYOUT_I400 = 0'i32
  /< monochrome
PIXEL_LAYOUT_I420 = 1
  /< 4:2:0 planar
PIXEL_LAYOUT_I422 = 2
  /< 4:2:2 planar
PIXEL_LAYOUT_I444 = 3
  /< 4:4:4 planar
FRAME_TYPE_KEY = 0'i32
  /< Key Intra frame
FRAME_TYPE_INTER = 1'i32
  /< Inter frame
FRAME_TYPE_INTRA = 2'i32
  /< Non key Intra frame
FRAME_TYPE_SWITCH = 3'i32
  /< Switch Inter frame
COLOR_PRI_BT709 = 1'i32
COLOR_PRI_UNKNOWN = 2'i32
COLOR_PRI_BT470M = 4'i32
COLOR_PRI_BT470BG = 5'i32
COLOR_PRI_BT601 = 6'i32
COLOR_PRI_SMPTE240 = 7'i32
COLOR_PRI_FILM = 8'i32
COLOR_PRI_BT2020 = 9'i32
COLOR_PRI_XYZ = 10'i32
COLOR_PRI_SMPTE431 = 11'i32
COLOR_PRI_SMPTE432 = 12'i32
COLOR_PRI_EBU3213 = 22'i32
COLOR_PRI_RESERVED = 255'i32
TRC_BT709 = 1'i32
TRC_UNKNOWN = 2'i32
TRC_BT470M = 4'i32
TRC_BT470BG = 5'i32
TRC_BT601 = 6'i32
TRC_SMPTE240 = 7'i32
TRC_LINEAR = 8'i32
TRC_LOG100 = 9'i32
  /< logarithmic (100:1 range)
TRC_LOG100_SQRT10 = 10'i32
  /< lograithmic (100*sqrt(10):1 range)
TRC_IEC61966 = 11'i32
  /< lograithmic (100*sqrt(10):1 range)
TRC_BT1361 = 12'i32
TRC_SRGB = 13'i32
TRC_BT2020_10BIT = 14'i32
TRC_BT2020_12BIT = 15'i32
TRC_SMPTE2084 = 16'i32
  /< PQ
TRC_SMPTE428 = 17'i32
  /< PQ
TRC_HLG = 18'i32
  /< hybrid log/gamma (BT.2100 / ARIB STD-B67)
TRC_RESERVED = 255'i32
  /< hybrid log/gamma (BT.2100 / ARIB STD-B67)
MC_IDENTITY = 0'i32
MC_BT709 = 1'i32
MC_UNKNOWN = 2'i32
MC_FCC = 4'i32
MC_BT470BG = 5'i32
MC_BT601 = 6'i32
MC_SMPTE240 = 7'i32
MC_SMPTE_YCGCO = 8'i32
MC_BT2020_NCL = 9'i32
MC_BT2020_CL = 10'i32
MC_SMPTE2085 = 11'i32
MC_CHROMAT_NCL = 12'i32
  /< Chromaticity-derived
MC_CHROMAT_CL = 13'i32
  /< Chromaticity-derived
MC_ICTCP = 14'i32
MC_RESERVED = 255'i32
CHR_UNKNOWN = 0'i32
CHR_VERTICAL = 1'i32
  /< Horizontally co-located with luma(0, 0)
    /< sample, between two vertical samples
CHR_COLOCATED = 2'i32
  /< Co-located with luma(0, 0) sample
PICTURE_ALIGNMENT = 64
API_VERSION_MAJOR = 5
API_VERSION_MINOR = 0
API_VERSION_PATCH = 0
MAX_FRAME_THREADS = 256
MAX_TILE_THREADS = 64

Procs

proc `+`(x`gensym23: ObuType; y`gensym23: cint): ObuType {...}{.borrow.}
proc `+`(x`gensym23: cint; y`gensym23: ObuType): ObuType {...}{.borrow.}
proc `+`(x`gensym23, y`gensym23: ObuType): ObuType {...}{.borrow.}
proc `+`(x`gensym24: ObuType; y`gensym24: int): ObuType {...}{.raises: [], tags: [].}
proc `+`(x`gensym24: int; y`gensym24: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `-`(x`gensym25: ObuType; y`gensym25: cint): ObuType {...}{.borrow.}
proc `-`(x`gensym25: cint; y`gensym25: ObuType): ObuType {...}{.borrow.}
proc `-`(x`gensym25, y`gensym25: ObuType): ObuType {...}{.borrow.}
proc `-`(x`gensym26: ObuType; y`gensym26: int): ObuType {...}{.raises: [], tags: [].}
proc `-`(x`gensym26: int; y`gensym26: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `*`(x`gensym27: ObuType; y`gensym27: cint): ObuType {...}{.borrow.}
proc `*`(x`gensym27: cint; y`gensym27: ObuType): ObuType {...}{.borrow.}
proc `*`(x`gensym27, y`gensym27: ObuType): ObuType {...}{.borrow.}
proc `*`(x`gensym28: ObuType; y`gensym28: int): ObuType {...}{.raises: [], tags: [].}
proc `*`(x`gensym28: int; y`gensym28: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `div`(x`gensym29: ObuType; y`gensym29: cint): ObuType {...}{.borrow.}
proc `div`(x`gensym29: cint; y`gensym29: ObuType): ObuType {...}{.borrow.}
proc `div`(x`gensym29, y`gensym29: ObuType): ObuType {...}{.borrow.}
proc `div`(x`gensym30: ObuType; y`gensym30: int): ObuType {...}{.raises: [], tags: [].}
proc `div`(x`gensym30: int; y`gensym30: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `mod`(x`gensym31: ObuType; y`gensym31: cint): ObuType {...}{.borrow.}
proc `mod`(x`gensym31: cint; y`gensym31: ObuType): ObuType {...}{.borrow.}
proc `mod`(x`gensym31, y`gensym31: ObuType): ObuType {...}{.borrow.}
proc `mod`(x`gensym32: ObuType; y`gensym32: int): ObuType {...}{.raises: [], tags: [].}
proc `mod`(x`gensym32: int; y`gensym32: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `shl`(x`gensym33: ObuType; y`gensym33: cint): ObuType {...}{.borrow.}
proc `shl`(x`gensym33: cint; y`gensym33: ObuType): ObuType {...}{.borrow.}
proc `shl`(x`gensym33, y`gensym33: ObuType): ObuType {...}{.borrow.}
proc `shl`(x`gensym34: ObuType; y`gensym34: int): ObuType {...}{.raises: [], tags: [].}
proc `shl`(x`gensym34: int; y`gensym34: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `shr`(x`gensym35: ObuType; y`gensym35: cint): ObuType {...}{.borrow.}
proc `shr`(x`gensym35: cint; y`gensym35: ObuType): ObuType {...}{.borrow.}
proc `shr`(x`gensym35, y`gensym35: ObuType): ObuType {...}{.borrow.}
proc `shr`(x`gensym36: ObuType; y`gensym36: int): ObuType {...}{.raises: [], tags: [].}
proc `shr`(x`gensym36: int; y`gensym36: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `or`(x`gensym37: ObuType; y`gensym37: cint): ObuType {...}{.borrow.}
proc `or`(x`gensym37: cint; y`gensym37: ObuType): ObuType {...}{.borrow.}
proc `or`(x`gensym37, y`gensym37: ObuType): ObuType {...}{.borrow.}
proc `or`(x`gensym38: ObuType; y`gensym38: int): ObuType {...}{.raises: [], tags: [].}
proc `or`(x`gensym38: int; y`gensym38: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `and`(x`gensym39: ObuType; y`gensym39: cint): ObuType {...}{.borrow.}
proc `and`(x`gensym39: cint; y`gensym39: ObuType): ObuType {...}{.borrow.}
proc `and`(x`gensym39, y`gensym39: ObuType): ObuType {...}{.borrow.}
proc `and`(x`gensym40: ObuType; y`gensym40: int): ObuType {...}{.raises: [], tags: [].}
proc `and`(x`gensym40: int; y`gensym40: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `xor`(x`gensym41: ObuType; y`gensym41: cint): ObuType {...}{.borrow.}
proc `xor`(x`gensym41: cint; y`gensym41: ObuType): ObuType {...}{.borrow.}
proc `xor`(x`gensym41, y`gensym41: ObuType): ObuType {...}{.borrow.}
proc `xor`(x`gensym42: ObuType; y`gensym42: int): ObuType {...}{.raises: [], tags: [].}
proc `xor`(x`gensym42: int; y`gensym42: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `<`(x`gensym43: ObuType; y`gensym43: cint): bool {...}{.borrow.}
proc `<`(x`gensym43: cint; y`gensym43: ObuType): bool {...}{.borrow.}
proc `<`(x`gensym43, y`gensym43: ObuType): bool {...}{.borrow.}
proc `<`(x`gensym44: ObuType; y`gensym44: int): bool {...}{.raises: [], tags: [].}
proc `<`(x`gensym44: int; y`gensym44: ObuType): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym45: ObuType; y`gensym45: cint): bool {...}{.borrow.}
proc `<=`(x`gensym45: cint; y`gensym45: ObuType): bool {...}{.borrow.}
proc `<=`(x`gensym45, y`gensym45: ObuType): bool {...}{.borrow.}
proc `<=`(x`gensym46: ObuType; y`gensym46: int): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym46: int; y`gensym46: ObuType): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym47: ObuType; y`gensym47: cint): bool {...}{.borrow.}
proc `==`(x`gensym47: cint; y`gensym47: ObuType): bool {...}{.borrow.}
proc `==`(x`gensym47, y`gensym47: ObuType): bool {...}{.borrow.}
proc `==`(x`gensym48: ObuType; y`gensym48: int): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym48: int; y`gensym48: ObuType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym49: ObuType; y`gensym49: cint): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym49: cint; y`gensym49: ObuType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym49, y`gensym49: ObuType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym50: ObuType; y`gensym50: int): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym50: int; y`gensym50: ObuType): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym51: ObuType; y`gensym51: cint): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym51: cint; y`gensym51: ObuType): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym51, y`gensym51: ObuType): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym52: ObuType; y`gensym52: int): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym52: int; y`gensym52: ObuType): bool {...}{.raises: [], tags: [].}
proc `/`(x`gensym53, y`gensym53: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `/`(x`gensym53: ObuType; y`gensym53: cint): ObuType {...}{.raises: [], tags: [].}
proc `/`(x`gensym53: cint; y`gensym53: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `/`(x`gensym53: ObuType; y`gensym53: int): ObuType {...}{.raises: [], tags: [].}
proc `/`(x`gensym53: int; y`gensym53: ObuType): ObuType {...}{.raises: [], tags: [].}
proc `$`(x`gensym53: ObuType): string {...}{.borrow.}
proc `not`(x`gensym53: ObuType): ObuType {...}{.borrow.}
proc `+`(x`gensym55: TxfmMode; y`gensym55: cint): TxfmMode {...}{.borrow.}
proc `+`(x`gensym55: cint; y`gensym55: TxfmMode): TxfmMode {...}{.borrow.}
proc `+`(x`gensym55, y`gensym55: TxfmMode): TxfmMode {...}{.borrow.}
proc `+`(x`gensym56: TxfmMode; y`gensym56: int): TxfmMode {...}{.raises: [], tags: [].}
proc `+`(x`gensym56: int; y`gensym56: TxfmMode): TxfmMode {...}{.raises: [], tags: [].}
proc `-`(x`gensym57: TxfmMode; y`gensym57: cint): TxfmMode {...}{.borrow.}
proc `-`(x`gensym57: cint; y`gensym57: TxfmMode): TxfmMode {...}{.borrow.}
proc `-`(x`gensym57, y`gensym57: TxfmMode): TxfmMode {...}{.borrow.}
proc `-`(x`gensym58: TxfmMode; y`gensym58: int): TxfmMode {...}{.raises: [], tags: [].}
proc `-`(x`gensym58: int; y`gensym58: TxfmMode): TxfmMode {...}{.raises: [], tags: [].}
proc `*`(x`gensym59: TxfmMode; y`gensym59: cint): TxfmMode {...}{.borrow.}
proc `*`(x`gensym59: cint; y`gensym59: TxfmMode): TxfmMode {...}{.borrow.}
proc `*`(x`gensym59, y`gensym59: TxfmMode): TxfmMode {...}{.borrow.}
proc `*`(x`gensym60: TxfmMode; y`gensym60: int): TxfmMode {...}{.raises: [], tags: [].}
proc `*`(x`gensym60: int; y`gensym60: TxfmMode): TxfmMode {...}{.raises: [], tags: [].}
proc `div`(x`gensym61: TxfmMode; y`gensym61: cint): TxfmMode {...}{.borrow.}
proc `div`(x`gensym61: cint; y`gensym61: TxfmMode): TxfmMode {...}{.borrow.}
proc `div`(x`gensym61, y`gensym61: TxfmMode): TxfmMode {...}{.borrow.}
proc `div`(x`gensym62: TxfmMode; y`gensym62: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym62: int; y`gensym62: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym63: TxfmMode; y`gensym63: cint): TxfmMode {...}{.borrow.}
proc `mod`(x`gensym63: cint; y`gensym63: TxfmMode): TxfmMode {...}{.borrow.}
proc `mod`(x`gensym63, y`gensym63: TxfmMode): TxfmMode {...}{.borrow.}
proc `mod`(x`gensym64: TxfmMode; y`gensym64: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym64: int; y`gensym64: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym65: TxfmMode; y`gensym65: cint): TxfmMode {...}{.borrow.}
proc `shl`(x`gensym65: cint; y`gensym65: TxfmMode): TxfmMode {...}{.borrow.}
proc `shl`(x`gensym65, y`gensym65: TxfmMode): TxfmMode {...}{.borrow.}
proc `shl`(x`gensym66: TxfmMode; y`gensym66: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym66: int; y`gensym66: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym67: TxfmMode; y`gensym67: cint): TxfmMode {...}{.borrow.}
proc `shr`(x`gensym67: cint; y`gensym67: TxfmMode): TxfmMode {...}{.borrow.}
proc `shr`(x`gensym67, y`gensym67: TxfmMode): TxfmMode {...}{.borrow.}
proc `shr`(x`gensym68: TxfmMode; y`gensym68: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym68: int; y`gensym68: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym69: TxfmMode; y`gensym69: cint): TxfmMode {...}{.borrow.}
proc `or`(x`gensym69: cint; y`gensym69: TxfmMode): TxfmMode {...}{.borrow.}
proc `or`(x`gensym69, y`gensym69: TxfmMode): TxfmMode {...}{.borrow.}
proc `or`(x`gensym70: TxfmMode; y`gensym70: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym70: int; y`gensym70: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym71: TxfmMode; y`gensym71: cint): TxfmMode {...}{.borrow.}
proc `and`(x`gensym71: cint; y`gensym71: TxfmMode): TxfmMode {...}{.borrow.}
proc `and`(x`gensym71, y`gensym71: TxfmMode): TxfmMode {...}{.borrow.}
proc `and`(x`gensym72: TxfmMode; y`gensym72: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym72: int; y`gensym72: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym73: TxfmMode; y`gensym73: cint): TxfmMode {...}{.borrow.}
proc `xor`(x`gensym73: cint; y`gensym73: TxfmMode): TxfmMode {...}{.borrow.}
proc `xor`(x`gensym73, y`gensym73: TxfmMode): TxfmMode {...}{.borrow.}
proc `xor`(x`gensym74: TxfmMode; y`gensym74: int): TxfmMode {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym74: int; y`gensym74: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym75: TxfmMode; y`gensym75: cint): bool {...}{.borrow.}
proc `<`(x`gensym75: cint; y`gensym75: TxfmMode): bool {...}{.borrow.}
proc `<`(x`gensym75, y`gensym75: TxfmMode): bool {...}{.borrow.}
proc `<`(x`gensym76: TxfmMode; y`gensym76: int): bool {...}{.raises: [], tags: [].}
proc `<`(x`gensym76: int; y`gensym76: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym77: TxfmMode; y`gensym77: cint): bool {...}{.borrow.}
proc `<=`(x`gensym77: cint; y`gensym77: TxfmMode): bool {...}{.borrow.}
proc `<=`(x`gensym77, y`gensym77: TxfmMode): bool {...}{.borrow.}
proc `<=`(x`gensym78: TxfmMode; y`gensym78: int): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym78: int; y`gensym78: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym79: TxfmMode; y`gensym79: cint): bool {...}{.borrow.}
proc `==`(x`gensym79: cint; y`gensym79: TxfmMode): bool {...}{.borrow.}
proc `==`(x`gensym79, y`gensym79: TxfmMode): bool {...}{.borrow.}
proc `==`(x`gensym80: TxfmMode; y`gensym80: int): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym80: int; y`gensym80: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym81: TxfmMode; y`gensym81: cint): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym81: cint; y`gensym81: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym81, y`gensym81: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym82: TxfmMode; y`gensym82: int): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym82: int; y`gensym82: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym83: TxfmMode; y`gensym83: cint): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym83: cint; y`gensym83: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym83, y`gensym83: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym84: TxfmMode; y`gensym84: int): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym84: int; y`gensym84: TxfmMode): bool {...}{.raises: [], tags: [].}
proc `/`(x`gensym85, y`gensym85: TxfmMode): TxfmMode {...}{.raises: [], tags: [].}
proc `/`(x`gensym85: TxfmMode; y`gensym85: cint): TxfmMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym85: cint; y`gensym85: TxfmMode): TxfmMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym85: TxfmMode; y`gensym85: int): TxfmMode {...}{.raises: [], tags: [].}
proc `/`(x`gensym85: int; y`gensym85: TxfmMode): TxfmMode {...}{.raises: [], tags: [].}
proc `$`(x`gensym85: TxfmMode): string {...}{.borrow.}
proc `not`(x`gensym85: TxfmMode): TxfmMode {...}{.borrow.}
proc `+`(x`gensym87: FilterMode; y`gensym87: cint): FilterMode {...}{.borrow.}
proc `+`(x`gensym87: cint; y`gensym87: FilterMode): FilterMode {...}{.borrow.}
proc `+`(x`gensym87, y`gensym87: FilterMode): FilterMode {...}{.borrow.}
proc `+`(x`gensym88: FilterMode; y`gensym88: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `+`(x`gensym88: int; y`gensym88: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym89: FilterMode; y`gensym89: cint): FilterMode {...}{.borrow.}
proc `-`(x`gensym89: cint; y`gensym89: FilterMode): FilterMode {...}{.borrow.}
proc `-`(x`gensym89, y`gensym89: FilterMode): FilterMode {...}{.borrow.}
proc `-`(x`gensym90: FilterMode; y`gensym90: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym90: int; y`gensym90: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym91: FilterMode; y`gensym91: cint): FilterMode {...}{.borrow.}
proc `*`(x`gensym91: cint; y`gensym91: FilterMode): FilterMode {...}{.borrow.}
proc `*`(x`gensym91, y`gensym91: FilterMode): FilterMode {...}{.borrow.}
proc `*`(x`gensym92: FilterMode; y`gensym92: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym92: int; y`gensym92: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym93: FilterMode; y`gensym93: cint): FilterMode {...}{.borrow.}
proc `div`(x`gensym93: cint; y`gensym93: FilterMode): FilterMode {...}{.borrow.}
proc `div`(x`gensym93, y`gensym93: FilterMode): FilterMode {...}{.borrow.}
proc `div`(x`gensym94: FilterMode; y`gensym94: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym94: int; y`gensym94: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym95: FilterMode; y`gensym95: cint): FilterMode {...}{.borrow.}
proc `mod`(x`gensym95: cint; y`gensym95: FilterMode): FilterMode {...}{.borrow.}
proc `mod`(x`gensym95, y`gensym95: FilterMode): FilterMode {...}{.borrow.}
proc `mod`(x`gensym96: FilterMode; y`gensym96: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym96: int; y`gensym96: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym97: FilterMode; y`gensym97: cint): FilterMode {...}{.borrow.}
proc `shl`(x`gensym97: cint; y`gensym97: FilterMode): FilterMode {...}{.borrow.}
proc `shl`(x`gensym97, y`gensym97: FilterMode): FilterMode {...}{.borrow.}
proc `shl`(x`gensym98: FilterMode; y`gensym98: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym98: int; y`gensym98: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym99: FilterMode; y`gensym99: cint): FilterMode {...}{.borrow.}
proc `shr`(x`gensym99: cint; y`gensym99: FilterMode): FilterMode {...}{.borrow.}
proc `shr`(x`gensym99, y`gensym99: FilterMode): FilterMode {...}{.borrow.}
proc `shr`(x`gensym100: FilterMode; y`gensym100: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym100: int; y`gensym100: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym101: FilterMode; y`gensym101: cint): FilterMode {...}{.borrow.}
proc `or`(x`gensym101: cint; y`gensym101: FilterMode): FilterMode {...}{.borrow.}
proc `or`(x`gensym101, y`gensym101: FilterMode): FilterMode {...}{.borrow.}
proc `or`(x`gensym102: FilterMode; y`gensym102: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym102: int; y`gensym102: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym103: FilterMode; y`gensym103: cint): FilterMode {...}{.borrow.}
proc `and`(x`gensym103: cint; y`gensym103: FilterMode): FilterMode {...}{.borrow.}
proc `and`(x`gensym103, y`gensym103: FilterMode): FilterMode {...}{.borrow.}
proc `and`(x`gensym104: FilterMode; y`gensym104: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym104: int; y`gensym104: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym105: FilterMode; y`gensym105: cint): FilterMode {...}{.borrow.}
proc `xor`(x`gensym105: cint; y`gensym105: FilterMode): FilterMode {...}{.borrow.}
proc `xor`(x`gensym105, y`gensym105: FilterMode): FilterMode {...}{.borrow.}
proc `xor`(x`gensym106: FilterMode; y`gensym106: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym106: int; y`gensym106: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym107: FilterMode; y`gensym107: cint): bool {...}{.borrow.}
proc `<`(x`gensym107: cint; y`gensym107: FilterMode): bool {...}{.borrow.}
proc `<`(x`gensym107, y`gensym107: FilterMode): bool {...}{.borrow.}
proc `<`(x`gensym108: FilterMode; y`gensym108: int): bool {...}{.raises: [], tags: [].}
proc `<`(x`gensym108: int; y`gensym108: FilterMode): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym109: FilterMode; y`gensym109: cint): bool {...}{.borrow.}
proc `<=`(x`gensym109: cint; y`gensym109: FilterMode): bool {...}{.borrow.}
proc `<=`(x`gensym109, y`gensym109: FilterMode): bool {...}{.borrow.}
proc `<=`(x`gensym110: FilterMode; y`gensym110: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym110: int; y`gensym110: FilterMode): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym111: FilterMode; y`gensym111: cint): bool {...}{.borrow.}
proc `==`(x`gensym111: cint; y`gensym111: FilterMode): bool {...}{.borrow.}
proc `==`(x`gensym111, y`gensym111: FilterMode): bool {...}{.borrow.}
proc `==`(x`gensym112: FilterMode; y`gensym112: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym112: int; y`gensym112: FilterMode): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym113: FilterMode; y`gensym113: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym113: cint; y`gensym113: FilterMode): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym113, y`gensym113: FilterMode): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym114: FilterMode; y`gensym114: int): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym114: int; y`gensym114: FilterMode): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym115: FilterMode; y`gensym115: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym115: cint; y`gensym115: FilterMode): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym115, y`gensym115: FilterMode): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym116: FilterMode; y`gensym116: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym116: int; y`gensym116: FilterMode): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym117, y`gensym117: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym117: FilterMode; y`gensym117: cint): FilterMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym117: cint; y`gensym117: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym117: FilterMode; y`gensym117: int): FilterMode {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym117: int; y`gensym117: FilterMode): FilterMode {...}{.raises: [],
    tags: [].}
proc `$`(x`gensym117: FilterMode): string {...}{.borrow.}
proc `not`(x`gensym117: FilterMode): FilterMode {...}{.borrow.}
proc `+`(x`gensym119: AdaptiveBoolean; y`gensym119: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `+`(x`gensym119: cint; y`gensym119: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `+`(x`gensym119, y`gensym119: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `+`(x`gensym120: AdaptiveBoolean; y`gensym120: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym120: int; y`gensym120: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym121: AdaptiveBoolean; y`gensym121: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `-`(x`gensym121: cint; y`gensym121: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `-`(x`gensym121, y`gensym121: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `-`(x`gensym122: AdaptiveBoolean; y`gensym122: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym122: int; y`gensym122: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym123: AdaptiveBoolean; y`gensym123: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `*`(x`gensym123: cint; y`gensym123: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `*`(x`gensym123, y`gensym123: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `*`(x`gensym124: AdaptiveBoolean; y`gensym124: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym124: int; y`gensym124: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym125: AdaptiveBoolean; y`gensym125: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `div`(x`gensym125: cint; y`gensym125: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `div`(x`gensym125, y`gensym125: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `div`(x`gensym126: AdaptiveBoolean; y`gensym126: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym126: int; y`gensym126: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym127: AdaptiveBoolean; y`gensym127: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `mod`(x`gensym127: cint; y`gensym127: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `mod`(x`gensym127, y`gensym127: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `mod`(x`gensym128: AdaptiveBoolean; y`gensym128: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym128: int; y`gensym128: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym129: AdaptiveBoolean; y`gensym129: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `shl`(x`gensym129: cint; y`gensym129: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `shl`(x`gensym129, y`gensym129: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `shl`(x`gensym130: AdaptiveBoolean; y`gensym130: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym130: int; y`gensym130: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym131: AdaptiveBoolean; y`gensym131: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `shr`(x`gensym131: cint; y`gensym131: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `shr`(x`gensym131, y`gensym131: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `shr`(x`gensym132: AdaptiveBoolean; y`gensym132: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym132: int; y`gensym132: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym133: AdaptiveBoolean; y`gensym133: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `or`(x`gensym133: cint; y`gensym133: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `or`(x`gensym133, y`gensym133: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `or`(x`gensym134: AdaptiveBoolean; y`gensym134: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym134: int; y`gensym134: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym135: AdaptiveBoolean; y`gensym135: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `and`(x`gensym135: cint; y`gensym135: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `and`(x`gensym135, y`gensym135: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `and`(x`gensym136: AdaptiveBoolean; y`gensym136: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym136: int; y`gensym136: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym137: AdaptiveBoolean; y`gensym137: cint): AdaptiveBoolean {...}{.
    borrow.}
proc `xor`(x`gensym137: cint; y`gensym137: AdaptiveBoolean): AdaptiveBoolean {...}{.
    borrow.}
proc `xor`(x`gensym137, y`gensym137: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `xor`(x`gensym138: AdaptiveBoolean; y`gensym138: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym138: int; y`gensym138: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym139: AdaptiveBoolean; y`gensym139: cint): bool {...}{.borrow.}
proc `<`(x`gensym139: cint; y`gensym139: AdaptiveBoolean): bool {...}{.borrow.}
proc `<`(x`gensym139, y`gensym139: AdaptiveBoolean): bool {...}{.borrow.}
proc `<`(x`gensym140: AdaptiveBoolean; y`gensym140: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym140: int; y`gensym140: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym141: AdaptiveBoolean; y`gensym141: cint): bool {...}{.borrow.}
proc `<=`(x`gensym141: cint; y`gensym141: AdaptiveBoolean): bool {...}{.borrow.}
proc `<=`(x`gensym141, y`gensym141: AdaptiveBoolean): bool {...}{.borrow.}
proc `<=`(x`gensym142: AdaptiveBoolean; y`gensym142: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym142: int; y`gensym142: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym143: AdaptiveBoolean; y`gensym143: cint): bool {...}{.borrow.}
proc `==`(x`gensym143: cint; y`gensym143: AdaptiveBoolean): bool {...}{.borrow.}
proc `==`(x`gensym143, y`gensym143: AdaptiveBoolean): bool {...}{.borrow.}
proc `==`(x`gensym144: AdaptiveBoolean; y`gensym144: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym144: int; y`gensym144: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym145: AdaptiveBoolean; y`gensym145: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym145: cint; y`gensym145: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym145, y`gensym145: AdaptiveBoolean): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym146: AdaptiveBoolean; y`gensym146: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym146: int; y`gensym146: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym147: AdaptiveBoolean; y`gensym147: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym147: cint; y`gensym147: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym147, y`gensym147: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym148: AdaptiveBoolean; y`gensym148: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym148: int; y`gensym148: AdaptiveBoolean): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym149, y`gensym149: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym149: AdaptiveBoolean; y`gensym149: cint): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym149: cint; y`gensym149: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym149: AdaptiveBoolean; y`gensym149: int): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym149: int; y`gensym149: AdaptiveBoolean): AdaptiveBoolean {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym149: AdaptiveBoolean): string {...}{.borrow.}
proc `not`(x`gensym149: AdaptiveBoolean): AdaptiveBoolean {...}{.borrow.}
proc `+`(x`gensym151: RestorationType; y`gensym151: cint): RestorationType {...}{.
    borrow.}
proc `+`(x`gensym151: cint; y`gensym151: RestorationType): RestorationType {...}{.
    borrow.}
proc `+`(x`gensym151, y`gensym151: RestorationType): RestorationType {...}{.borrow.}
proc `+`(x`gensym152: RestorationType; y`gensym152: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym152: int; y`gensym152: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym153: RestorationType; y`gensym153: cint): RestorationType {...}{.
    borrow.}
proc `-`(x`gensym153: cint; y`gensym153: RestorationType): RestorationType {...}{.
    borrow.}
proc `-`(x`gensym153, y`gensym153: RestorationType): RestorationType {...}{.borrow.}
proc `-`(x`gensym154: RestorationType; y`gensym154: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym154: int; y`gensym154: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym155: RestorationType; y`gensym155: cint): RestorationType {...}{.
    borrow.}
proc `*`(x`gensym155: cint; y`gensym155: RestorationType): RestorationType {...}{.
    borrow.}
proc `*`(x`gensym155, y`gensym155: RestorationType): RestorationType {...}{.borrow.}
proc `*`(x`gensym156: RestorationType; y`gensym156: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym156: int; y`gensym156: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym157: RestorationType; y`gensym157: cint): RestorationType {...}{.
    borrow.}
proc `div`(x`gensym157: cint; y`gensym157: RestorationType): RestorationType {...}{.
    borrow.}
proc `div`(x`gensym157, y`gensym157: RestorationType): RestorationType {...}{.borrow.}
proc `div`(x`gensym158: RestorationType; y`gensym158: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym158: int; y`gensym158: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym159: RestorationType; y`gensym159: cint): RestorationType {...}{.
    borrow.}
proc `mod`(x`gensym159: cint; y`gensym159: RestorationType): RestorationType {...}{.
    borrow.}
proc `mod`(x`gensym159, y`gensym159: RestorationType): RestorationType {...}{.borrow.}
proc `mod`(x`gensym160: RestorationType; y`gensym160: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym160: int; y`gensym160: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym161: RestorationType; y`gensym161: cint): RestorationType {...}{.
    borrow.}
proc `shl`(x`gensym161: cint; y`gensym161: RestorationType): RestorationType {...}{.
    borrow.}
proc `shl`(x`gensym161, y`gensym161: RestorationType): RestorationType {...}{.borrow.}
proc `shl`(x`gensym162: RestorationType; y`gensym162: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym162: int; y`gensym162: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym163: RestorationType; y`gensym163: cint): RestorationType {...}{.
    borrow.}
proc `shr`(x`gensym163: cint; y`gensym163: RestorationType): RestorationType {...}{.
    borrow.}
proc `shr`(x`gensym163, y`gensym163: RestorationType): RestorationType {...}{.borrow.}
proc `shr`(x`gensym164: RestorationType; y`gensym164: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym164: int; y`gensym164: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym165: RestorationType; y`gensym165: cint): RestorationType {...}{.
    borrow.}
proc `or`(x`gensym165: cint; y`gensym165: RestorationType): RestorationType {...}{.
    borrow.}
proc `or`(x`gensym165, y`gensym165: RestorationType): RestorationType {...}{.borrow.}
proc `or`(x`gensym166: RestorationType; y`gensym166: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym166: int; y`gensym166: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym167: RestorationType; y`gensym167: cint): RestorationType {...}{.
    borrow.}
proc `and`(x`gensym167: cint; y`gensym167: RestorationType): RestorationType {...}{.
    borrow.}
proc `and`(x`gensym167, y`gensym167: RestorationType): RestorationType {...}{.borrow.}
proc `and`(x`gensym168: RestorationType; y`gensym168: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym168: int; y`gensym168: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym169: RestorationType; y`gensym169: cint): RestorationType {...}{.
    borrow.}
proc `xor`(x`gensym169: cint; y`gensym169: RestorationType): RestorationType {...}{.
    borrow.}
proc `xor`(x`gensym169, y`gensym169: RestorationType): RestorationType {...}{.borrow.}
proc `xor`(x`gensym170: RestorationType; y`gensym170: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym170: int; y`gensym170: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym171: RestorationType; y`gensym171: cint): bool {...}{.borrow.}
proc `<`(x`gensym171: cint; y`gensym171: RestorationType): bool {...}{.borrow.}
proc `<`(x`gensym171, y`gensym171: RestorationType): bool {...}{.borrow.}
proc `<`(x`gensym172: RestorationType; y`gensym172: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym172: int; y`gensym172: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym173: RestorationType; y`gensym173: cint): bool {...}{.borrow.}
proc `<=`(x`gensym173: cint; y`gensym173: RestorationType): bool {...}{.borrow.}
proc `<=`(x`gensym173, y`gensym173: RestorationType): bool {...}{.borrow.}
proc `<=`(x`gensym174: RestorationType; y`gensym174: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym174: int; y`gensym174: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym175: RestorationType; y`gensym175: cint): bool {...}{.borrow.}
proc `==`(x`gensym175: cint; y`gensym175: RestorationType): bool {...}{.borrow.}
proc `==`(x`gensym175, y`gensym175: RestorationType): bool {...}{.borrow.}
proc `==`(x`gensym176: RestorationType; y`gensym176: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym176: int; y`gensym176: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym177: RestorationType; y`gensym177: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym177: cint; y`gensym177: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym177, y`gensym177: RestorationType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym178: RestorationType; y`gensym178: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym178: int; y`gensym178: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym179: RestorationType; y`gensym179: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym179: cint; y`gensym179: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym179, y`gensym179: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym180: RestorationType; y`gensym180: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym180: int; y`gensym180: RestorationType): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym181, y`gensym181: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym181: RestorationType; y`gensym181: cint): RestorationType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym181: cint; y`gensym181: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym181: RestorationType; y`gensym181: int): RestorationType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym181: int; y`gensym181: RestorationType): RestorationType {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym181: RestorationType): string {...}{.borrow.}
proc `not`(x`gensym181: RestorationType): RestorationType {...}{.borrow.}
proc `+`(x`gensym183: WarpedMotionType; y`gensym183: cint): WarpedMotionType {...}{.
    borrow.}
proc `+`(x`gensym183: cint; y`gensym183: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `+`(x`gensym183, y`gensym183: WarpedMotionType): WarpedMotionType {...}{.borrow.}
proc `+`(x`gensym184: WarpedMotionType; y`gensym184: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym184: int; y`gensym184: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym185: WarpedMotionType; y`gensym185: cint): WarpedMotionType {...}{.
    borrow.}
proc `-`(x`gensym185: cint; y`gensym185: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `-`(x`gensym185, y`gensym185: WarpedMotionType): WarpedMotionType {...}{.borrow.}
proc `-`(x`gensym186: WarpedMotionType; y`gensym186: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym186: int; y`gensym186: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym187: WarpedMotionType; y`gensym187: cint): WarpedMotionType {...}{.
    borrow.}
proc `*`(x`gensym187: cint; y`gensym187: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `*`(x`gensym187, y`gensym187: WarpedMotionType): WarpedMotionType {...}{.borrow.}
proc `*`(x`gensym188: WarpedMotionType; y`gensym188: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym188: int; y`gensym188: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym189: WarpedMotionType; y`gensym189: cint): WarpedMotionType {...}{.
    borrow.}
proc `div`(x`gensym189: cint; y`gensym189: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `div`(x`gensym189, y`gensym189: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `div`(x`gensym190: WarpedMotionType; y`gensym190: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym190: int; y`gensym190: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym191: WarpedMotionType; y`gensym191: cint): WarpedMotionType {...}{.
    borrow.}
proc `mod`(x`gensym191: cint; y`gensym191: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `mod`(x`gensym191, y`gensym191: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `mod`(x`gensym192: WarpedMotionType; y`gensym192: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym192: int; y`gensym192: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym193: WarpedMotionType; y`gensym193: cint): WarpedMotionType {...}{.
    borrow.}
proc `shl`(x`gensym193: cint; y`gensym193: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `shl`(x`gensym193, y`gensym193: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `shl`(x`gensym194: WarpedMotionType; y`gensym194: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym194: int; y`gensym194: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym195: WarpedMotionType; y`gensym195: cint): WarpedMotionType {...}{.
    borrow.}
proc `shr`(x`gensym195: cint; y`gensym195: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `shr`(x`gensym195, y`gensym195: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `shr`(x`gensym196: WarpedMotionType; y`gensym196: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym196: int; y`gensym196: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym197: WarpedMotionType; y`gensym197: cint): WarpedMotionType {...}{.
    borrow.}
proc `or`(x`gensym197: cint; y`gensym197: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `or`(x`gensym197, y`gensym197: WarpedMotionType): WarpedMotionType {...}{.borrow.}
proc `or`(x`gensym198: WarpedMotionType; y`gensym198: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym198: int; y`gensym198: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym199: WarpedMotionType; y`gensym199: cint): WarpedMotionType {...}{.
    borrow.}
proc `and`(x`gensym199: cint; y`gensym199: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `and`(x`gensym199, y`gensym199: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `and`(x`gensym200: WarpedMotionType; y`gensym200: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym200: int; y`gensym200: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym201: WarpedMotionType; y`gensym201: cint): WarpedMotionType {...}{.
    borrow.}
proc `xor`(x`gensym201: cint; y`gensym201: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `xor`(x`gensym201, y`gensym201: WarpedMotionType): WarpedMotionType {...}{.
    borrow.}
proc `xor`(x`gensym202: WarpedMotionType; y`gensym202: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym202: int; y`gensym202: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym203: WarpedMotionType; y`gensym203: cint): bool {...}{.borrow.}
proc `<`(x`gensym203: cint; y`gensym203: WarpedMotionType): bool {...}{.borrow.}
proc `<`(x`gensym203, y`gensym203: WarpedMotionType): bool {...}{.borrow.}
proc `<`(x`gensym204: WarpedMotionType; y`gensym204: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym204: int; y`gensym204: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym205: WarpedMotionType; y`gensym205: cint): bool {...}{.borrow.}
proc `<=`(x`gensym205: cint; y`gensym205: WarpedMotionType): bool {...}{.borrow.}
proc `<=`(x`gensym205, y`gensym205: WarpedMotionType): bool {...}{.borrow.}
proc `<=`(x`gensym206: WarpedMotionType; y`gensym206: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym206: int; y`gensym206: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym207: WarpedMotionType; y`gensym207: cint): bool {...}{.borrow.}
proc `==`(x`gensym207: cint; y`gensym207: WarpedMotionType): bool {...}{.borrow.}
proc `==`(x`gensym207, y`gensym207: WarpedMotionType): bool {...}{.borrow.}
proc `==`(x`gensym208: WarpedMotionType; y`gensym208: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym208: int; y`gensym208: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym209: WarpedMotionType; y`gensym209: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym209: cint; y`gensym209: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym209, y`gensym209: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym210: WarpedMotionType; y`gensym210: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym210: int; y`gensym210: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym211: WarpedMotionType; y`gensym211: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym211: cint; y`gensym211: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym211, y`gensym211: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym212: WarpedMotionType; y`gensym212: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym212: int; y`gensym212: WarpedMotionType): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym213, y`gensym213: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym213: WarpedMotionType; y`gensym213: cint): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym213: cint; y`gensym213: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym213: WarpedMotionType; y`gensym213: int): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym213: int; y`gensym213: WarpedMotionType): WarpedMotionType {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym213: WarpedMotionType): string {...}{.borrow.}
proc `not`(x`gensym213: WarpedMotionType): WarpedMotionType {...}{.borrow.}
proc `+`(x`gensym215: PixelLayout; y`gensym215: cint): PixelLayout {...}{.borrow.}
proc `+`(x`gensym215: cint; y`gensym215: PixelLayout): PixelLayout {...}{.borrow.}
proc `+`(x`gensym215, y`gensym215: PixelLayout): PixelLayout {...}{.borrow.}
proc `+`(x`gensym216: PixelLayout; y`gensym216: int): PixelLayout {...}{.raises: [],
    tags: [].}
proc `+`(x`gensym216: int; y`gensym216: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym217: PixelLayout; y`gensym217: cint): PixelLayout {...}{.borrow.}
proc `-`(x`gensym217: cint; y`gensym217: PixelLayout): PixelLayout {...}{.borrow.}
proc `-`(x`gensym217, y`gensym217: PixelLayout): PixelLayout {...}{.borrow.}
proc `-`(x`gensym218: PixelLayout; y`gensym218: int): PixelLayout {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym218: int; y`gensym218: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym219: PixelLayout; y`gensym219: cint): PixelLayout {...}{.borrow.}
proc `*`(x`gensym219: cint; y`gensym219: PixelLayout): PixelLayout {...}{.borrow.}
proc `*`(x`gensym219, y`gensym219: PixelLayout): PixelLayout {...}{.borrow.}
proc `*`(x`gensym220: PixelLayout; y`gensym220: int): PixelLayout {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym220: int; y`gensym220: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym221: PixelLayout; y`gensym221: cint): PixelLayout {...}{.borrow.}
proc `div`(x`gensym221: cint; y`gensym221: PixelLayout): PixelLayout {...}{.borrow.}
proc `div`(x`gensym221, y`gensym221: PixelLayout): PixelLayout {...}{.borrow.}
proc `div`(x`gensym222: PixelLayout; y`gensym222: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym222: int; y`gensym222: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym223: PixelLayout; y`gensym223: cint): PixelLayout {...}{.borrow.}
proc `mod`(x`gensym223: cint; y`gensym223: PixelLayout): PixelLayout {...}{.borrow.}
proc `mod`(x`gensym223, y`gensym223: PixelLayout): PixelLayout {...}{.borrow.}
proc `mod`(x`gensym224: PixelLayout; y`gensym224: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym224: int; y`gensym224: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym225: PixelLayout; y`gensym225: cint): PixelLayout {...}{.borrow.}
proc `shl`(x`gensym225: cint; y`gensym225: PixelLayout): PixelLayout {...}{.borrow.}
proc `shl`(x`gensym225, y`gensym225: PixelLayout): PixelLayout {...}{.borrow.}
proc `shl`(x`gensym226: PixelLayout; y`gensym226: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym226: int; y`gensym226: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym227: PixelLayout; y`gensym227: cint): PixelLayout {...}{.borrow.}
proc `shr`(x`gensym227: cint; y`gensym227: PixelLayout): PixelLayout {...}{.borrow.}
proc `shr`(x`gensym227, y`gensym227: PixelLayout): PixelLayout {...}{.borrow.}
proc `shr`(x`gensym228: PixelLayout; y`gensym228: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym228: int; y`gensym228: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym229: PixelLayout; y`gensym229: cint): PixelLayout {...}{.borrow.}
proc `or`(x`gensym229: cint; y`gensym229: PixelLayout): PixelLayout {...}{.borrow.}
proc `or`(x`gensym229, y`gensym229: PixelLayout): PixelLayout {...}{.borrow.}
proc `or`(x`gensym230: PixelLayout; y`gensym230: int): PixelLayout {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym230: int; y`gensym230: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym231: PixelLayout; y`gensym231: cint): PixelLayout {...}{.borrow.}
proc `and`(x`gensym231: cint; y`gensym231: PixelLayout): PixelLayout {...}{.borrow.}
proc `and`(x`gensym231, y`gensym231: PixelLayout): PixelLayout {...}{.borrow.}
proc `and`(x`gensym232: PixelLayout; y`gensym232: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym232: int; y`gensym232: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym233: PixelLayout; y`gensym233: cint): PixelLayout {...}{.borrow.}
proc `xor`(x`gensym233: cint; y`gensym233: PixelLayout): PixelLayout {...}{.borrow.}
proc `xor`(x`gensym233, y`gensym233: PixelLayout): PixelLayout {...}{.borrow.}
proc `xor`(x`gensym234: PixelLayout; y`gensym234: int): PixelLayout {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym234: int; y`gensym234: PixelLayout): PixelLayout {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym235: PixelLayout; y`gensym235: cint): bool {...}{.borrow.}
proc `<`(x`gensym235: cint; y`gensym235: PixelLayout): bool {...}{.borrow.}
proc `<`(x`gensym235, y`gensym235: PixelLayout): bool {...}{.borrow.}
proc `<`(x`gensym236: PixelLayout; y`gensym236: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym236: int; y`gensym236: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym237: PixelLayout; y`gensym237: cint): bool {...}{.borrow.}
proc `<=`(x`gensym237: cint; y`gensym237: PixelLayout): bool {...}{.borrow.}
proc `<=`(x`gensym237, y`gensym237: PixelLayout): bool {...}{.borrow.}
proc `<=`(x`gensym238: PixelLayout; y`gensym238: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym238: int; y`gensym238: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym239: PixelLayout; y`gensym239: cint): bool {...}{.borrow.}
proc `==`(x`gensym239: cint; y`gensym239: PixelLayout): bool {...}{.borrow.}
proc `==`(x`gensym239, y`gensym239: PixelLayout): bool {...}{.borrow.}
proc `==`(x`gensym240: PixelLayout; y`gensym240: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym240: int; y`gensym240: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym241: PixelLayout; y`gensym241: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym241: cint; y`gensym241: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym241, y`gensym241: PixelLayout): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym242: PixelLayout; y`gensym242: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym242: int; y`gensym242: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym243: PixelLayout; y`gensym243: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym243: cint; y`gensym243: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym243, y`gensym243: PixelLayout): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym244: PixelLayout; y`gensym244: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym244: int; y`gensym244: PixelLayout): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym245, y`gensym245: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym245: PixelLayout; y`gensym245: cint): PixelLayout {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym245: cint; y`gensym245: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym245: PixelLayout; y`gensym245: int): PixelLayout {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym245: int; y`gensym245: PixelLayout): PixelLayout {...}{.raises: [],
    tags: [].}
proc `$`(x`gensym245: PixelLayout): string {...}{.borrow.}
proc `not`(x`gensym245: PixelLayout): PixelLayout {...}{.borrow.}
proc `+`(x`gensym247: FrameType; y`gensym247: cint): FrameType {...}{.borrow.}
proc `+`(x`gensym247: cint; y`gensym247: FrameType): FrameType {...}{.borrow.}
proc `+`(x`gensym247, y`gensym247: FrameType): FrameType {...}{.borrow.}
proc `+`(x`gensym248: FrameType; y`gensym248: int): FrameType {...}{.raises: [],
    tags: [].}
proc `+`(x`gensym248: int; y`gensym248: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym249: FrameType; y`gensym249: cint): FrameType {...}{.borrow.}
proc `-`(x`gensym249: cint; y`gensym249: FrameType): FrameType {...}{.borrow.}
proc `-`(x`gensym249, y`gensym249: FrameType): FrameType {...}{.borrow.}
proc `-`(x`gensym250: FrameType; y`gensym250: int): FrameType {...}{.raises: [],
    tags: [].}
proc `-`(x`gensym250: int; y`gensym250: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym251: FrameType; y`gensym251: cint): FrameType {...}{.borrow.}
proc `*`(x`gensym251: cint; y`gensym251: FrameType): FrameType {...}{.borrow.}
proc `*`(x`gensym251, y`gensym251: FrameType): FrameType {...}{.borrow.}
proc `*`(x`gensym252: FrameType; y`gensym252: int): FrameType {...}{.raises: [],
    tags: [].}
proc `*`(x`gensym252: int; y`gensym252: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym253: FrameType; y`gensym253: cint): FrameType {...}{.borrow.}
proc `div`(x`gensym253: cint; y`gensym253: FrameType): FrameType {...}{.borrow.}
proc `div`(x`gensym253, y`gensym253: FrameType): FrameType {...}{.borrow.}
proc `div`(x`gensym254: FrameType; y`gensym254: int): FrameType {...}{.raises: [],
    tags: [].}
proc `div`(x`gensym254: int; y`gensym254: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym255: FrameType; y`gensym255: cint): FrameType {...}{.borrow.}
proc `mod`(x`gensym255: cint; y`gensym255: FrameType): FrameType {...}{.borrow.}
proc `mod`(x`gensym255, y`gensym255: FrameType): FrameType {...}{.borrow.}
proc `mod`(x`gensym256: FrameType; y`gensym256: int): FrameType {...}{.raises: [],
    tags: [].}
proc `mod`(x`gensym256: int; y`gensym256: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym257: FrameType; y`gensym257: cint): FrameType {...}{.borrow.}
proc `shl`(x`gensym257: cint; y`gensym257: FrameType): FrameType {...}{.borrow.}
proc `shl`(x`gensym257, y`gensym257: FrameType): FrameType {...}{.borrow.}
proc `shl`(x`gensym258: FrameType; y`gensym258: int): FrameType {...}{.raises: [],
    tags: [].}
proc `shl`(x`gensym258: int; y`gensym258: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym259: FrameType; y`gensym259: cint): FrameType {...}{.borrow.}
proc `shr`(x`gensym259: cint; y`gensym259: FrameType): FrameType {...}{.borrow.}
proc `shr`(x`gensym259, y`gensym259: FrameType): FrameType {...}{.borrow.}
proc `shr`(x`gensym260: FrameType; y`gensym260: int): FrameType {...}{.raises: [],
    tags: [].}
proc `shr`(x`gensym260: int; y`gensym260: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym261: FrameType; y`gensym261: cint): FrameType {...}{.borrow.}
proc `or`(x`gensym261: cint; y`gensym261: FrameType): FrameType {...}{.borrow.}
proc `or`(x`gensym261, y`gensym261: FrameType): FrameType {...}{.borrow.}
proc `or`(x`gensym262: FrameType; y`gensym262: int): FrameType {...}{.raises: [],
    tags: [].}
proc `or`(x`gensym262: int; y`gensym262: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym263: FrameType; y`gensym263: cint): FrameType {...}{.borrow.}
proc `and`(x`gensym263: cint; y`gensym263: FrameType): FrameType {...}{.borrow.}
proc `and`(x`gensym263, y`gensym263: FrameType): FrameType {...}{.borrow.}
proc `and`(x`gensym264: FrameType; y`gensym264: int): FrameType {...}{.raises: [],
    tags: [].}
proc `and`(x`gensym264: int; y`gensym264: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym265: FrameType; y`gensym265: cint): FrameType {...}{.borrow.}
proc `xor`(x`gensym265: cint; y`gensym265: FrameType): FrameType {...}{.borrow.}
proc `xor`(x`gensym265, y`gensym265: FrameType): FrameType {...}{.borrow.}
proc `xor`(x`gensym266: FrameType; y`gensym266: int): FrameType {...}{.raises: [],
    tags: [].}
proc `xor`(x`gensym266: int; y`gensym266: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym267: FrameType; y`gensym267: cint): bool {...}{.borrow.}
proc `<`(x`gensym267: cint; y`gensym267: FrameType): bool {...}{.borrow.}
proc `<`(x`gensym267, y`gensym267: FrameType): bool {...}{.borrow.}
proc `<`(x`gensym268: FrameType; y`gensym268: int): bool {...}{.raises: [], tags: [].}
proc `<`(x`gensym268: int; y`gensym268: FrameType): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym269: FrameType; y`gensym269: cint): bool {...}{.borrow.}
proc `<=`(x`gensym269: cint; y`gensym269: FrameType): bool {...}{.borrow.}
proc `<=`(x`gensym269, y`gensym269: FrameType): bool {...}{.borrow.}
proc `<=`(x`gensym270: FrameType; y`gensym270: int): bool {...}{.raises: [], tags: [].}
proc `<=`(x`gensym270: int; y`gensym270: FrameType): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym271: FrameType; y`gensym271: cint): bool {...}{.borrow.}
proc `==`(x`gensym271: cint; y`gensym271: FrameType): bool {...}{.borrow.}
proc `==`(x`gensym271, y`gensym271: FrameType): bool {...}{.borrow.}
proc `==`(x`gensym272: FrameType; y`gensym272: int): bool {...}{.raises: [], tags: [].}
proc `==`(x`gensym272: int; y`gensym272: FrameType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym273: FrameType; y`gensym273: cint): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym273: cint; y`gensym273: FrameType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym273, y`gensym273: FrameType): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym274: FrameType; y`gensym274: int): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym274: int; y`gensym274: FrameType): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym275: FrameType; y`gensym275: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym275: cint; y`gensym275: FrameType): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym275, y`gensym275: FrameType): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym276: FrameType; y`gensym276: int): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym276: int; y`gensym276: FrameType): bool {...}{.raises: [], tags: [].}
proc `/`(x`gensym277, y`gensym277: FrameType): FrameType {...}{.raises: [], tags: [].}
proc `/`(x`gensym277: FrameType; y`gensym277: cint): FrameType {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym277: cint; y`gensym277: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym277: FrameType; y`gensym277: int): FrameType {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym277: int; y`gensym277: FrameType): FrameType {...}{.raises: [],
    tags: [].}
proc `$`(x`gensym277: FrameType): string {...}{.borrow.}
proc `not`(x`gensym277: FrameType): FrameType {...}{.borrow.}
proc `+`(x`gensym279: ColorPrimaries; y`gensym279: cint): ColorPrimaries {...}{.
    borrow.}
proc `+`(x`gensym279: cint; y`gensym279: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `+`(x`gensym279, y`gensym279: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `+`(x`gensym280: ColorPrimaries; y`gensym280: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym280: int; y`gensym280: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym281: ColorPrimaries; y`gensym281: cint): ColorPrimaries {...}{.
    borrow.}
proc `-`(x`gensym281: cint; y`gensym281: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `-`(x`gensym281, y`gensym281: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `-`(x`gensym282: ColorPrimaries; y`gensym282: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym282: int; y`gensym282: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym283: ColorPrimaries; y`gensym283: cint): ColorPrimaries {...}{.
    borrow.}
proc `*`(x`gensym283: cint; y`gensym283: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `*`(x`gensym283, y`gensym283: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `*`(x`gensym284: ColorPrimaries; y`gensym284: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym284: int; y`gensym284: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym285: ColorPrimaries; y`gensym285: cint): ColorPrimaries {...}{.
    borrow.}
proc `div`(x`gensym285: cint; y`gensym285: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `div`(x`gensym285, y`gensym285: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `div`(x`gensym286: ColorPrimaries; y`gensym286: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym286: int; y`gensym286: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym287: ColorPrimaries; y`gensym287: cint): ColorPrimaries {...}{.
    borrow.}
proc `mod`(x`gensym287: cint; y`gensym287: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `mod`(x`gensym287, y`gensym287: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `mod`(x`gensym288: ColorPrimaries; y`gensym288: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym288: int; y`gensym288: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym289: ColorPrimaries; y`gensym289: cint): ColorPrimaries {...}{.
    borrow.}
proc `shl`(x`gensym289: cint; y`gensym289: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `shl`(x`gensym289, y`gensym289: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `shl`(x`gensym290: ColorPrimaries; y`gensym290: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym290: int; y`gensym290: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym291: ColorPrimaries; y`gensym291: cint): ColorPrimaries {...}{.
    borrow.}
proc `shr`(x`gensym291: cint; y`gensym291: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `shr`(x`gensym291, y`gensym291: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `shr`(x`gensym292: ColorPrimaries; y`gensym292: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym292: int; y`gensym292: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym293: ColorPrimaries; y`gensym293: cint): ColorPrimaries {...}{.
    borrow.}
proc `or`(x`gensym293: cint; y`gensym293: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `or`(x`gensym293, y`gensym293: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `or`(x`gensym294: ColorPrimaries; y`gensym294: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym294: int; y`gensym294: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym295: ColorPrimaries; y`gensym295: cint): ColorPrimaries {...}{.
    borrow.}
proc `and`(x`gensym295: cint; y`gensym295: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `and`(x`gensym295, y`gensym295: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `and`(x`gensym296: ColorPrimaries; y`gensym296: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym296: int; y`gensym296: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym297: ColorPrimaries; y`gensym297: cint): ColorPrimaries {...}{.
    borrow.}
proc `xor`(x`gensym297: cint; y`gensym297: ColorPrimaries): ColorPrimaries {...}{.
    borrow.}
proc `xor`(x`gensym297, y`gensym297: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `xor`(x`gensym298: ColorPrimaries; y`gensym298: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym298: int; y`gensym298: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym299: ColorPrimaries; y`gensym299: cint): bool {...}{.borrow.}
proc `<`(x`gensym299: cint; y`gensym299: ColorPrimaries): bool {...}{.borrow.}
proc `<`(x`gensym299, y`gensym299: ColorPrimaries): bool {...}{.borrow.}
proc `<`(x`gensym300: ColorPrimaries; y`gensym300: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym300: int; y`gensym300: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym301: ColorPrimaries; y`gensym301: cint): bool {...}{.borrow.}
proc `<=`(x`gensym301: cint; y`gensym301: ColorPrimaries): bool {...}{.borrow.}
proc `<=`(x`gensym301, y`gensym301: ColorPrimaries): bool {...}{.borrow.}
proc `<=`(x`gensym302: ColorPrimaries; y`gensym302: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym302: int; y`gensym302: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym303: ColorPrimaries; y`gensym303: cint): bool {...}{.borrow.}
proc `==`(x`gensym303: cint; y`gensym303: ColorPrimaries): bool {...}{.borrow.}
proc `==`(x`gensym303, y`gensym303: ColorPrimaries): bool {...}{.borrow.}
proc `==`(x`gensym304: ColorPrimaries; y`gensym304: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym304: int; y`gensym304: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym305: ColorPrimaries; y`gensym305: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym305: cint; y`gensym305: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym305, y`gensym305: ColorPrimaries): bool {...}{.raises: [], tags: [].}
proc `>`(x`gensym306: ColorPrimaries; y`gensym306: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym306: int; y`gensym306: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym307: ColorPrimaries; y`gensym307: cint): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym307: cint; y`gensym307: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym307, y`gensym307: ColorPrimaries): bool {...}{.raises: [], tags: [].}
proc `>=`(x`gensym308: ColorPrimaries; y`gensym308: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym308: int; y`gensym308: ColorPrimaries): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym309, y`gensym309: ColorPrimaries): ColorPrimaries {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym309: ColorPrimaries; y`gensym309: cint): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym309: cint; y`gensym309: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym309: ColorPrimaries; y`gensym309: int): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym309: int; y`gensym309: ColorPrimaries): ColorPrimaries {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym309: ColorPrimaries): string {...}{.borrow.}
proc `not`(x`gensym309: ColorPrimaries): ColorPrimaries {...}{.borrow.}
proc `+`(x`gensym311: TransferCharacteristics; y`gensym311: cint): TransferCharacteristics {...}{.
    borrow.}
proc `+`(x`gensym311: cint; y`gensym311: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `+`(x`gensym311, y`gensym311: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `+`(x`gensym312: TransferCharacteristics; y`gensym312: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym312: int; y`gensym312: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym313: TransferCharacteristics; y`gensym313: cint): TransferCharacteristics {...}{.
    borrow.}
proc `-`(x`gensym313: cint; y`gensym313: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `-`(x`gensym313, y`gensym313: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `-`(x`gensym314: TransferCharacteristics; y`gensym314: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym314: int; y`gensym314: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym315: TransferCharacteristics; y`gensym315: cint): TransferCharacteristics {...}{.
    borrow.}
proc `*`(x`gensym315: cint; y`gensym315: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `*`(x`gensym315, y`gensym315: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `*`(x`gensym316: TransferCharacteristics; y`gensym316: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym316: int; y`gensym316: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym317: TransferCharacteristics; y`gensym317: cint): TransferCharacteristics {...}{.
    borrow.}
proc `div`(x`gensym317: cint; y`gensym317: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `div`(x`gensym317, y`gensym317: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `div`(x`gensym318: TransferCharacteristics; y`gensym318: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym318: int; y`gensym318: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym319: TransferCharacteristics; y`gensym319: cint): TransferCharacteristics {...}{.
    borrow.}
proc `mod`(x`gensym319: cint; y`gensym319: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `mod`(x`gensym319, y`gensym319: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `mod`(x`gensym320: TransferCharacteristics; y`gensym320: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym320: int; y`gensym320: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym321: TransferCharacteristics; y`gensym321: cint): TransferCharacteristics {...}{.
    borrow.}
proc `shl`(x`gensym321: cint; y`gensym321: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `shl`(x`gensym321, y`gensym321: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `shl`(x`gensym322: TransferCharacteristics; y`gensym322: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym322: int; y`gensym322: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym323: TransferCharacteristics; y`gensym323: cint): TransferCharacteristics {...}{.
    borrow.}
proc `shr`(x`gensym323: cint; y`gensym323: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `shr`(x`gensym323, y`gensym323: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `shr`(x`gensym324: TransferCharacteristics; y`gensym324: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym324: int; y`gensym324: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym325: TransferCharacteristics; y`gensym325: cint): TransferCharacteristics {...}{.
    borrow.}
proc `or`(x`gensym325: cint; y`gensym325: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `or`(x`gensym325, y`gensym325: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `or`(x`gensym326: TransferCharacteristics; y`gensym326: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym326: int; y`gensym326: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym327: TransferCharacteristics; y`gensym327: cint): TransferCharacteristics {...}{.
    borrow.}
proc `and`(x`gensym327: cint; y`gensym327: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `and`(x`gensym327, y`gensym327: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `and`(x`gensym328: TransferCharacteristics; y`gensym328: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym328: int; y`gensym328: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym329: TransferCharacteristics; y`gensym329: cint): TransferCharacteristics {...}{.
    borrow.}
proc `xor`(x`gensym329: cint; y`gensym329: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `xor`(x`gensym329, y`gensym329: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `xor`(x`gensym330: TransferCharacteristics; y`gensym330: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym330: int; y`gensym330: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym331: TransferCharacteristics; y`gensym331: cint): bool {...}{.borrow.}
proc `<`(x`gensym331: cint; y`gensym331: TransferCharacteristics): bool {...}{.borrow.}
proc `<`(x`gensym331, y`gensym331: TransferCharacteristics): bool {...}{.borrow.}
proc `<`(x`gensym332: TransferCharacteristics; y`gensym332: int): bool {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym332: int; y`gensym332: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `<=`(x`gensym333: TransferCharacteristics; y`gensym333: cint): bool {...}{.
    borrow.}
proc `<=`(x`gensym333: cint; y`gensym333: TransferCharacteristics): bool {...}{.
    borrow.}
proc `<=`(x`gensym333, y`gensym333: TransferCharacteristics): bool {...}{.borrow.}
proc `<=`(x`gensym334: TransferCharacteristics; y`gensym334: int): bool {...}{.
    raises: [], tags: [].}
proc `<=`(x`gensym334: int; y`gensym334: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `==`(x`gensym335: TransferCharacteristics; y`gensym335: cint): bool {...}{.
    borrow.}
proc `==`(x`gensym335: cint; y`gensym335: TransferCharacteristics): bool {...}{.
    borrow.}
proc `==`(x`gensym335, y`gensym335: TransferCharacteristics): bool {...}{.borrow.}
proc `==`(x`gensym336: TransferCharacteristics; y`gensym336: int): bool {...}{.
    raises: [], tags: [].}
proc `==`(x`gensym336: int; y`gensym336: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym337: TransferCharacteristics; y`gensym337: cint): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym337: cint; y`gensym337: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym337, y`gensym337: TransferCharacteristics): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym338: TransferCharacteristics; y`gensym338: int): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym338: int; y`gensym338: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym339: TransferCharacteristics; y`gensym339: cint): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym339: cint; y`gensym339: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym339, y`gensym339: TransferCharacteristics): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym340: TransferCharacteristics; y`gensym340: int): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym340: int; y`gensym340: TransferCharacteristics): bool {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym341, y`gensym341: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym341: TransferCharacteristics; y`gensym341: cint): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym341: cint; y`gensym341: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym341: TransferCharacteristics; y`gensym341: int): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym341: int; y`gensym341: TransferCharacteristics): TransferCharacteristics {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym341: TransferCharacteristics): string {...}{.borrow.}
proc `not`(x`gensym341: TransferCharacteristics): TransferCharacteristics {...}{.
    borrow.}
proc `+`(x`gensym343: MatrixCoefficients; y`gensym343: cint): MatrixCoefficients {...}{.
    borrow.}
proc `+`(x`gensym343: cint; y`gensym343: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `+`(x`gensym343, y`gensym343: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `+`(x`gensym344: MatrixCoefficients; y`gensym344: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym344: int; y`gensym344: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym345: MatrixCoefficients; y`gensym345: cint): MatrixCoefficients {...}{.
    borrow.}
proc `-`(x`gensym345: cint; y`gensym345: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `-`(x`gensym345, y`gensym345: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `-`(x`gensym346: MatrixCoefficients; y`gensym346: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym346: int; y`gensym346: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym347: MatrixCoefficients; y`gensym347: cint): MatrixCoefficients {...}{.
    borrow.}
proc `*`(x`gensym347: cint; y`gensym347: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `*`(x`gensym347, y`gensym347: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `*`(x`gensym348: MatrixCoefficients; y`gensym348: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym348: int; y`gensym348: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym349: MatrixCoefficients; y`gensym349: cint): MatrixCoefficients {...}{.
    borrow.}
proc `div`(x`gensym349: cint; y`gensym349: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `div`(x`gensym349, y`gensym349: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `div`(x`gensym350: MatrixCoefficients; y`gensym350: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym350: int; y`gensym350: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym351: MatrixCoefficients; y`gensym351: cint): MatrixCoefficients {...}{.
    borrow.}
proc `mod`(x`gensym351: cint; y`gensym351: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `mod`(x`gensym351, y`gensym351: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `mod`(x`gensym352: MatrixCoefficients; y`gensym352: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym352: int; y`gensym352: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym353: MatrixCoefficients; y`gensym353: cint): MatrixCoefficients {...}{.
    borrow.}
proc `shl`(x`gensym353: cint; y`gensym353: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `shl`(x`gensym353, y`gensym353: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `shl`(x`gensym354: MatrixCoefficients; y`gensym354: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym354: int; y`gensym354: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym355: MatrixCoefficients; y`gensym355: cint): MatrixCoefficients {...}{.
    borrow.}
proc `shr`(x`gensym355: cint; y`gensym355: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `shr`(x`gensym355, y`gensym355: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `shr`(x`gensym356: MatrixCoefficients; y`gensym356: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym356: int; y`gensym356: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym357: MatrixCoefficients; y`gensym357: cint): MatrixCoefficients {...}{.
    borrow.}
proc `or`(x`gensym357: cint; y`gensym357: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `or`(x`gensym357, y`gensym357: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `or`(x`gensym358: MatrixCoefficients; y`gensym358: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym358: int; y`gensym358: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym359: MatrixCoefficients; y`gensym359: cint): MatrixCoefficients {...}{.
    borrow.}
proc `and`(x`gensym359: cint; y`gensym359: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `and`(x`gensym359, y`gensym359: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `and`(x`gensym360: MatrixCoefficients; y`gensym360: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym360: int; y`gensym360: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym361: MatrixCoefficients; y`gensym361: cint): MatrixCoefficients {...}{.
    borrow.}
proc `xor`(x`gensym361: cint; y`gensym361: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `xor`(x`gensym361, y`gensym361: MatrixCoefficients): MatrixCoefficients {...}{.
    borrow.}
proc `xor`(x`gensym362: MatrixCoefficients; y`gensym362: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym362: int; y`gensym362: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym363: MatrixCoefficients; y`gensym363: cint): bool {...}{.borrow.}
proc `<`(x`gensym363: cint; y`gensym363: MatrixCoefficients): bool {...}{.borrow.}
proc `<`(x`gensym363, y`gensym363: MatrixCoefficients): bool {...}{.borrow.}
proc `<`(x`gensym364: MatrixCoefficients; y`gensym364: int): bool {...}{.raises: [],
    tags: [].}
proc `<`(x`gensym364: int; y`gensym364: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym365: MatrixCoefficients; y`gensym365: cint): bool {...}{.borrow.}
proc `<=`(x`gensym365: cint; y`gensym365: MatrixCoefficients): bool {...}{.borrow.}
proc `<=`(x`gensym365, y`gensym365: MatrixCoefficients): bool {...}{.borrow.}
proc `<=`(x`gensym366: MatrixCoefficients; y`gensym366: int): bool {...}{.raises: [],
    tags: [].}
proc `<=`(x`gensym366: int; y`gensym366: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym367: MatrixCoefficients; y`gensym367: cint): bool {...}{.borrow.}
proc `==`(x`gensym367: cint; y`gensym367: MatrixCoefficients): bool {...}{.borrow.}
proc `==`(x`gensym367, y`gensym367: MatrixCoefficients): bool {...}{.borrow.}
proc `==`(x`gensym368: MatrixCoefficients; y`gensym368: int): bool {...}{.raises: [],
    tags: [].}
proc `==`(x`gensym368: int; y`gensym368: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym369: MatrixCoefficients; y`gensym369: cint): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym369: cint; y`gensym369: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym369, y`gensym369: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym370: MatrixCoefficients; y`gensym370: int): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym370: int; y`gensym370: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym371: MatrixCoefficients; y`gensym371: cint): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym371: cint; y`gensym371: MatrixCoefficients): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym371, y`gensym371: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym372: MatrixCoefficients; y`gensym372: int): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym372: int; y`gensym372: MatrixCoefficients): bool {...}{.raises: [],
    tags: [].}
proc `/`(x`gensym373, y`gensym373: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym373: MatrixCoefficients; y`gensym373: cint): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym373: cint; y`gensym373: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym373: MatrixCoefficients; y`gensym373: int): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym373: int; y`gensym373: MatrixCoefficients): MatrixCoefficients {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym373: MatrixCoefficients): string {...}{.borrow.}
proc `not`(x`gensym373: MatrixCoefficients): MatrixCoefficients {...}{.borrow.}
proc `+`(x`gensym375: ChromaSamplePosition; y`gensym375: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `+`(x`gensym375: cint; y`gensym375: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `+`(x`gensym375, y`gensym375: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `+`(x`gensym376: ChromaSamplePosition; y`gensym376: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `+`(x`gensym376: int; y`gensym376: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym377: ChromaSamplePosition; y`gensym377: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `-`(x`gensym377: cint; y`gensym377: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `-`(x`gensym377, y`gensym377: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `-`(x`gensym378: ChromaSamplePosition; y`gensym378: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `-`(x`gensym378: int; y`gensym378: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym379: ChromaSamplePosition; y`gensym379: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `*`(x`gensym379: cint; y`gensym379: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `*`(x`gensym379, y`gensym379: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `*`(x`gensym380: ChromaSamplePosition; y`gensym380: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `*`(x`gensym380: int; y`gensym380: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym381: ChromaSamplePosition; y`gensym381: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `div`(x`gensym381: cint; y`gensym381: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `div`(x`gensym381, y`gensym381: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `div`(x`gensym382: ChromaSamplePosition; y`gensym382: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `div`(x`gensym382: int; y`gensym382: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym383: ChromaSamplePosition; y`gensym383: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `mod`(x`gensym383: cint; y`gensym383: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `mod`(x`gensym383, y`gensym383: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `mod`(x`gensym384: ChromaSamplePosition; y`gensym384: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `mod`(x`gensym384: int; y`gensym384: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym385: ChromaSamplePosition; y`gensym385: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `shl`(x`gensym385: cint; y`gensym385: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `shl`(x`gensym385, y`gensym385: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `shl`(x`gensym386: ChromaSamplePosition; y`gensym386: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `shl`(x`gensym386: int; y`gensym386: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym387: ChromaSamplePosition; y`gensym387: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `shr`(x`gensym387: cint; y`gensym387: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `shr`(x`gensym387, y`gensym387: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `shr`(x`gensym388: ChromaSamplePosition; y`gensym388: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `shr`(x`gensym388: int; y`gensym388: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym389: ChromaSamplePosition; y`gensym389: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `or`(x`gensym389: cint; y`gensym389: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `or`(x`gensym389, y`gensym389: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `or`(x`gensym390: ChromaSamplePosition; y`gensym390: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `or`(x`gensym390: int; y`gensym390: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym391: ChromaSamplePosition; y`gensym391: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `and`(x`gensym391: cint; y`gensym391: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `and`(x`gensym391, y`gensym391: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `and`(x`gensym392: ChromaSamplePosition; y`gensym392: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `and`(x`gensym392: int; y`gensym392: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym393: ChromaSamplePosition; y`gensym393: cint): ChromaSamplePosition {...}{.
    borrow.}
proc `xor`(x`gensym393: cint; y`gensym393: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `xor`(x`gensym393, y`gensym393: ChromaSamplePosition): ChromaSamplePosition {...}{.
    borrow.}
proc `xor`(x`gensym394: ChromaSamplePosition; y`gensym394: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `xor`(x`gensym394: int; y`gensym394: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym395: ChromaSamplePosition; y`gensym395: cint): bool {...}{.borrow.}
proc `<`(x`gensym395: cint; y`gensym395: ChromaSamplePosition): bool {...}{.borrow.}
proc `<`(x`gensym395, y`gensym395: ChromaSamplePosition): bool {...}{.borrow.}
proc `<`(x`gensym396: ChromaSamplePosition; y`gensym396: int): bool {...}{.
    raises: [], tags: [].}
proc `<`(x`gensym396: int; y`gensym396: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `<=`(x`gensym397: ChromaSamplePosition; y`gensym397: cint): bool {...}{.borrow.}
proc `<=`(x`gensym397: cint; y`gensym397: ChromaSamplePosition): bool {...}{.borrow.}
proc `<=`(x`gensym397, y`gensym397: ChromaSamplePosition): bool {...}{.borrow.}
proc `<=`(x`gensym398: ChromaSamplePosition; y`gensym398: int): bool {...}{.
    raises: [], tags: [].}
proc `<=`(x`gensym398: int; y`gensym398: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `==`(x`gensym399: ChromaSamplePosition; y`gensym399: cint): bool {...}{.borrow.}
proc `==`(x`gensym399: cint; y`gensym399: ChromaSamplePosition): bool {...}{.borrow.}
proc `==`(x`gensym399, y`gensym399: ChromaSamplePosition): bool {...}{.borrow.}
proc `==`(x`gensym400: ChromaSamplePosition; y`gensym400: int): bool {...}{.
    raises: [], tags: [].}
proc `==`(x`gensym400: int; y`gensym400: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym401: ChromaSamplePosition; y`gensym401: cint): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym401: cint; y`gensym401: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym401, y`gensym401: ChromaSamplePosition): bool {...}{.raises: [],
    tags: [].}
proc `>`(x`gensym402: ChromaSamplePosition; y`gensym402: int): bool {...}{.
    raises: [], tags: [].}
proc `>`(x`gensym402: int; y`gensym402: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym403: ChromaSamplePosition; y`gensym403: cint): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym403: cint; y`gensym403: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym403, y`gensym403: ChromaSamplePosition): bool {...}{.raises: [],
    tags: [].}
proc `>=`(x`gensym404: ChromaSamplePosition; y`gensym404: int): bool {...}{.
    raises: [], tags: [].}
proc `>=`(x`gensym404: int; y`gensym404: ChromaSamplePosition): bool {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym405, y`gensym405: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym405: ChromaSamplePosition; y`gensym405: cint): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym405: cint; y`gensym405: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym405: ChromaSamplePosition; y`gensym405: int): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `/`(x`gensym405: int; y`gensym405: ChromaSamplePosition): ChromaSamplePosition {...}{.
    raises: [], tags: [].}
proc `$`(x`gensym405: ChromaSamplePosition): string {...}{.borrow.}
proc `not`(x`gensym405: ChromaSamplePosition): ChromaSamplePosition {...}{.borrow.}
proc picture_unref(p: ptr cPicture) {...}{.importc: "dav1d_picture_unref", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Release reference to a picture.
proc data_create(data: ptr cData; sz: uint): ptr uint8 {...}{.
    importc: "dav1d_data_create", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Allocate data.
   
   @param data Input context.
   @param   sz Size of the data that should be allocated.
   
   @return Pointer to the allocated buffer on success. NULL on error.
proc data_wrap(data: ptr cData; buf: ptr uint8; sz: uint;
               free_callback: proc (buf: ptr uint8; cookie: pointer) {...}{.cdecl.};
               cookie: pointer): cint {...}{.importc: "dav1d_data_wrap", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Wrap an existing data array.
   
   @param          data Input context.
   @param           buf The data to be wrapped.
   @param            sz Size of the data.
   @param free_callback Function to be called when we release our last
                        reference to this data. In this callback, $buf will be
                        the $buf argument to this function, and $cookie will
                        be the $cookie input argument to this function.
   @param        cookie Opaque parameter passed to free_callback().
   
   @return 0 on success. A negative DAV1D_ERR value on error.
proc data_wrap_user_data(data: ptr cData; user_data: ptr uint8; free_callback: proc (
    user_data: ptr uint8; cookie: pointer) {...}{.cdecl.}; cookie: pointer): cint {...}{.
    importc: "dav1d_data_wrap_user_data", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Wrap a user-provided data pointer into a reference counted object.
   
   data->m.user_data field will initialized to wrap the provided $user_data
   pointer.
   
   $free_callback will be called on the same thread that released the last
   reference. If frame threading is used, make sure $free_callback is
   thread-safe.
   
   @param          data Input context.
   @param     user_data The user data to be wrapped.
   @param free_callback Function to be called when we release our last
                        reference to this data. In this callback, $user_data
                        will be the $user_data argument to this function, and
                        $cookie will be the $cookie input argument to this
                        function.
   @param        cookie Opaque parameter passed to $free_callback.
   
   @return 0 on success. A negative DAV1D_ERR value on error.
proc data_unref(data: ptr cData) {...}{.importc: "dav1d_data_unref", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Free the data reference.
   
   The reference count for data->m.user_data will be decremented (if it has been
   initialized with dav1d_data_wrap_user_data). The $data object will be memset
   to 0.
   
   @param data Input context.
proc version(): cstring {...}{.importc: "dav1d_version", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Get library version.
proc default_settings(s: ptr Settings) {...}{.importc: "dav1d_default_settings",
    cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Initialize settings to default values.
   
   @param s Input settings context.
proc open(c_out: ptr ptr Context; s: ptr Settings): cint {...}{.
    importc: "dav1d_open", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Allocate and open a decoder instance.
   
   @param c_out The decoder instance to open.c_out will be set to the
                allocated context.
   @param     s Input settings context.
   
   @note The context must be freed using dav1d_close() when decoding is
         finished.
   
   @return 0 on success, or < 0 (a negative DAV1D_ERR code) on error.
proc parse_sequence_header(out: ptr SequenceHeader; buf: ptr uint8; sz: uint): cint {...}{.
    importc: "dav1d_parse_sequence_header", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Parse a Sequence Header OBU from bitstream data.
   
   @param out Output Sequence Header.
   @param buf The data to be parser.
   @param sz  Size of the data.
   
   @return 0 on success, or < 0 (a negative DAV1D_ERR code) on error.
   
   @note It is safe to feed this function data containing other OBUs than a
         Sequence Header, as they will simply be ignored. If there is more than
         one Sequence Header OBU present, only the last will be returned.
proc send_data(c: ptr Context; in: ptr cData): cint {...}{.
    importc: "dav1d_send_data", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Feed bitstream data to the decoder.
   
   @param   c Input decoder instance.
   @param  in Input bitstream data. On success, ownership of the reference is
              passed to the library.
   
   @return
           0: Success, and the data was consumed.
    DAV1D_ERR(EAGAIN): The data can't be consumed. dav1d_get_picture() should
                       be called to get one or more frames before the function
                       can consume new data.
    other negative DAV1D_ERR codes: Error during decoding or because of invalid
                                    passed-in arguments.
proc get_picture(c: ptr Context; out: ptr cPicture): cint {...}{.
    importc: "dav1d_get_picture", cdecl,
    header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Return a decoded picture.
   
   @param   c Input decoder instance.
   @param out Output frame. The caller assumes ownership of the returned
              reference.
   
   @return
           0: Success, and a frame is returned.
    DAV1D_ERR(EAGAIN): Not enough data to output a frame. dav1d_send_data()
                       should be called with new input.
    other negative DAV1D_ERR codes: Error during decoding or because of invalid
                                    passed-in arguments.
   
   @note To drain buffered frames from the decoder (i.e. on end of stream),
         call this function until it returns DAV1D_ERR(EAGAIN).
   
   @code{.c}
    Dav1dData data = { 0 };
    Dav1dPicture p = { 0 };
    int res;
    
    read_data(&data);
    do {
        res = dav1d_send_data(c, &data);
         Keep going even if the function can't consume the current data
           packet. It eventually will after one or more frames have been
           returned in this loop.
        if (res < 0 && res != DAV1D_ERR(EAGAIN))
            free_and_abort();
        res = dav1d_get_picture(c, &p);
        if (res < 0) {
            if (res != DAV1D_ERR(EAGAIN))
                free_and_abort();
        } else
            output_and_unref_picture(&p);
     Stay in the loop as long as there's data to consume.
    } while (data.sz || read_data(&data) == SUCCESS);
     
     Handle EOS by draining all buffered frames.
    do {
        res = dav1d_get_picture(c, &p);
        if (res < 0) {
            if (res != DAV1D_ERR(EAGAIN))
                free_and_abort();
        } else
            output_and_unref_picture(&p);
    } while (res == 0);
   @endcode
proc close(c_out: ptr ptr Context) {...}{.importc: "dav1d_close", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Close a decoder instance and free all associated memory.
   
   @param c_out The decoder instance to close.c_out will be set to NULL.
proc flush(c: ptr Context) {...}{.importc: "dav1d_flush", cdecl, header: "/home/carlo/.cache/nim/nimterop/dav1d/include/dav1d/dav1d.h".}
  Flush all delayed frames in decoder and clear internal decoder state,
   to be used when seeking.
   
   @param c Input decoder instance.
   
   @note Decoding will start only after a valid sequence header OBU is
         delivered to dav1d_send_data().