summaryrefslogtreecommitdiff
path: root/v4l2-spec/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'v4l2-spec/Makefile')
-rw-r--r--v4l2-spec/Makefile496
1 files changed, 496 insertions, 0 deletions
diff --git a/v4l2-spec/Makefile b/v4l2-spec/Makefile
new file mode 100644
index 000000000..db3d71974
--- /dev/null
+++ b/v4l2-spec/Makefile
@@ -0,0 +1,496 @@
+# Also update in v4l2.sgml!
+VERSION = 0.24
+
+SGMLS = \
+ biblio.sgml \
+ capture.c.sgml \
+ common.sgml \
+ compat.sgml \
+ controls.sgml \
+ dev-capture.sgml \
+ dev-codec.sgml \
+ dev-effect.sgml \
+ dev-osd.sgml \
+ dev-output.sgml \
+ dev-overlay.sgml \
+ dev-radio.sgml \
+ dev-raw-vbi.sgml \
+ dev-rds.sgml \
+ dev-sliced-vbi.sgml \
+ dev-teletext.sgml \
+ driver.sgml \
+ entities.sgml \
+ fdl-appendix.sgml \
+ func-close.sgml \
+ func-ioctl.sgml \
+ func-mmap.sgml \
+ func-munmap.sgml \
+ func-open.sgml \
+ func-poll.sgml \
+ func-read.sgml \
+ func-select.sgml \
+ func-write.sgml \
+ indices.sgml \
+ io.sgml \
+ pixfmt-grey.sgml \
+ pixfmt-nv12.sgml \
+ pixfmt-packed-rgb.sgml \
+ pixfmt-packed-yuv.sgml \
+ pixfmt-sbggr16.sgml \
+ pixfmt-sbggr8.sgml \
+ pixfmt-uyvy.sgml \
+ pixfmt-y16.sgml \
+ pixfmt-y41p.sgml \
+ pixfmt-yuv410.sgml \
+ pixfmt-yuv411p.sgml \
+ pixfmt-yuv420.sgml \
+ pixfmt-yuv422p.sgml \
+ pixfmt-yuyv.sgml \
+ pixfmt.sgml \
+ v4l2.sgml \
+ videodev2.h.sgml \
+ vidioc-cropcap.sgml \
+ vidioc-dbg-g-register.sgml \
+ vidioc-encoder-cmd.sgml \
+ vidioc-enum-fmt.sgml \
+ vidioc-enum-frameintervals.sgml \
+ vidioc-enum-framesizes.sgml \
+ vidioc-enumaudio.sgml \
+ vidioc-enumaudioout.sgml \
+ vidioc-enuminput.sgml \
+ vidioc-enumoutput.sgml \
+ vidioc-enumstd.sgml \
+ vidioc-g-audio.sgml \
+ vidioc-g-audioout.sgml \
+ vidioc-g-chip-ident.sgml \
+ vidioc-g-crop.sgml \
+ vidioc-g-ctrl.sgml \
+ vidioc-g-enc-index.sgml \
+ vidioc-g-ext-ctrls.sgml \
+ vidioc-g-fbuf.sgml \
+ vidioc-g-fmt.sgml \
+ vidioc-g-frequency.sgml \
+ vidioc-g-input.sgml \
+ vidioc-g-jpegcomp.sgml \
+ vidioc-g-modulator.sgml \
+ vidioc-g-output.sgml \
+ vidioc-g-parm.sgml \
+ vidioc-g-priority.sgml \
+ vidioc-g-sliced-vbi-cap.sgml \
+ vidioc-g-std.sgml \
+ vidioc-g-tuner.sgml \
+ vidioc-log-status.sgml \
+ vidioc-overlay.sgml \
+ vidioc-qbuf.sgml \
+ vidioc-querybuf.sgml \
+ vidioc-querycap.sgml \
+ vidioc-queryctrl.sgml \
+ vidioc-querystd.sgml \
+ vidioc-reqbufs.sgml \
+ vidioc-streamon.sgml \
+
+PDFPICS = \
+ crop.pdf \
+ fieldseq_bt.pdf \
+ fieldseq_tb.pdf \
+ vbi_525.pdf \
+ vbi_625.pdf \
+ vbi_hsync.pdf
+
+GIFPICS = \
+ crop.gif \
+ fieldseq_bt.gif \
+ fieldseq_tb.gif \
+ vbi_525.gif \
+ vbi_625.gif \
+ vbi_hsync.gif
+
+# Some Jade warnings for authors.
+WARN =
+#WARN = -w all -w duplicate -w net
+
+# Stylesheet customization.
+CUSTOM_HTML = --dsl custom.dsl\#html
+CUSTOM_PRINT = --dsl custom.dsl\#print
+
+all: capture html-single pdf html
+
+html: html-build.stamp
+
+html-single: html-single-build.stamp
+
+pdf: pdf-build.stamp
+
+FUNCS = \
+ close \
+ ioctl \
+ mmap \
+ munmap \
+ open \
+ poll \
+ read \
+ select \
+ write \
+
+IOCTLS = \
+ VIDIOC_CROPCAP \
+ VIDIOC_DBG_G_REGISTER \
+ VIDIOC_DBG_S_REGISTER \
+ VIDIOC_DQBUF \
+ VIDIOC_ENCODER_CMD \
+ VIDIOC_ENUMAUDIO \
+ VIDIOC_ENUMAUDOUT \
+ VIDIOC_ENUMINPUT \
+ VIDIOC_ENUMOUTPUT \
+ VIDIOC_ENUMSTD \
+ VIDIOC_ENUM_FMT \
+ VIDIOC_ENUM_FRAMEINTERVALS \
+ VIDIOC_ENUM_FRAMESIZES \
+ VIDIOC_G_AUDIO \
+ VIDIOC_G_AUDOUT \
+ VIDIOC_G_CHIP_IDENT \
+ VIDIOC_G_CROP \
+ VIDIOC_G_CTRL \
+ VIDIOC_G_ENC_INDEX \
+ VIDIOC_G_EXT_CTRLS \
+ VIDIOC_G_FBUF \
+ VIDIOC_G_FMT \
+ VIDIOC_G_FREQUENCY \
+ VIDIOC_G_INPUT \
+ VIDIOC_G_JPEGCOMP \
+ VIDIOC_G_MPEGCOMP \
+ VIDIOC_G_MODULATOR \
+ VIDIOC_G_OUTPUT \
+ VIDIOC_G_PARM \
+ VIDIOC_G_PRIORITY \
+ VIDIOC_G_SLICED_VBI_CAP \
+ VIDIOC_G_STD \
+ VIDIOC_G_TUNER \
+ VIDIOC_LOG_STATUS \
+ VIDIOC_OVERLAY \
+ VIDIOC_QBUF \
+ VIDIOC_QUERYBUF \
+ VIDIOC_QUERYCAP \
+ VIDIOC_QUERYCTRL \
+ VIDIOC_QUERYMENU \
+ VIDIOC_QUERYSTD \
+ VIDIOC_REQBUFS \
+ VIDIOC_STREAMOFF \
+ VIDIOC_STREAMON \
+ VIDIOC_S_AUDIO \
+ VIDIOC_S_AUDOUT \
+ VIDIOC_S_CROP \
+ VIDIOC_S_CTRL \
+ VIDIOC_S_EXT_CTRLS \
+ VIDIOC_S_FBUF \
+ VIDIOC_S_FMT \
+ VIDIOC_S_FREQUENCY \
+ VIDIOC_S_INPUT \
+ VIDIOC_S_JPEGCOMP \
+ VIDIOC_S_MPEGCOMP \
+ VIDIOC_S_MODULATOR \
+ VIDIOC_S_OUTPUT \
+ VIDIOC_S_PARM \
+ VIDIOC_S_PRIORITY \
+ VIDIOC_S_STD \
+ VIDIOC_S_TUNER \
+ VIDIOC_TRY_ENCODER_CMD \
+ VIDIOC_TRY_EXT_CTRLS \
+ VIDIOC_TRY_FMT \
+
+TYPES = \
+ v4l2_std_id \
+
+ENUMS = \
+ v4l2_buf_type \
+ v4l2_colorspace \
+ v4l2_ctrl_type \
+ v4l2_field \
+ v4l2_frmivaltypes \
+ v4l2_frmsizetypes \
+ v4l2_memory \
+ v4l2_priority \
+ v4l2_tuner_type \
+
+STRUCTS = \
+ v4l2_audio \
+ v4l2_audioout \
+ v4l2_buffer \
+ v4l2_capability \
+ v4l2_captureparm \
+ v4l2_chip_ident \
+ v4l2_clip \
+ v4l2_control \
+ v4l2_crop \
+ v4l2_cropcap \
+ v4l2_enc_idx \
+ v4l2_enc_idx_entry \
+ v4l2_encoder_cmd \
+ v4l2_ext_control \
+ v4l2_ext_controls \
+ v4l2_fmtdesc \
+ v4l2_format \
+ v4l2_fract \
+ v4l2_framebuffer \
+ v4l2_frequency \
+ v4l2_frmival_stepwise \
+ v4l2_frmivalenum \
+ v4l2_frmsize_discrete \
+ v4l2_frmsize_stepwise \
+ v4l2_frmsizeenum \
+ v4l2_input \
+ v4l2_jpegcompression \
+ v4l2_modulator \
+ v4l2_output \
+ v4l2_outputparm \
+ v4l2_pix_format \
+ v4l2_queryctrl \
+ v4l2_querymenu \
+ v4l2_rect \
+ v4l2_register \
+ v4l2_requestbuffers \
+ v4l2_sliced_vbi_cap \
+ v4l2_sliced_vbi_data \
+ v4l2_sliced_vbi_format \
+ v4l2_standard \
+ v4l2_streamparm \
+ v4l2_timecode \
+ v4l2_tuner \
+ v4l2_vbi_format \
+ v4l2_window \
+
+ERRORS = \
+ EACCES \
+ EAGAIN \
+ EBADF \
+ EBUSY \
+ EFAULT \
+ EIO \
+ EINTR \
+ EINVAL \
+ ENFILE \
+ ENOMEM \
+ ENOTTY \
+ ENXIO \
+ EMFILE \
+ EPERM \
+ ERANGE \
+
+ESCAPE = \
+ -e "s/&/\\&/g" \
+ -e "s/</\\&lt;/g" \
+ -e "s/>/\\&gt;/g"
+
+# Generate references to these structs in videodev2.h.sgml.
+DOCUMENTED = \
+ -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
+ -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\) /<link linkend=\"\1\">\1<\/link> /g" \
+ -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta"
+
+# We don't generate references to these structs in videodev2.h.sgml
+# because they are undocumented.
+UNDOCUMENTED = \
+ $(shell for i in \
+ v4l2_bitrate \
+ v4l2_bitrate_mode \
+ v4l2_exposure_auto_type \
+ v4l2_mpeg_aspectratio \
+ v4l2_mpeg_aspectratio \
+ v4l2_mpeg_audio_crc \
+ v4l2_mpeg_audio_emphasis \
+ v4l2_mpeg_audio_encoding \
+ v4l2_mpeg_audio_l1_bitrate \
+ v4l2_mpeg_audio_l2_bitrate \
+ v4l2_mpeg_audio_l3_bitrate \
+ v4l2_mpeg_audio_mode \
+ v4l2_mpeg_audio_mode_extension \
+ v4l2_mpeg_audio_sampling_freq \
+ v4l2_mpeg_audiotype \
+ v4l2_mpeg_audiotype \
+ v4l2_mpeg_compression \
+ v4l2_mpeg_compression \
+ v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type \
+ v4l2_mpeg_cx2341x_video_luma_spatial_filter_type \
+ v4l2_mpeg_cx2341x_video_median_filter_type \
+ v4l2_mpeg_cx2341x_video_spatial_filter_mode \
+ v4l2_mpeg_cx2341x_video_temporal_filter_mode \
+ v4l2_mpeg_stream_type \
+ v4l2_mpeg_stream_vbi_fmt \
+ v4l2_mpeg_streamtype \
+ v4l2_mpeg_streamtype \
+ v4l2_mpeg_video_aspect \
+ v4l2_mpeg_video_bitrate_mode \
+ v4l2_mpeg_video_encoding \
+ v4l2_mpeg_videotype \
+ v4l2_mpeg_videotype \
+ v4l2_power_line_frequency \
+ v4l2_prio_state \
+ ; do echo "-e \"s/ *$$i/\\\\&nbsp;$$i/g\""; done)
+
+capture.c.sgml: ../v4l2-apps/test/capture_example.c Makefile
+ echo "<programlisting>" > $@
+ expand --tabs=8 < $< | \
+ sed $(ESCAPE) $(UNDOCUMENTED) $(DOCUMENTED) | \
+ sed 's/i\.e\./&ie;/' >> $@
+ echo "</programlisting>" >> $@
+
+videodev2.h.sgml: ../linux/include/linux/videodev2.h Makefile
+ echo "<programlisting>" > $@
+ expand --tabs=8 < $< | \
+ sed $(ESCAPE) $(UNDOCUMENTED) $(DOCUMENTED) | \
+ sed 's/i\.e\./&ie;/' >> $@
+ echo "</programlisting>" >> $@
+
+checks:
+ # Warn about <constant>FOO-BAR</constant> which should be
+ # &FOO-BAR; or <constant>FOO_BAR</constant>.
+ (! grep '>[A-Z]+-[A-Z-]+<' *.sgml)
+ # Don't end a refpurpose blob with a period.
+ (! grep '\.</refpurpose>' *.sgml)
+ # Catch typos in error code names.
+ errs=`grep '<errorcode>[^<]\+</errorcode>' *.sgml | \
+ sed 's/.*<errorcode>//;s/<\/errorcode>.*//' | sort -u` ; \
+ for err in $$errs; do \
+ if ! echo $(ERRORS) | grep -q $$err ; then \
+ echo Unknown error code $$err ; exit 1 ; \
+ fi ; \
+ done
+ # Use the respective entities instead.
+ for abbrev in "e\\.g\\." "i\\.e\\." "i2c" ; do \
+ grep "[^a-z&]$$abbrev[^a-z.;-]" *.sgml | \
+ grep -v -E "(ENTITY|videodev2\.h)" && exit 1 ; \
+ done ; \
+ exit 0
+
+# We're generating these entities to avoid typos, to enforce consistent
+# naming, an to be warned about missing items (Jade screams bloody murder
+# if references are dangling).
+entities.sgml: Makefile
+ echo "<!-- Generated file! Do not edit. -->" >$@
+ echo -e "\n<!-- Functions -->" >>$@
+ for ident in $(FUNCS) ; do \
+ entity=`echo $$ident | tr _ -` ; \
+ echo "<!ENTITY func-$$entity \"<link" \
+ "linkend='func-$$entity'><function>$$ident()</function></link>\">" \
+ >>$@ ; \
+ done
+ echo -e "\n<!-- Ioctls -->" >>$@
+ for ident in $(IOCTLS) ; do \
+ entity=`echo $$ident | tr _ -` ; \
+ id=`grep "<refname>$$ident" vidioc-*.sgml | sed 's/\.sgml.*//'` ; \
+ echo "<!ENTITY $$entity \"<link" \
+ "linkend='$$id'><constant>$$ident</constant></link>\">" \
+ >>$@ ; \
+ done
+ echo -e "\n<!-- Types -->" >>$@
+ for ident in $(TYPES) ; do \
+ entity=`echo $$ident | tr _ -` ; \
+ echo "<!ENTITY $$entity \"<link" \
+ "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
+ done
+ echo -e "\n<!-- Enums -->" >>$@
+ for ident in $(ENUMS) ; do \
+ entity=`echo $$ident | tr _ -` ; \
+ echo "<!ENTITY $$entity \"enum&nbsp;<link" \
+ "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
+ done
+ echo -e "\n<!-- Structures -->" >>$@
+ for ident in $(STRUCTS) ; do \
+ entity=`echo $$ident | tr _ -` ; \
+ echo "<!ENTITY $$entity \"struct&nbsp;<link" \
+ "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
+ done
+ echo -e "\n<!-- Error Codes -->" >>$@
+ for ident in $(ERRORS) ; do \
+ echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
+ "error code\">" >>$@ ; \
+ done
+ echo -e "\n<!-- Subsections -->" >>$@
+ for file in $(SGMLS) ; do \
+ entity=`echo "$$file" | sed 's/.sgml//;s/\./-/g'` ; \
+ if ! echo "$$file" | \
+ grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
+ echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
+ fi ; \
+ done
+ echo -e "\n<!-- Function Reference -->" >>$@
+ for file in $(SGMLS) ; do \
+ if echo "$$file" | \
+ grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
+ entity=`echo "$$file" | sed 's/^[^-]*/sub/;s/.sgml//'` ; \
+ echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
+ fi ; \
+ done
+
+# Jade can auto-generate a list-of-tables, which includes all structs,
+# but we only want data types, all types, and sorted please.
+indices.sgml: Makefile
+ echo "<!-- Generated file! Do not edit. -->" >$@
+ echo -e "\n<index><title>List of Types</title>" >>$@
+ for ident in $(TYPES) ; do \
+ id=`echo $$ident | tr _ -` ; \
+ echo "<indexentry><primaryie><link" \
+ "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
+ done
+ for ident in $(ENUMS) ; do \
+ id=`echo $$ident | tr _ -` ; \
+ echo "<indexentry><primaryie>enum&nbsp;<link" \
+ "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
+ done
+ for ident in $(STRUCTS) ; do \
+ id=`echo $$ident | tr _ -` ; \
+ echo "<indexentry><primaryie>struct&nbsp;<link" \
+ "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
+ done
+ echo "</index>" >>$@
+
+# HTML version.
+html-build.stamp: Makefile checks $(SGMLS) $(GIFPICS)
+ rm -rf v4l2
+ if which docbook2html >/dev/null ; then \
+ docbook2html $(WARN) $(CUSTOM_HTML) --output v4l2 v4l2.sgml ; \
+ else \
+ db2html $(WARN) $(CUSTOM_HTML) --output v4l2 v4l2.sgml ; \
+ fi
+ cp $(GIFPICS) v4l2/
+ cd v4l2 ; \
+ test -e index.html || ln -s book1.htm index.html ; \
+ test -e capture-example.html || \
+ ln -s `grep -l getopt_long *.htm` capture-example.html
+ chmod a+rX -R v4l2
+ touch html-build.stamp
+
+# For online version. When you have a dial-up connection a single file
+# is more convenient than clicking through dozens of pages.
+html-single-build.stamp: Makefile checks $(SGMLS) $(GIFPICS)
+ rm -rf v4l2-single
+ if which docbook2html >/dev/null; then \
+ docbook2html $(WARN) $(CUSTOM_HTML) --nochunks \
+ --output v4l2-single v4l2.sgml ; \
+ else \
+ db2html $(WARN) $(CUSTOM_HTML) --nochunks \
+ --output v4l2-single v4l2.sgml ; \
+ fi
+ cp $(GIFPICS) v4l2-single/
+ chmod a+rX -R v4l2-single
+ touch html-single-build.stamp
+
+# For printing.
+pdf-build.stamp: Makefile checks $(SGMLS) $(PDFPICS)
+ if which docbook2pdf >/dev/null; then \
+ docbook2pdf $(WARN) $(CUSTOM_PRINT) v4l2.sgml ; \
+ else \
+ db2pdf $(WARN) $(CUSTOM_PRINT) v4l2.sgml ; \
+ fi
+ touch pdf-build.stamp
+
+# Example.
+capture: ../v4l2-apps/test/capture_example.c
+ gcc $^ -o $@
+
+clean:
+ rm -f *.stamp
+ rm -f videodev2.h.sgml
+ rm -f capture.c.sgml
+ rm -f capture
+ rm -f indices.sgml entities.sgml