The compiler hates me. pasted by zilti on Thu Nov 24 16:58:43 2016
structs.c:490:16: error: ‘*format’ is a pointer; did you mean to use ‘->’? C_return(format->fmt.pix); ^
Context. pasted by zilti on Thu Nov 24 17:00:23 2016
(define v4l2-format-fmt-pix
(foreign-lambda* v4l2-pix-format
(((c-pointer v4l2-format) format)) "C_return(format->fmt.pix);"))
More context pasted by zilti on Thu Nov 24 17:07:45 2016
(define v4l2-format-fmt-pix (foreign-lambda* v4l2-pix-format (((c-pointer v4l2-format) format)) "C_return(format.fmt.pix);")) (define-foreign-record-type (v4l2-format "struct v4l2_format") (unsigned-int32 type v4l2-format-type set-v4l2-format-type!)) (define-foreign-record-type (v4l2-pix-format "struct v4l2_pix_format") (unsigned-int32 width v4l2-pix-format-width set-v4l2-pix-format-width!) (unsigned-int32 height v4l2-pix-format-height set-v4l2-pix-format-height!) (unsigned-int32 pixelformat v4l2-pix-format-pixelformat set-v4l2-pix-format-pixelformat!) (unsigned-int32 field v4l2-pix-format-field set-v4l2-pix-format-field!) (unsigned-int32 bytesperline v4l2-pix-fomat-bytesperline set-v4l2-pix-format-bytesperline!) (unsigned-int32 sizeimage v4l2-pix-format-sizeimage set-v4l2-pix-format-sizeimage!) (unsigned-int32 colorspace v4l2-pix-format-colorspace set-v4l2-pix-format-colorspace!) (unsigned-int32 priv v4l2-pix-format-priv set-v4l2-pix-format-priv!) (unsigned-int32 flags v4l2-pix-format-flags set-v4l2-pix-format-flags!) (unsigned-int32 ycbcr_enc v4l2-pix-format-ycbcr-enc set-v4l2-pix-format-ycbcr-enc!) (unsigned-int32 quantization v4l2-pix-format-quantization set-v4l2-pix-format-quantization!) (unsigned-int32 xfer_func v4l2-pix-format-xfer-func set-v4l2-pix-format-xfer-func!))
Header definition pasted by zilti on Thu Nov 24 17:27:05 2016
struct v4l2_format { __u32 type; union { struct v4l2_pix_format pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */ struct v4l2_pix_format_mplane pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */ struct v4l2_window win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */ struct v4l2_vbi_format vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */ struct v4l2_sliced_vbi_format sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */ struct v4l2_sdr_format sdr; /* V4L2_BUF_TYPE_SDR_CAPTURE */ __u8 raw_data[200]; /* user-defined */ } fmt; };
The whole thing pasted by zilti on Thu Nov 24 17:46:44 2016
(import foreign) (require-extension foreigners) (require-extension srfi-13) #> #include#include #include #include #include #include #include #include <# (define-foreign-enum-type (v4l2_buf_type int) (v4l2_buf_type->int int->v4l2_buf_type) (V4L2_BUF_TYPE_VIDEO_CAPTURE V4L2_BUF_TYPE_VIDEO_CAPTURE 1) (V4L2_BUF_TYPE_VIDEO_OUTPUT V4L2_BUF_TYPE_VIDEO_OUTPUT 2) (V4L2_BUF_TYPE_VIDEO_OVERLAY V4L2_BUF_TYPE_VIDEO_OVERLAY 3) (V4L2_BUF_TYPE_VBI_CAPTURE V4L2_BUF_TYPE_VBI_CAPTURE 4) (V4L2_BUF_TYPE_VBI_OUTPUT V4L2_BUF_TYPE_VBI_OUTPUT 5) (V4L2_BUF_TYPE_SLICED_VBI_CAPTURE V4L2_BUF_TYPE_SLICED_VBI_CAPTURE 6) (V4L2_BUF_TYPE_SLICED_VBI_OUTPUT V4L2_BUF_TYPE_SLICED_VBI_OUTPUT 7) (V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY 8) (V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE 9) (V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE 10) (V4L2_BUF_TYPE_SDR_CAPTURE V4L2_BUF_TYPE_SDR_CAPTURE 11) (V4L2_BUF_TYPE_SDR_OUTPUT V4L2_BUF_TYPE_SDR_OUTPUT 12)) (define-foreign-enum-type (v4l2_memory int) (v4l2_memory->int int->v4l2_memory) (V4L2_MEMORY_MMAP V4L2_MEMORY_MMAP 1) (V4L2_MEMORY_USERPTR V4L2_MEMORY_USERPTR 2) (V4L2_MEMORY_OVERLAY V4L2_MEMORY_OVERLAY 3) (V4L2_MEMORY_DMABUF V4L2_MEMORY_DMABUF 4)) (define-foreign-record-type buffer ((c-pointer void) start get-buffer-start set-buffer-start!) (size_t length get-buffer-length set-buffer-length!)) (define-foreign-record-type (v4l2-rect "struct v4l2_rect") (int32 left v4l2-rect-left set-v4l2-rect-left!) (int32 top v4l2-rect-top set-v4l2-rect-top!) (unsigned-int32 width v4l2-rect-width set-v4l2-rect-width!) (unsigned-int32 height v4l2-rect-height set-v4l2-rect-height!)) (define-foreign-record-type (v4l2-fract "struct v4l2_fract") (unsigned-int32 numerator v4l2-fract-numerator set-v4l2-fract-numerator!) (unsigned-int32 denominator v4l2-fract-denominator set-v4l2-fract-denominator!)) (define-foreign-record-type (v4l2-pix-format "struct v4l2_pix_format") (unsigned-int32 width v4l2-pix-format-width set-v4l2-pix-format-width!) (unsigned-int32 height v4l2-pix-format-height set-v4l2-pix-format-height!) (unsigned-int32 pixelformat v4l2-pix-format-pixelformat set-v4l2-pix-format-pixelformat!) (unsigned-int32 field v4l2-pix-format-field set-v4l2-pix-format-field!) (unsigned-int32 bytesperline v4l2-pix-fomat-bytesperline set-v4l2-pix-format-bytesperline!) (unsigned-int32 sizeimage v4l2-pix-format-sizeimage set-v4l2-pix-format-sizeimage!) (unsigned-int32 colorspace v4l2-pix-format-colorspace set-v4l2-pix-format-colorspace!) (unsigned-int32 priv v4l2-pix-format-priv set-v4l2-pix-format-priv!) (unsigned-int32 flags v4l2-pix-format-flags set-v4l2-pix-format-flags!) (unsigned-int32 ycbcr_enc v4l2-pix-format-ycbcr-enc set-v4l2-pix-format-ycbcr-enc!) (unsigned-int32 quantization v4l2-pix-format-quantization set-v4l2-pix-format-quantization!) (unsigned-int32 xfer_func v4l2-pix-format-xfer-func set-v4l2-pix-format-xfer-func!)) (define v4l2-format-fmt-pix (foreign-lambda* v4l2-pix-format ((c-pointer format)) "C_return(((struct v4l2_format *)format)->fmt.pix);")) (define-foreign-record-type (v4l2-format "struct v4l2_format") ((union "fmt") fmt v4l2-format-fmt) (unsigned-int32 type v4l2-format-type set-v4l2-format-type!)) (define-foreign-record-type (v4l2-capability "struct v4l2_capability") ((c-pointer u8vector) driver v4l2-capability-driver) ((c-pointer u8vector) card v4l2-capability-card) ((c-pointer u8vector) bus_info v4l2-capability-bus-info) (unsigned-int32 version v4l2-capability-version) (unsigned-int32 capabilities v4l2-capability-capabilities) (unsigned-int32 device_caps v4l2-capability-device-caps)) (define-foreign-record-type (v4l2-cropcap "struct v4l2_cropcap") (unsigned-int32 type v4l2-cropcap-type set-v4l2-cropcap-type!) ((struct v4l2-rect) bounds v4l2-cropcap-bounds set-v4l2-cropcap-bounds!) ((struct v4l2-rect) defrect v4l2-cropcap-defrect set-v4l2-cropcap-defrect!) ((struct v4l2-fract) pixelaspect v4l2-cropcap-pixelaspect set-v4l2-copcap-pixelaspect!)) (define-foreign-record-type (v4l2-crop "struct v4l2_crop") (unsigned-int32 type v4l2-crop-type set-v4l2-type!) ((struct v4l2-rect) c v4l2-crop-c set-v4l2-crop-c!)) (define-foreign-record-type (v4l2-requestbuffers "struct v4l2_requestbuffers") (unsigned-int32 count v4l2-requestbuffers-count set-v4l2-requestbuffers-count!) (unsigned-int32 type v4l2-requestbuffers-type set-v4l2-requestbuffers-type!) (unsigned-int32 memory v4l2-requestbuffers-memory set-v4l2-requestbuffers-memory!)) (define v4l2-buffer-m-offset (foreign-lambda* unsigned-int32 ((v4l2-buffer buf)) "C_return(buf->m.offset);")) (define-foreign-record-type (v4l2-buffer "struct v4l2_buffer") (unsigned-int32 index v4l2-buffer-index set-v4l2-buffer-index!) (unsigned-int32 type v4l2-buffer-type set-v4l2-buffer-type!) (unsigned-int32 bytesused v4l2-buffer-bytesused) (unsigned-int32 flags v4l2-buffer-flags set-v4l2-buffer-flags!) (unsigned-int32 field v4l2-buffer-field) ((struct timeval) timestamp v4l2-buffer-timestamp) ((struct v4l2-timecode) timecode v4l2-buffer-timecode) (unsigned-int32 memory v4l2-buffer-memory) (unsigned-int32 length v4l2-buffer-length))
different error pasted by elf on Thu Nov 24 17:46:47 2016
mint@mint ~ $ csc vidtest.scm Error: illegal foreign return type `v4l2-pix-format' Error: shell command terminated with non-zero exit status 256: '/usr/local/bin/chicken' 'vidtest.scm' -output-file 'vidtest.c' code: #> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <linux/videodev2.h> <# ;(define-foreign-record-type (v4l2-format "struct v4l2_format") ; (unsigned-int32 type v4l2-format-type set-v4l2-format-type!)) (define-foreign-record-type (v4l2-pix-format "struct v4l2_pix_format") (unsigned-int32 width v4l2-pix-format-width set-v4l2-pix-format-width!) (unsigned-int32 height v4l2-pix-format-height set-v4l2-pix-format-height!) (unsigned-int32 pixelformat v4l2-pix-format-pixelformat set-v4l2-pix-format-pixelformat!) (unsigned-int32 field v4l2-pix-format-field set-v4l2-pix-format-field!) (unsigned-int32 bytesperline v4l2-pix-fomat-bytesperline set-v4l2-pix-format-bytesperline!) (unsigned-int32 sizeimage v4l2-pix-format-sizeimage set-v4l2-pix-format-sizeimage!) (unsigned-int32 colorspace v4l2-pix-format-colorspace set-v4l2-pix-format-colorspace!) (unsigned-int32 priv v4l2-pix-format-priv set-v4l2-pix-format-priv!) (unsigned-int32 flags v4l2-pix-format-flags set-v4l2-pix-format-flags!) (unsigned-int32 ycbcr_enc v4l2-pix-format-ycbcr-enc set-v4l2-pix-format-ycbcr-enc!) (unsigned-int32 quantization v4l2-pix-format-quantization set-v4l2-pix-format-quantization!) (unsigned-int32 xfer_func v4l2-pix-format-xfer-func set-v4l2-pix-format-xfer-func!)) (define v4l2-format-fmt-pix (foreign-lambda* v4l2-pix-format ((c-pointer format)) "C_return(((struct v2l2_format *)format)->fmt.pix);"))
the includes added by zilti on Thu Nov 24 17:49:10 2016
#> #include <errno.h> #include <stdint.h> #include <stdlib.h> #include <string.h> #include <stdio.h> #include <sys/mman.h> #include <libv4l2.h> #include <linux/videodev2.h> <#