v4l-utils-1.6.0
---------------

Gregor Jasny (5):
      man: Fix typo in dvb-fe-tool man page
      man: Replace hyphen with minus sign
      man: place escape to correct position
      man: Use Unicode character for ellipsis and fall back to ...
      qv4l2: Add keywords to desktop file


v4l-utils-1.5.91 (Development snapshot)
---------------------------------------

Gregor Jasny (3):
      Start v4l-utils 1.5.91 development cycle
      libdvbv5: Remove left over include of desc_service_list.h
      libdvbv5: Fix typo in doxygen index file

Mauro Carvalho Chehab (30):
      dvb-file: Fix a memory leak
      dvb-file: frees channel/vchannel if service id not found
      dvb-file: Remove spaces at the beginning of channel name
      dvb-file: Only print SDT warning if are there any channel to be stored
      dvb-file: Fix channel name when SDT is not found
      libdvbv5/descriptors: Fix content hexdump
      libdvbv5: Fix the number of frequencies at ISDB-T delivery sys descriptor
      libdvbv5: print ISDB-T frequencies in MHz
      libdvbv5: add a parser for ISO-10646/UCS2 strings
      libdvbv5: Fix ISDB-T TS info descriptor
      dvb-file: Fix no-SDT channel name allocation
      dvb-file: fix the memory deallocation on error
      dvb-file: don't dereference a NULL pointer
      libdvbv5: check for alloc errors at desc_ca
      dvb-format-convert: make valgrind happy
      libdvbv5: fix a nasty to track double-free bug
      dvb-fe-tool: abort nicely on femon mode
      libdvbv5: replace @include by @example
      man: move dvb-scan.1 out of Doxygen
      man: move dvb-fe-tool.1 out of Doxygen
      dvb-format-convert: Fix help message
      man: move dvb-format-convert.1 out of Doxygen
      man: add a utils/dvb/dvbv5-zap.1 page and remove from doxygen
      user man pages: Change report bugs to linux media ML
      Revert "dvb-file: don't dereference a NULL pointer"
      libdvbv5: Fix frequency table alloc size at desc_frequency_list
      .gitignore: Ignore quilt patches/ dir
      dvbv5-scan: add vdr format for the --help parameter
      user man pages: Add version to the man pages


v4l-utils-1.5.90 (Development snapshot)
---------------------------------------

André Roth (7):
      libdvbv5: cleanup logging, some memory checks
      libdvbv5: fix satellite LNBf handling
      libdvbv5: fix dvb_fe_dummy()
      libdvbv5: MPEG ES parser documentation
      libdvbv5: use hyperlinks in doxygen PDF
      libdvbv5: MPEG TS parser documentation
      libdvbv5: MPEG TS parser documentation and cleanups

Gregor Jasny (5):
      Start v4l-utils 1.5.0 development cycle
      buildsystem: Use latest ax_prog_doxygen from GNU Autoconf Archive
      libdvbv5: Add todo file
      libdvbv5: remove service_location descriptor
      libdvbv5: remove service_list descriptor
      doxygen: distribute doc/libdvbv5-index.doc in tarball

Hans Verkuil (9):
      v4l2-compliance: fix buffer state test
      (c)v4l-helpers: zero bytesperline, swap arg order
      qv4l2: the helper now zeroes bytesperline
      cv4l-helpers: add missing ioctls
      v4l2-ctl: fix control support for old kernels.
      v4l-helpers.h: fix control ioctls checks
      qv4l2: init dest format when starting vbi/swradio streaming
      v4l2-compliance: fix valgrind warnings
      qv4l2: fix typo: 576 instead of 575

Hans de Goede (3):
      libv4l2: Fix restoring of original dest-fmt after a VIDIOC_S_DV_TIMING
      libv4l2: Set convert_mmap_frame_size as soon as we've a dest_fmt
      libv4l2: Move alignment of dest_fmt resolution to v4l2_set_src_and_dest_format

Mauro Carvalho Chehab (60):
      libdvbv5: add doxygen tags for header.h
      libdvbv5: add doxygen tags to vct.h
      libdvbv5: add doxygen tags to pat.h
      doxygen_libdvbv5.cfg: add header.h, vct.h and pat.h
      libdvbv5: fix some cut-and-paste errors at documentation
      libdvbv5: add doxygen tags to pmt.h
      libdvbv5: better comment the descriptors
      libdvbv5: fix some issues at PAT documentation
      libdvbv5: add documentation for sdt.h
      libdvbv5: some documentation fixups for sdt.h
      libdvbv5: add documentation for the NIT table parser
      libdvbv5: add documentation for crc32.h
      libdvbv5: Add documentation for EIT DVB parser
      libdvbv5: Add a mainpage to the documentation
      libdvbv5: add documentation for ATSC EIT.
      libdvbv5: don't use ATSC_HEADER() macro
      libdvbv5: don't use DVB_DESC_HEADER() macro
      libdvbv5: add documentation for cat.h and atsc_header.h
      libdvbv5: add support for mgt.h
      libdvbv5 documentation review
      libdvbv5: group documentation into modules
      libdvbv5: add a missing macro to dvb_table group for documentation
      doxygen: add dvbv5-tools to the documentation
      dvb-fe-tool: Fix verbosity and comment unused option
      libdvbv5: fix a typo at ASTRA 1E extended LNBf
      Add support for VDR format (only for output)
      libdvbv5: Add support for opening FE on read only mode
      dvb-fe-tool: add support to open DVB FE in read only mode
      libdvbv5: Don't double-free the file name
      dvb-fe-tool: add femon parameter
      libdvbv5: fix a nasty bug when printing stats
      libdvbv5: Re-add the status name at the stats report
      libdvbv5: export dvb_fe_retrieve_quality()
      dvb-fe-tool: Colorize the status report
      dvb-fe-tool: implement acoustic mode
      update dvb-fe-tool Doxygen documentation
      libdvbv5: revert an ABI breakage
      libdvbv5: Create doxygen docs for mpeg_es.h
      libdvbv5: add documentation for ATSC service location
      libdvbv5: Add documentation for CA descriptor
      libdvbv5: Add documentation for CA identifier descriptor
      libdvbv5: add documentation for cable delivery system descriptor
      libdvbv5: add documentation for the extended event descriptor
      libdvbv5: add documentation for the short event descriptor
      libdvbv5: add documentation for the extended descriptor
      libdvbv5: add documentation for the frequency list descriptor
      libdvbv5: Document the hierarchy descriptor
      libdvbv5: Add documentation for ISDB-T terrestrial descriptor
      libdvbv5: add documentation for the language descriptor
      libdvbv5: Add description for the LCN descriptor
      libdvbv5: add documentation for the network name descriptor
      libdvbv5: add documentation for ISDB partial reception descriptor
      libdvbv5: document the Satellite delivery system descriptor
      libdvbv5: add documentation for the service descriptor
      libdvbv5: Add documentation for desc_service_list.h
      libdvbv5: add documentation for the T2 delivery system descriptor
      libdvbv5: documents the terrestrial delivery system descriptor
      libdvbv5: Documents ISDB TS information descriptor
      libdvbv5: add javadoc markups for desc_service_location.h
      dvb-file: Fix a core dump issue


v4l-utils-1.4.0
---------------

Gregor Jasny (11):
      Start v4l-utils 1.3.91 development cycle
      libdvbv5: Remove dvbsat_polarization_name (same as dvb_sat_pol_name)
      libdvbv5: Rename and hide charset definitions
      libdvbv5: Hide unused and unexposed cnr_to_qual_s tables
      libdvbv5: Make dummy_fe static
      libdvbv5: Add doxygen config file to distribution list
      libdvbv5: Add dvb-fe-priv.h to sources list
      contrib: Add au0828 directory to extra distribution list
      media-ctl: process pkgconfig files
      v4l2-ctl: Distribute vivid-tpg.h.patch
      ir-keytable: Genrate stable map file by sorting directory before parsing

Hans Verkuil (6):
      v4l2-compliance: require G/S_PRIORITY support for m2m devices
      v4l2-ctl/qv4l2: sync to latest vivid-tpg code
      v4l-utils: sync-with-kernel
      Add the generated lib/include/dvb-frontend.h to .gitignore
      Copy the vivid-tpg* sources from the kernel
      qv4l2: fix bug in setting the audio mode

Mauro Carvalho Chehab (72):
      libdvbv5: be coherent with parse_string.h header
      libdvbv5: Move charsets to be inside the parms struct
      libdvbv5: move internal parameters to a separate structure
      libdvbv5: Properly document struct dvb_v5_fe_parms
      libdvbv5: Fix parameters dvb_add_parms_for_sys()
      libdvbv5: Fix return values for dvb_fe_get_event()
      libdvbv5: Add documentation for dvb-fe.h
      libdvbv5: add the private structure to the tree
      libdvbv5: Rename internally-defined poll function as dvb_poll
      libdvbv5: fix a memory leak at descriptors
      libdvbv5: reimplement the spaces filling logic
      libdvbv5: Don't go past the size of dvb_v5_name
      libdvbv5: Don't go past the size of dvb_v5_attr_names
      libdvbv5: Fix changeset 04accf23
      libdvbv5: Allocate channel earlier
      libdvbv5: add a missing return
      dvbv5-zap: close dvr_fd at the end of do_traffic_monitor()
      libdvbv5: Improve parsing of dvb channel format
      libdvbv5: add support for parsing scan-s2 DVB-S2 channels
      libdvbv5: don't write polarization and user parms twice
      libdvbv5: Fix modulation formats for legacy channel on DVB-S2
      libdvbv5: only use emulated formats if the original one is not found
      libdvbv5: remove some commented dead code
      libdvbv5: add support for optional parameters on oneline formats
      libdvbv5: add support for optional MIS parameter
      libdvbv5: Add support for parsing DVB-T2 channel format
      libdvbv5: Fix delivery system for channel on DVB-T2 format
      Stop using the legacy name for PLP/MIS property
      libdvbv5: fix parsing of the default_value
      libdvbv5: Split libdvbv5 properties from stats
      libdvbv5: better document dvb-v5-std.h
      libdvbv5: Add MIS to DVB-S2 properties
      libdvbv5: Fix the error message when a props is not found
      libdvbv5: avoid checking past data
      libdvbv5: use default values if an entry is missing
      libdvbv5: MIS default should be zero
      libdvbv5: add support for PLS code/mode for file read/write
      libdvbv5: make sure that all needed properties are filled
      libdvbv5: Fix the property limits check
      libdvbv5: fix a corner case reported by Coverity
      dvbv5-zap: keep monitoring stats at DVB record mode
      dvbv5-zap: Be sure to get stats before printing
      dvbv5-zap: remove an unused var
      libdvbv5: add documentation for dvb-demux.h
      libdvbv5: rename struct el_pid
      libdvbv5: Add a description for DVB file entries
      dvb-file.h: prepend parsing structs with "dvb_"
      libdvbv5: rename enum file_formats to dvb_file_formats
      libdvbv5: move PTABLE macro to the *.c files
      libdvbv5: add documentation about format read/write functions
      libdvbv5: Add documentation for other functions at dvb-file.h
      libdvbv5: Document dvb-log.h and dvb-sat.h
      libdvbv5: Remove an unused parameter at struct dvb_v5_descriptors
      libdvbv5: remove unused parameter at dvb_scan_alloc_handler_table()
      libdvbv5: add documentation for the DVB scan functions
      libdvbv5: Document the libdvbv5 properties
      libdvbv5: Document the last undocumented structs at dvb-file.h
      libdvbv5: Convert documentation to javadoc format
      Add support to generate Doxygen documentation for libdvbv5
      libdvbv5: Improve doxygen format
      Ignore the generate doxygen-doc directory
      libdvbv5: Fix function definitions at doxygen book
      libdvbv5: Properly document macros at dvb-v5-std.h
      libdvbv5: fix dvb_get_pmt_pid API
      libdvbv5: improve doxygen documentation
      libdvbv5 doxygen: Fix a few file descriptions
      libdvbv5: Fix dvb_get_pmt_pid()
      libdvbv5: Provide a quality indicator for DVB-T
      libdvbv5: get rid of bcd_to_int()
      libdvbv5: add documentation for descriptors.h
      libdvbv5: Add more data about the descriptors definition
      libdvbv5 doxygen: Some improvements for dvb-scan.h and descriptors.h


v4l-utils-1.3.90 (Development snapshot)
---------------------------------------

André Roth (1):
      libdvbv5: provide crc32 to c++

Anton Arbring (20):
      qv4l2: clarified two strings
      qv4l2: changed and removed icons
      qv4l2: correctly disable two menu items
      qv4l2: added user controls
      qv4l2: hiding disabled GUI items
      qv4l2: alignment and size mods
      qv4l2: added titles and moved settings
      qv4l2: hiding disabled GUI items
      qv4l2: alignment and size mods
      qv4l2: added titles and moved settings
      qv4l2: refactoring general-tab.cpp
      qv4l2: bugfix and dynamic adjustments
      qv4l2: removed colon and correct rowcount
      qv4l2: added icon and moved label
      qv4l2: added fullscreen functionality for capture window
      qv4l2: added right click menu to capturewin
      qv4l2: adding fullscreen option to toolbar main window
      qv4l2: removed redundant set size
      qv4l2: Removed bottom layout from capturewin
      qv4l2: Adding width and height scaling to the status bar

Gregor Jasny (8):
      Start v4l-utils 1.3.x development
      Revert "libdvbv5: Do not install libdvbv5 by default"
      qv4l2: Fix typo
      Fix kFreeBSD build
      fixed BSDfication of V4L related headers
      Disabled libdvbv5 and v4l-utils build
      Hide parse_string.h content in shared library interface
      Prefix exported functions with dvb_
      libv4l2: Lazily allocate convert_mmap_buf
      qv4l2: Clean up icon distribution list

Hans Verkuil (133):
      qv4l2: add extensive colorspace support
      v4l2-compliance: improve colorspace checks.
      qv4l2: colorspace & opengl improvements
      qv4l2: GL_RED is not supported everywhere, use GL_LUMINANCE.
      qv4l2: add a 'blending' mode to test images with an alpha channel.
      qv4l2: fix pixel aspect ratio calculation
      qv4l2: revert most of the previous patch
      qv4l2: fix compilation error if HAVE_QTGL is undefined
      qv4l2: fix control range handling and broken slider disabling.
      qv4l2: fix pixel aspect handling and set compose rectangle
      qv4l2: add support for crop and compose
      qv4l2: implement SEQ_TB/BT support for the openGL renderer
      qv4l2: remove two forgotten debug printfs
      qv4l2: make the destination sizeimage large enough
      libv4l-mplane: copy back v4l2_buffer.m, fix type problems
      libv4l-mplane: v4l2-compliance fixes
      libv4l-mplane: fix compile warning
      qv4l2: fix incorrect disabling of the blending mode
      qv4l2: zero initial buffers
      qv4l2: fix enabling/disable frame width/height/size
      qv4l2: get rid of unused v4l2 class methods.
      qv4l2: improve video output support, esp. multiplanar.
      qv4l2: improve pixel aspect detection
      v4l2-ctl: vastly improve the test pattern generator.
      v4l2-ctl: add missing source chromakey support.
      v4l2-ctl: the alpha flags are mutually exclusive.
      v4l2-ctl: add support for generating limited range RGB
      qv4l2: fix a bug in vidFieldChanged
      v4l2-ctl: missing support for continuous frameintervals.
      Revert "qv4l2: added titles and moved settings"
      Revert "qv4l2: alignment and size mods"
      Revert "qv4l2: hiding disabled GUI items"
      qv4l2: fix broken handling of V4L2_VBI_INTERLACED.
      qv4l2: fix sliced vbi support
      qv4l2: fix height calculation when overriding pixel aspect ratio
      v4l2-compliance: fix various VBI tests.
      qv4l2: fix square aspect ratio handling and improve Video Aspect Ratio
      qv4l2: refactor window size setting at capture start
      qv4l2: reset size after changing aspect ratios or scaling mode
      qv4l2: drop setSizeAdjustPolicy(QComboBox::AdjustToContents)
      libv4l2rds: fix date-time handling
      qv4l2: fix coverity defect
      qv4l2: make tab labels more compact.
      qv4l2: better handling of string controls with a step > 1
      libv4l2rds: handle V4L2_RDS_BLOCK_INVALID.
      libv4l2rds: Area Coverage is only partially available for RBDS
      rds-ctl: print RBDS call sign.
      v4l2-compliance: fix control test
      v4l2-compliance: only discrete framesizes are not allowed for output
      libv4lconvert: add support for extended controls
      libv4lcontrol: sync control strings/flags with the kernel
      v4l2-compliance: allow frequency bands of just one frequency
      qv4l2: fix a confusing error message when capturing VBI.
      v4l2-compliance: improved v4l helpers header, add tracing
      v4l2-compliance: add v4l2_format support to cv4l-helpers.h
      v4l2-compliance: fix problems with vbi streaming.
      qv4l2: always do updateVidCapFormat when changing crop/compose
      qv4l2: m_useGLAct is only available if HAVE_QTGL is set.
      qv4l2: add new png to the list of distributed files
      qv4l2: use the new toolbutton for three buttons in the general tab
      contrib/freebsd/Makefile.am: fix syntax error.
      v4l-utils: update the headers to the latest kernel version.
      v4l2-ctl: add support for the motion detection event
      v4l2-ctl: add support for array controls
      v4l2-ctl: allow setting/getting subsets
      v4l-utils: add new V4L2_CAP_EXT_PIX_FORMAT capability
      v4l2-compliance: check for the presence of V4L2_CAP_EXT_PIX_FORMAT
      v4l2-ctl: add support for new extended format flags field.
      v4l2-compliance: also check for V4L2_CAP_EXT_PIX_FORMAT in device_caps
      qv4l2: add support for new alpha-aware pixelformats.
      v4l2-ctl: add support for the new alpha-aware pixelformats.
      libv4lconvert: add support for new pixelformats
      v4l2-ctl: fix returned pixelformats that map to fbdev
      qv4l2: bypass libv4l2 when obtaining the colorspace
      qv4l2: fix a coverity defect
      qv4l2: add the two new png's to the EXTRA_DIST list
      v4l2-compliance: fix broken priv test
      qv4l2: improve full-screen handling
      qv4l2: center frame and drop margins in full screen mode
      qv4l2: add Q shortcut to close the video window
      qv4l2: QImage could be the wrong size
      v4l2-compliance: reworked the (c)v4l-helpers.h headers
      qv4l2: integrate with the cv4l-helpers.h header
      qv4l2: force bytesperline recalculation when changing the width.
      qv4l2: add Trace IOCTLs option
      qv4l2: set the new value immediately when updating a control range.
      qv4l2: correctly resubscribe events after a reopen.
      qv4l2: add 'Use Record Priority' option
      libv4lconvert: fix RGB32 conversion
      qv4l2: use new control helpers
      qv4l2: hopefully fix a i386 ubuntu build error
      qv4l2: honor the fullscreen setting when starting capturing
      qv4l2: bug fix in re-subscribing source change events
      v4l-utils: sync with latest kernel
      v4l2-ctl: print new SDR buffersize format field.
      v4l2-compliance: add sdr buffersize check
      qv4l2: support output devices
      qv4l2: fix querystd and query_dv_timings
      qv4l2: fix layout issues related to stacked widgets
      v4l2-ctl: upgrade to the latest version of the test pattern generator
      qv4l2: add SDR visualization.
      v4l2-ctl: fix csc colorbar color pre-calculation
      qv4l2: add support for output video devices
      v4l-utils: sync with latest kernel headers
      descriptors.h: include <arpa/inet.h> for ntohs
      v4l2-ctl: --clear-bitmap or --clear-clips didn't actually clear it
      v4l2-ctl/qv4l2: init mv_hor/vert_mode correctly.
      v4l2-ctl: the field setting of the initially queued buffer is wrong.
      qv4l2: implement cropping and composing for video output.
      rds-ctl: changes in the TA bit weren't detected.
      libv4l2rds: DI segment order was swapped
      qv4l2: use setResdOnly for disabled QLineEdit controls
      qv4l2: missed one more place where QLineEdits were disabled.
      (c)v4l-helpers: fix broken tests for existence of ioctls.
      qv4l2: convert the last direct ioctl calls to a cv4l-helper.
      libv4l-mplane: make it aware of the extended pix_format fields
      qv4l2: zero m_tpgLimRGBRange when the device is closed
      qv4l2: use "ADC Frequency" for SDR instead of just "Frequency"
      qv4l2: fix valgrind warnings
      libv4l2: valgrind fixes
      qv4l2: keep the "Controls" text
      v4l2-ctl/qv4l2: sync to latest vivid-tpg.c
      qv4l2: correct PAL pixel aspect values
      v4l2-compliance: add test for S_EDID and the E2BIG corner case
      qv4l2/v4l2-ctl: add support for 14x9 video aspect ratio.
      v4l2-compliance: allow EIO for control ioctls
      v4l2-compliance: reset control counters
      qv4l2: fix segfault when openGL is not compiled in.
      qv4l2: fix audio looping
      qv4l2: allow '-d1' option
      v4l2-ctl/qv4l2: fix movement counter calculation
      qv4l2: fix broken SDR support
      qv4l2: reset bytesperline when changing pixelformat.

Marcel J.E. Mol (1):
      [v4l-utils] keytable: add support for XMP IR protocol

Mauro Carvalho Chehab (13):
      dvbv5-zap: Fix LNBf selection
      libdvbv5: Improve debug logs while scanning PMT
      dvb-file: store services even when SDT is not found
      dvb-file: better store channels without SDT
      parse_usb.pl: fix handling of ./parse_tcpdump_log.pl logs
      keytable: add a way to add all protocols on raw decoders
      ir-keytable: add the list of supported protocols at man page
      keytable: add support for sharp and mce-kbd protocols
      parse_au0828.pl: Add a parser to help with au0828 debug
      dvb-file: fix memory-deallocation bug
      parse_au0828.pl: fix I2C read payload
      keytable: Mask selected protocols with the supported ones
      ir-keytable.1: add XMP protocol at manpage

Ove Brynestad (15):
      qv4l2: add and use storage for renderer independent frame info
      qv4l2: move setFrame out of renderer specific classes
      qv4l2: moved Qt scale/crop to common class
      qv4l2: removed separate crop offset function
      qv4l2: Made cropsize available to glengine
      qv4l2: moved frame/rate count assignment to common class
      qv4l2: moved crop calculation out of GL renderer
      qv4l2: update common size variables at GL resize
      qv4l2: moved scaling calculations from setRenderFrame
      qv4l2: refactored capwin variables
      qv4l2: refactor aspect size calculation
      qv4l2: refactor crop size calculation
      qv4l2: refactored cropSize to deliver cropped size
      qv4l2: Fixed cropping bug
      qv4l2: Add option to enable linear scaling filter

Reynaldo H. Verdejo Pinochet (1):
      [libdvbv5] dvb-sat: add universal Ku band (extended) LNBF def

Rob Barker (1):
      v4l-utils: libdvbv5: fix compilation issue

Thiago Santos (1):
      v4l2grab: Add threaded producer/consumer option



v4l-utils-1.2.0
---------------

Alain VOLMAT (1):
      buildsystem: Fix configure.ac --disable-v4l-utils option

Andreas Weber (2):
      v4l2-ctl-misc.cpp: bugfix display #of readbuffers
      v4l2gl/v4l2grab: fix errno assignment in while loop

André Roth (43):
      libdvbv5: VCT bitmap fixup
      libdvbv5: fix NIT structures
      libdvbv5: implement dvb_fe_dummy for logging
      libdvbv5: prefix VCT with atsc_ instead of dvb_
      libdvbv5: fix missing includes
      libdvbv5: cleanup dvb_nit_transport_foreach macro
      libdvbv5: implement ATSC standard header
      libdvbv5: implement MGT table parser
      libdvbv5: implement ATSC EIT
      libdvbv5: fix reading multisection tables
      libdvbv5: service location descriptor support
      libdvbv5: support info info log via dvb_loginfo
      libdvbv5: fix asprintf compile warnings
      libdvbv5: mpeg elementary stream parsers
      libdvbv5: fix EIT parsing
      libdvbv5: shared lib and installing headers
      libdvbv5: remove header files from SOURCES in Makefile.am
      libdvbv5: fix dvb_parse_descriptors and make dvb_desc_init private
      libdvbv5: add attribute packed to structs and unions
      libdvbv5: add parser for CAT
      libdvbv5: add parser for ca and ca_identifier descriptors
      libdvbv5: fix PMT parser
      libdvbv5: cleanup printing tables and descriptors
      libdvbv5: use DVB_DESC_HEADER macro in all descriptors
      libdvbv5: make dvb_desc_default_init and dvb_desc_default_print private
      libdvbv5: allow table parsers to get specific pointer to table struct
      libdvbv5: descriptor parser return int
      libdvbv5: remove unneeded includes
      libdvbv5: fix lost ressource in atsc_eit
      libdvbv5: add support for tables with multiple ts_id and section gaps
      libdvbv5: reunite atsc_table_header and dvb_table_header
      libdvbv5: fix asprintf compile warning in dvbv5-scan
      libdvbv5: make crc32 public
      libdvbv5: make dvb_table_filter_free public
      libdvbv5: cleanup table parsers
      libdvbv5: cleanup printing of tables and descriptors
      libdvbv5: rename descriptor functions
      libdvbv5: move table parsers to separate directory
      libdvbv5: cleanup parser API
      libdvbv5: short API description
      libdvbv5: build dynamic libdvbv5 by default
      libdvbv5: improve CRC size handling
      libdvbv5: improve DVB header handling

Antonio Ospite (1):
      libv4lconvert: Fix a regression when converting from Y10B

Antti Palosaari (1):
      v4l2-ctl: add tuner support for SDR tuners

Baard Eirik Winther (1):
      qv4l2: Add cropping option to remove pillarbox

Bård Eirik Winther (33):
      qv4l2: move function ctrlEvent
      qv4l2: add hotkeys for common operations
      qv4l2: fix minimum size in capture win to frame size
      qv4l2: add Capture menu
      qv4l2: new modular capture window design
      qv4l2: add OpenGL rendering
      qv4l2: alter capture menu
      qv4l2: new ALSA stream source code
      qv4l2: fix a bug where the alsa thread never stops
      qv4l2: add ALSA stream to qv4l2
      qv4l2: add ALSA audio playback
      qv4l2: fix YUY2 shader
      qv4l2: fix black screen with opengl after capture
      qv4l2: show frames option can be toggled during capture
      qv4l2: add function getMargins
      qv4l2: add video scaling for CaptureWin
      qv4l2: add hotkey for reset scaling to frame size
      qv4l2: add aspect ratio support
      qv4l2: generalized opengl include guards
      qv4l2: fix YUY2 shader
      qv4l2: fix black screen with opengl after capture
      qv4l2: show frames option can be toggled during capture
      qv4l2: create function getMargins
      qv4l2: add video scaling for CaptureWin
      qv4l2: added resize to frame size in Capture menu
      qv4l2: add hotkey for reset scaling to frame size
      qv4l2: add pixel aspect ratio support for CaptureWin
      qv4l2: change m_scaledFrame to m_scaledSize
      qv4l2: fix missing status tips
      qv4l2: fix program input parameters
      qv4l2: add manpage
      qv4l2: updated about window
      qv4l2: fix GeneralTab layout

Gregor Jasny (22):
      Start v4l-utils 1.1.x development branch
      libv4lconvert: Reject too short source buffer before accessing it
      buildsystem: use subdir-objects automake option as suggested by automake
      buildsystem: Do not specify library version for static libs
      buildsystem: Use autoconf variable for symbol visibility flag
      buildsystem: Use C99 by default
      libdvbv5: Fix compiler warning about signedness
      libv4lconvert: Add ASUS A7M to upside down table
      libdvbv5: FIx check for available adaptation field
      libdvbv5; Fix typo in MPEG TS print function
      v4l2-ctl: Do not leak framebuffer handle in error paths
      dvbv5-zap: Close open file descriptor in error path
      dvbv5-zap: Always initialize status variable
      libv4lconvert: Error out if source or destination pointers are null
      libv4lconvert: Gracefully handle unknown SE401 destination formats
      libdvbv5: Distribute internal header, too
      mediactl: Distribute internal header, too
      buildsystem: Distribute Android.mk files
      v4l2-compliance: Distribute internal header, too
      qv4l2: Distribute manpage
      libdvbv5: Do not install libdvbv5 by default
      Prepare for 1.2.0 release

Hans Verkuil (130):
      qv4l2: fix a segfault for native 32 bpp formats
      Revert "qv4l2: add aspect ratio support"
      Revert "qv4l2: add hotkey for reset scaling to frame size"
      Revert "qv4l2: add video scaling for CaptureWin"
      Revert "qv4l2: add function getMargins"
      Revert "qv4l2: show frames option can be toggled during capture"
      Revert "qv4l2: fix black screen with opengl after capture"
      Revert "qv4l2: fix YUY2 shader"
      qv4l2: add cropping to CaptureWin and Qt render
      qv4l2: call setFrame before resize to get correct frame size calculation
      rds-ctl: fix segfault in list_devices()
      v4l2-ctl: fix '--set-dv-bt-timings query' option.
      v4l2-ctl: properly close filehandles on error
      v4l-utils: sync with latest kernel.
      v4l2-ctl: set b.num_planes to 1 for single plane output formats.
      qv4l2: crop: take pixel aspect ratio into account.
      v4l2-compliance: check for invalid m2m + overlay caps
      v4l2-compliance: check that streaming will fail for overlays
      v4l2-ctl: use libv4l2 wrapper for mmap as well.
      qv4l2: fix broken VBI support
      v4l-utils: run sync-with-kernel, add ioctl32 tests for v4l2-subdev.h
      v4l2-ctl: errors during streaming setup were ignored
      libv4l2rds: update the list of AFs if the number of AFs changes
      libv4l2rds: rename V4L2_RDS_FLAG_STATIC_PTY to _DYNAMIC_PTY
      rds-ctl: add support for dynamic/static PTY
      v4l2-ctl: --all should also show multiplanar formats.
      v4l2-compliance: add bytesperline sanity check for multiplanar formats.
      v4l2-compliance: add streaming tests
      v4l2-compliance: fix broken test for V4L2_FRMIVAL_TYPE_CONTINUOUS
      v4l2-ctl: add support for fields
      v4l2-compliance: fix read() test and reopen after read/write
      v4l2-ctl: automatically detect single/multiplanar buffer type.
      v4l2-compliance: test streaming with bogus v4l2_buffer values.
      v4l2-compliance: check if USERPTR is actually supported.
      v4l2-compliance: restore the initial formats after testing S_FMT
      v4l2-compliance: add EXPBUF and DMABUF streaming tests.
      v4l2-compliance: test for invalid dmabuf file descriptors.
      qv4l2: add combobox to select the field format.
      v4l2-compliance: add tests for multiplanar capture.
      v4l2-compliance: fix data_offset related tests
      v4l2-ctl: fix regression when setting vidcap format
      v4l2-compliance: move streaming setup code to main source.
      v4l2-compliance: move functions around.
      v4l2-compliance: Update fixme.txt
      v4l2-compliance: fix BUF_TYPE vs CAP mixup.
      v4l2-compliance: obtain expbuf caps and fix radio/vbi bug
      v4l2-compliance: now support all formats in the streaming tests.
      v4l2-ctl: is_mplane was never set.
      v4l2-compliance: add new mmap tests.
      v4l-utils: fix optional args for short opts
      v4l2-ctl: set timestamp for output buffers.
      v4l2-ctl: add streaming between two video devices using dmabuf
      v4l2-ctl: the colorspace can now be set for outputs.
      v4l2-ctl: improve the overlay support
      v4l2-compliance: add M2M streaming support
      v4l2-compliance: fill output buffers.
      v4l2-compliance: fix check for correct return code for STREAMON.
      v4l2-compliance: reopen node after each streaming test.
      v4l2-compliance: change one warn to info.
      v4l2-compliance: lower default framecount to 60.
      v4l2-compliance: bypass libv4l2 for expbuf handling.
      v4l2-compliance: improve clip checking
      v4l2-compliance: add tests for output buffer error checking
      v4l2-ctl: skip captured buffers with flag V4L2_BUF_FLAG_ERROR
      qv4l2: ignore buffers with flag V4L2_BUF_FLAG_ERROR.
      sync-with-kernel should also copy fb.h
      v4l-utils: ran sync-with-kernel which added the fb.h header.
      qv4l2: two field related fixes
      qv4l2: support top/bottom/alternate field settings.
      qv4l2: add check if the shader function is available.
      v4l2-compliance: check for presence of a tuner/modulator
      v4l2-compliance: improve format matching code.
      qv4l2: initialize comboboxes with sensible initial sizes.
      qv4l2: QUERYSTD returns STD_UNKNOWN if there is no standard
      qv4l2: fix frequency handling
      qv4l2: disable what shouldn't be touched while streaming.
      v4l2-compliance: add tests for queuing operations with invalid indices.
      v4l2-compliance: more nasty evil stream I/O checks
      qv4l2: fix incorrect call to s_fmt when disabling width/height
      qv4l2: fix incorrect handling of fields
      v4l-utils: sync with latest kernel headers.
      v4l2-ctl: add support for SDR FMT
      v4l2-ctl: implement list SDR buffers command
      v4l2-ctl: add timestamp source support.
      v4l2-compliance: add timestamp source tests.
      v4l2-ctl: add missing v4l2-ctl-sdr.cpp file.
      v4l2-ctl: support SDR capture streaming.
      v4l2-compliance: add SDR compliance tests.
      v4l2-compliance: add 1HZ support when setting the frequency.
      qv4l2: add SDR support.
      qv4l2: use QDoubleSpinBox for frequency inputs
      v4l2-compliance: support menu controls with more than 32 items
      v4l2-ctl/compliance: use the correct mmap/munmap functions.
      v4l2-ctl: add support for custom bytesperline values.
      qv4l2: increase max width/height to 4K resolution.
      v4l2-ctl: fix printing of buffer flags
      v4l-utils: sync to latest kernel headers
      v4l2-ctl: add --clear-edid option.
      v4l2-ctl: rename old v4l2_subdev_edid and VIDIOC_SUBDEV_G/S_EDID
      v4l2-compliance: add test setting all enumerated timings.
      v4l2-compliance: add G/S_EDID tests.
      libv4lconvert: remove broken ALTERNATE handling
      v4l2-compliance: add helper headers
      v4l2-compliance: use the new cv4l-helpers.h header.
      v4l2-compliance: m2m devices should have only one input and output
      v4l2-compliance: test control/format/codec ioctls for all inputs/outputs
      qv4l2: add support for V4L2_PIX_FMT_NV16M/61M
      v4l2-compliance: fix function pointer prototype.
      v4l2-compliance: add missing 'class' keyword after 'friend'
      v4l2-compliance: fix 32-bit compilation for v4l_fd_init()
      qv4l2: only set m_isRadio if m_isSDR is true.
      qv4l2: fix modulator frequency bugs
      libv4lconvert: fix a v4l2-compliance error
      v4l2-compliance: don't do the global format test when using libv4l2.
      sync-with-kernel: update to latest kernel headers.
      libdvbv5: fix compile error
      v4l2-ctl: add support V4L2_EVENT_SOURCE_CHANGE
      libdvbv5: generate the correct include in dvb-v5.c
      Synced with latest kernel.
      Add missing v4l2-mediabus.h
      Synced with latest kernel
      qv4l2: fix segmentation fault when compiled without ALSA support.
      v4l2-compliance: fix broken querymenu check.
      qv4l2: add support for the V4L2_EVENT_SOURCE_CHANGE event.
      v4l2-compliance: don't warn about missing frameintervals
      v4l2-ctl: add support to try/set raw VBI formats
      v4lgrab/vbi-test: remove these utilities
      qv4l2-qt3: remove utility
      qv4l2: fix opengl support for RGB32/BGR32.
      v4l2-compliance: M2M cap + input or output caps should be an error.

Hans de Goede (6):
      libv4lcontrol: Check control_flags before doing wildcard maching on upside_down
      libv4lcontrol: Add Asus F3Sc with 04f2:b012 cam as upside down false positive
      libv4l2: decomress-helper: close fds then wait for helper to exit
      rc_keymaps: Add a keymap for the remote shipped with allwinner ba10 tv boxes
      rc_keymaps: Add a keymap for the remote shipped with allwinner i12-a20 tv boxes
      rc_keymaps: Add keymap for the remote shipped with the Wobo i5 tv box

Hans-Christian Egtvedt (8):
      v4l2-ctl: remove unnecessary inclusion of libv4l2.h
      v4l2-compliance/ctl: drop libv4l2 dependency if NO_LIBV4L2 is defined
      Add static configuration file for Android builds
      v4l2-ctl/dbg: include android-config.h header file if ANDROID is set
      v4l2-compliance: add Android.mk makefile
      v4l2-ctl: add Android.mk makefile
      v4l2-dbg: add Android.mk makefile
      INSTALL: add cross compile and install procedures for Android

Lad, Prabhakar (2):
      libv4l: Update the README name for libv4l
      libv4l: Update the link pointing the patch for porting the application to libv4l2

Laurent Pinchart (17):
      Import the media-ctl utility and libraries
      media-ctl: Rename source files
      media-ctl: Remove the obsolete device argument from the help text
      media-ctl: Document the --links option argument
      media-ctl: Always print the full help message
      media-ctl: Don't install libmediactl and libv4l2subdev
      media-ctl: Update copyright years
      media-ctl: Fix off-by-one buffer overflow with readlink
      media-ctl: Fix media device version printing
      media-ctl: Add fall through comment to fix Coverity warning
      media-ctl: libv4l2subdev: Add DV timings support
      media-ctl: Move flags printing code to a new print_flags function
      media-ctl: Add DV timings support
      Update sync-with-kernel to use installed kernel headers
      wip
      media-ctl: Pass a positive error value to strerror()
      Revert "wip"

Martin Bugge (1):
      v4l2-ctl: add EDID get and set options

Mauro Carvalho Chehab (166):
      dvbv5-scan: Allow using separate adapter for FE and demux
      libdvbv5: add descriptor parser for ATSC TVCT/CVCT tables
      libdvbv5: fix VCT parsing
      libdvbv5: Add ATSC specific descriptors
      libdvbv5: add parser for ATSC service location
      libdvbv5: Add support for additional descriptors at VCT table
      libdvbv5: Add table ID of extra NIT/SDT tables
      libdvbv5/dvb-scan: Modify to use the newer TS tables parser
      libdvbv5: move DVB scan handler code to a separate file
      libdvbv5: move handler code to a separate file
      libdvbv5: move all tables structs to the handler data
      libdvbv5: fixup parsing of PMT tables
      libdvbv5: Add a parser for extension descriptors
      libdvbv5/dvb-scan: handle allocation errors
      libdvbv5/dvb-scan: be more verbose in debug mode
      libdvbv5/dvb-scan: Fix a series of checks at buffer handling
      libdvbv5/parse_string: don't free twice
      libdvbv5: better handle memory errors
      libdvbv5/descriptors: print descriptor number in hexadecimal
      descriptors/nit: byte struct should be packed
      libdvbv5/descriptors: Make easier to read/edit the descriptors table
      libdvbv5: add support for ISDBT terrestrial system descriptor
      libdvbv5: add parser for TS information descriptor
      libdvbv5: Add descriptors for virtual channel number
      libdvbv5: Add support for partial reception
      libdvbv5: add suport for DVB-T2 delivery descriptor
      libdvbv5: avoid playing with memory
      libdvbv5/dvb-scan-table-handler:free the new table descriptors
      libdvbv5: Add some missing code to free data
      libdvbv5: Better handle program data
      libdvbv5/dvb-fe: make valgrind happy
      libdvbv5/descriptors: descriptors data should always be freed
      libdvbv5/dvb-scan: fix memory leak
      libdvbv5/dvb-scan-table-handler: remove free of unallocated structs
      libdvbv5: produce dvb data from the new structures
      libdvbv5/dvb-file: use the new descriptors for virtual channel
      libdvbv5/dvb-file: fix allocation of dvb_file
      libdvbv5/dvb-file: fix parameters for dvb_vchannel()
      Fix desc_frequency_list descriptor
      libdvbv5: add support for ATSC VCT table parsing
      libdvbv5: On ATSC, only try to get SDT if VCT is not found
      libdvbv5: don't leak memory on ATSC service location
      dvb-fe: don't cause memory leak on open errors
      dvbv5-scan: release resources on errors
      libdvbv5/dvb-file: Allow using SDT for ATSC
      libdvbv5/dvb-scan: avoid memory leak on table read timeout
      dvb/dvbv5-zap: Fix help message
      libdvbv5/dvb-scan: require PAT also for ATSC
      libdvbv5/dvb-file: Fix the logic for program found check
      libdvbv5/descriptors: Fix error handling routine
      libdvbv5/descriptors: Fix extension descriptor handling
      libdvbv5/descriptors: don't leak memory on error
      libdvbv5/dvb-file: Don't leave memory leaks on channel store failure
      libdvbv5: avoid nit to read out of the buffer
      libdvbv5: be sure to not go past buffer on PAT parsing
      libdvbv5: add multisection support for PAT table
      libdvbv5: fix debug msg for Network PID
      libdvbv5: don't cause crash if NIT is missing on fe-file.c
      libdvbv5: Add missing dvb_dmx_stop() on error handling
      libdvbv5: be sure to not go past buffer on PMT parsing
      libdvbv5: be sure to not go past buffer on SDT parsing
      libdvbv5: be sure to not go past buffer on VCT parsing
      libdvbv5: shut up a few compilation warnings
      libdvbv5: improve debug messages
      libdvbv5/dvb-file: describe the service type on the logs
      dvbv5-scan: move scanning code into dvb_scan_transponder()
      libdvbv5: Re-add NIT transponders addition
      libdvbv5: Re-add parser for ISDB-T NIT transponders addition
      libdvbv5: Re-add parser for ISDB-T NIT transponders addition
      libdvbv5: add support for DVB-S/S2 at NIT parser
      libdvbv5: add support for DVB-T2 at NIT parser
      libdvbv5: remove the remaining bits from the NIT parsers
      libdvbv5: better implement the NIT parser
      libdvbv5: properly handle ISDB-T partial reception
      libdvbv5: get rid of dvb-scan-table-handler.[ch]
      libdvbv5: handle NIT descriptors when verbose is not enabled
      libdvbv5: Improve descriptor error logs
      libdvbv5: Fix the size of the LCN descriptor
      libdvbv5: some error handling improvements on dvb-file
      libdvbv5/descriptors.c: fix two warnings
      dvbv5-zap: allow using transponder frequency while in monitor mode
      dvbv5-zap: make Valgrind happy
      libdvbv5: clear data before setting a dmx filter
      libdvbv5/dvb-demux: fix CodingStyle
      dvbv5-zap: handle timeout also while in monitor mode
      dvbv5-zap: exit nicely on SIGTERM/SIGINT
      dvbv5-scan: handle SIGTERM/SIGINT nicely
      dvbv5-zap: only handle SIGALRM if need
      libdvbv5: fix extension descriptor handler
      libdvbv5: fix T2 delivery descriptor handler
      libdvbv5: fix dvb-scan handler for T2 descriptor
      libdvbv5: fix terrestrial delivery constellation table
      libdvbv5: change log level for the two nit handler messages
      libdvbv5/dvb-scan: Remove dead code and add a check after realloc()
      libdvbv5: don't use realloc() inside pat.c
      dvbv5-scan: fix detection of duplicated freqs at the input file
      libdvbv5: fix error condition on ATSC service location descriptor
      libdvbv5: fix error condition on ISDBT delivery descriptor
      libdvbv5: Fix other error conditions for out of memory
      dvb5-zap: Better handle the MPEG TS header
      libdvbv5/dvb-scan: all tables should have an specified size
      libdvbv5: pack NIT table
      libdvbv5: fix other error conditions for out of memory
      libdvbv5: fix some out-of-bound acesses on hexdump()
      libdvbv5: Simplify PAT handling
      libdvbv5: simplify NIT table parser
      libdvbv5: cleanup PAT table parser
      libdvbv5: simplify PMT table parser
      libdvbv5: simplify SDT table parser
      libdvbv5: simplify VCT table parser
      dvb/README: Remove some obsolete data
      dvbv5-zap: fix all-pids record mode
      libdvbv5: fix memory leak at ISDB partial reception handler
      libdvbv5: Fix memory leak at TS info handler
      dvb-fe: be a little less verbose with verbosity level 1
      dvbv5-zap: on all pids mode, we can use the frequency
      dvbv5-zap: fix frontend status handling
      dvbv5-zap: allow using a frequency for a channel on exit after tuning
      libdvbv5: Fix a warning at isdb_desc_partial_reception_free
      libdvbv5: fix retrieve parameters for ISDB-T
      libdvbv5/dvb-fe: Fall back to v3 if needed
      libdvbv5: Only discard the services not found
      dvb-fe: fix using a DVB-T file for ISDB-T
      dvb: simplify the logic that sets a (compat) DTV delivery system
      dvb-scan: remove ISDB-T hack from it
      libdvbv5: fix get_frontend logic
      Replace my email address with the new one
      libdvbv5: move store/retrieve functions upper
      libdvbv5: better handle ATSC/Annex B
      dvb-scan: fix a print message
      descriptors: be sure to not read past the buffer
      vct: avoid read descriptors past the buffer
      dvb-demux: add code for DVB section filter
      dvb: Fix VCT handling
      dvb-scan: don't handle NIT table by default on ATSC
      dvb-fe: Add support for setting the LNA before tuning
      dvb: add support for LNA setting at scan and zap
      dvb-fe: Use a separate call to change LNA settings
      Add a parser for drxj
      Revert "dvb-scan: don't handle NIT table by default on ATSC"
      libdvbv5: better document some MPEG TS fields
      libdvbv5: reimplement the logic that gets a full section
      dvbv5-zap: only start audio filtering if audio PID > 0
      libdvbv5: Frequency is unsigned. use %u to print it
      libdvbv5: fix ISDB-T frequency calculus on 32 bits machines
      libdvbv5: move ISDB-T frq conversion to the descriptors code
      libdvbv5: fix the area code size on ISDB-T
      dvbv5-zap: fix usage of --record without --output
      dvbv5-zap: Make dvbv5 as the default format
      dvbv5-zap: better implement the --record flag
      dvbv5-zap: only open the DVR interface if outputing
      dvb-zap: fix --search argument
      libdvbv5: Change license to LGPL v2.1
      libdvbv5: Remove two warnings on 32 bits compilation
      Revert "libdvbv5: Change license to LGPL v2.1"
      libdvbv5: don't override a parameter when setting lna
      libdvbv5: Fix the speedup scan condition
      dvb-file: Fix bandwidth handling at online write function
      contrib: add a parser for dib0700
      parse_dib0700.pl: parse the remaining messages on dib0700
      parse_dib0700.pl: improve parser
      parse_dib0700.pl: add support to identify delays
      parse_dib0700.pl: Make the delays multiple of 10ms
      parse_dib0700.pl: autoflush writes
      parse_dib0700.pl: Parse REQUEST_SET_I2C_PARAM
      parse_dib0700.pl: parse REQUEST_GET_VERSION

Ricardo Ribalda Delgado (2):
      libv4lconvert: Support for Y16 pixel format
      libv4lconvert: Support for RGB32 and BGR32 format

Rob Barker (1):
      libdvbv5: Find other TS in NIT pointer fix

Stefan Ringel (1):
      v4l-utils: bugfix memory chunk

Thiago Santos (1):
      libv4l2: release the lock before doing a DQBUF



v4l-utils-1.0.0
---------------

Devin Heitmueller (1):
      Don't call G_TUNER unless actually performing a tuning related call

Diego Viola (1):
      Fix spelling of Qt in .desktop file (typo)

Gregor Jasny (20):
      qv4l2: Silence Qt build tools invocation if silent mode is enabled
      buildsystem: Do not bootstrap complete gettext for testing iconv
      libdvb: Disable library installation by default
      keytable: Always check if strtok return value is null
      libv4lconvert: Prevent integer overflow by checking width and height
      xc3082: Fix use after free in free_firmware()
      libdvbv5: Fix reallocation in parse_lcn
      rds-ctl: Always terminate strings properly
      libdvbv5: Fix copy and paste error in parse_service()
      libv4lconvert: Avoid division by 0 if gamma value is corrupted
      pixfmt-test: Explicitely mention fall-through
      v4l2-ctl: Do not read past end of num_planes array
      libv4lconvert: Fix resource leak in sq905 error path
      xc3028: Remove duplicate const
      libdvbv5: Actually check for lock
      libdvbv5: Free all memory in read_dvb_file error path
      libdvbv5: Free all memory in parse_format_oneline error path
      libdvbv5: Free tbl in dvb_read_section_with_id error paths
      libdvbv5: Properly free temporary variables at end of parse_string
      libdvbv5: Remove dead code in read_dvb_file.

Guy Martin (6):
      libdvbv5: Remove buggy parsing of extra DTV_foo parameters
      libdvbv5: Add parsing of POLARIZATION
      libdvbv5: Export dvb_fe_is_satellite()
      libdvbv5: Fix satellite handling and apply polarization parameter to the frontend
      libdvbv5: Use a temporary copy of the dvb parameters when tuning
      dvbv5-zap: Parse the LNB from the channel file

Hans Verkuil (20):
      v4l2-dbg: remove unused source.
      v4l2-compliance: refactor code to create invalid formats.
      v4l2-compliance: improve overlay clipping tests.
      v4l2-compliance: check that g_register fills the size field.
      rds-ctl: fix percentage handling.
      rds-ctl: support -d10 to refer to radio10.
      v4l2-compliance: fix typo
      v4l2-ctl: fix wrong array accesses in selection code.
      v4l2-ctl: V4L2_BUF_TYPE_PRIVATE is no longer used.
      Remove references to v4l2-chip-ident.h
      Sync with latest 3.10.0-rc7  kernel.
      libv4l2/log.c: add entry for new VIDIOC_DBG_G_CHIP_INFO ioctl.
      Remove committed v4l2-chip-ident.h headers.
      Sync with 3.11 kernel.
      qv4l2: always update controls by default
      libv4l2rds: fix coverity issues.
      rds-ctl: fix coverity issues.
      v4l2-dbg: fix coverity issues.
      v4l2-ctl: fix coverity issues.
      v4l2-ctl: (*XX).Foo -> XX->Foo

Hans de Goede (3):
      libv4l2: Add logging of dqbuf timestamps to debug logging
      libv4l2: Add V4L2_PERROR convenience macro
      libv4l2: do not log a ton of errors on device unplug

Konke Radlow (3):
      libv4l2rds: support RDS-EON and TMC-tuning info
      rds-ctl: support RDS-EON and TMC-tuning info
      libv4l2rds.c: moving functions to get rid of declarations

Mauro Carvalho Chehab (3):
      dvbv5-zap: sort the params by the key letter
      dvbv5-zap: add an option to not filter pids
      parse_string: fix encodings for Taiwan

Ricardo Ribalda Delgado (1):
      v4l2_compliance: -EINVAL is expected when ret is not 0

v4l-utils-0.9.5
---------------

Gregor Jasny (1):
      contrib: Add missing dist files for ioctl-test

v4l-utils-0.9.4
---------------

André Roth (3):
      libv4l-mplane: Fix compile flags to allow anonymous unions with gcc 4.5.5
      libdvbv5: fix compile error
      libdvbv5: fix anonymous unions on older gcc

Antonio Ospite (2):
      contrib/m920x/m920x_parse.pl: stricter check when extracting firmware
      contrib/m920x/m920x_parse.pl: silence a warning

Gregor Jasny (4):
      libv4l: Add ASUS F2F with STK DC-1125 to upside down list
      libv4l: Add Founder PC T14MF to upside down table
      contrib: Add missing files to distribution list

Hans Petter Selasky (1):
      libv4l: Don't try to access sysfs 256 times when there is no sysfs

Hans Verkuil (52):
      qv4l2: add missing information for string and integer controls
      qv4l2: add support for control events.
      v4l2-compliance: allow EINVAL to be returned by S/TRY_FMT.
      qv4l2: fix setting frequency for radio modulators
      v4l-utils: sync with latest kernel.
      v4l2-ctl: show used timestamp type.
      v4l2-compliance: add check whether the timestamp is monotonic.
      v4l-utils: fix make install problems with ln -s
      v4l-utils: fix two 'dereferencing type-punned pointer' warnings
      v4l2-compliance: reorganize verbosity options
      ioctl-test: improve comments and add checks against ioctl num changes.
      v4l2-compliance: improve read/write error reporting.
      qv4l2: don't show "Query Standard" button if QUERYSTD isn't supported.
      qv4l2: correctly update frame width and height for fixed resolutions.
      v4l2-ctl: improve interval reporting.
      v4l2-ctl: when streaming to file use bytesused instead of the full buffer.
      v4l2-ctl: improve dv_timings reporting.
      v4l2-ctl: support data_offset when streaming multiplanar formats.
      v4l2-ctl: show buffers or key/P/B-frames when capturing.
      v4l2-* utils: allow -d11 to refer to /dev/video11
      v4l-utils: run sync-with-kernel.
      v4l2-ctl: add support for 'COPY' timestamp and ctrl range events.
      v4l2-compliance: add support for the new 'COPY' timestamp type.
      v4l2-compliance: missing check on the frameinterval
      v4l2-compliance: improve tests when TRY/S_FMT returns EINVAL.
      qv4l2: do nothing if querystd does not detect a standard.
      qv4l2: handle control range updates.
      libv4l2/log.c: update list of ioctls.
      v4l2-compliance: fix s_std test: ENODATA is a valid error code.
      v4l2-ctl: don't produce verbose output for QBUF while streaming.
      qv4l2: fix the way interlaced formats are displayed
      v4l2-ctl: fix the field-per-second calculation
      qv4l2/v4l2-ctl: fix the fields-per-second calculation
      qv4l2/v4l2-ctl: fix rounding error in field-per-second calculation
      v4l2-ctl: add the --concise option.
      v4l-utils: sync with kernel, remove all references to the DV_PRESET API.
      v4l-utils: sync to the latest kernel.
      v4l-utils: sync-with-kernel.
      v4l2-compliance: remove ChipIdent tests
      v4l2-ctl: set bytesused for streaming to the output.
      v4l2-compliance: fix RDS + CAP_READWRITE tests.
      v4l2-compliance: really fix the RDS and V4L2_CAP_READWRITE tests
      v4l2-ctl: add eos and decoder-stop support.
      v4l2-ctl: use references instead of pointers.
      v4l2-ctl: fix a small bug in the stream-count/skip handling.
      v4l2-ctl: split off test pattern generation in a separate source.
      v4l2-ctl: small improvements.
      v4l2-ctl: poll/non-poll behavior fixes
      v4l2-ctl: find_pixel_format couldn't handle output streams.
      v4l-utils: sync with latest kernel.
      v4l2-dbg: replace CHIP_IDENT with CHIP_INFO.
      v4l2-ctl: introduce buffers class to simplify the streaming code

Jean Delvare (1):
      dvbv5-zap: Fix build warning

Laurent Pinchart (2):
      v4l2-compliance: Print invalid return codes in control tests
      v4l2-compliance: Print invalid error_idx values in control tests

Mauro Carvalho Chehab (50):
      ir-keytable: Add support for testing EV_ABS events
      keytable: merge two identical structures into one
      keytable: reorder functions to put similar code together
      keytable: Add handler for EV_REL type
      keytable: also print code for unknown/unhandled events
      keytable: Put events in numeric order
      keytable: Add the remaining other unhandled events
      keytable: Make the parsing code more generic
      keytable: properly print the other MSC_* event names
      keytable: be clear when a value is in hexadecimal
      keytable: always use hexadecimal values for scancodes
      dvbv5-zap: Allow to enable FE debug
      Sync with kernel, with DVB stats
      dvb-fe: add support for DVBv5 stats
      dvbv5-zap: use the new DVBv5 stats API
      dvb-fe: Add a flag to indicate if DVBv5 stats is in use
      dvb-fe: Improve BER measurements for DVBv5
      dvb-fe: Allow returning BER in a float value
      dvbv5-zap: better display BER
      dvb-fe: Add a method to report PER
      dvb: Move the core of the stats logic to dvb-fe
      dvb-fe: Fix PER statistics measurement
      dvb-fe: Add support for a quality measurement
      dvb: Rename a few DVB statistics
      dvb: Add support for retrieving pre-BER data
      dvb: use a macro for the number of Kernel stats
      dvb: Better name the post-BER data
      dvb: add support for pre-BER measurement
      dvb: if the signal vanishes, bit/block error counters should vanish
      dvbv5-zap: improve status display
      dvbv5-scan: use library support for stats print
      dvbv5-scan: also prints signal strength on tuner fail
      ioctl-test: Auto-generate the list of ioctls to test
      Add DVB headers to make sync-with-kernel
      ioctl-test: expand it to also test DVB frontend/demux
      dvbv5-scan: Fix get_signal logic
      dvb-fe: Fix check for stats property
      dvb-fe: Reserve space for the other DVBv5 properties
      dvbv5-zap: Only go back if is there anything to clean
      dvb5-scan: Improve output to better show the status
      dvbv5-scan: don't be too verbose with status
      dvb-scan: Don't call dvb_fe_get_stats() twice
      dvb-fe: Supress statistics if signal lock vanishes
      dvbv5-scan: timeout-multiply should also affect the timeout for scan
      dvbv5-zap: add traffic monitor support
      dvbv5-zap: output stats to stdout on monitor mode
      dvbv5-zap: Better output at monitor mode
      dvbv5-zap: don't stop monitoring for buffer underrun
      dvbv5-zap: better represent low_traffic data in monitor mode
      dvbv5-zap: print elapsed time when buffer overflow happens

Riku Voipio (1):
      v4l-utils: use openat when available

Tzu-Jung Lee (2):
      v4l2-ctl: break down the streaming_set()
      v4l2-ctl: initial attempt to support M2M device streaming

v4l-utils-0.9.3
---------------
* Synced with latest kernel headers

* v4l2-ctl changes
  * fixed bug in parse_subopt
  * --list-buffers didn't work for multiplanar formats

* v4l2-compliance
  * work around missing ENODATA on (k)FreeBSD
  * add test whether V4L2_MEMORY_DMABUF is supported
  * add the new EXPBUF ioctl

v4l-utils-0.9.2
---------------
* libv4l changes
  * Add a libv4l plugin for mplane handling

* v4l2-ctl changes
  * load initial frames from the file as well
  * add --stream-loop for streaming to an output
  * zero bytesperline

* test utility changes
  * Add an OpenGL test application to test utilities in contrib

* buildsystem changes
  * Use udev pkgconfig file to populate installation directory
  * Query Qt rcc tool location and fall back to rcc if not available

v4l-utils-0.9.1
---------------
* libv4l changes
  * Various Pixart JPEG fixes
  * Add more notebooks to the upside down device table
  * Use bytesperline instead of width (Robert Abel)
  * Better luminance quantization table for Pixart JPEG (Jean-Francois Moine)
  * Fix out of bounds array usage
  * Prevent GCC 4.7 inlining error
  * Add support for libjpeg >= v7
  * Add new matching algorithm for upside down table
  * Retry with another frame on JPEG header decode errors
  * Improved JL2005BCD support (Theodore Kilgore)
  * Set errno to EIO if getting 4 consecutive EAGAIN convert errors
  * Make software autowhitebalance converge faster
  * Add quirk support for forced tinyjpeg fallback

* ir-keytable changes
  * Fixed file parsing errors
  * Add support for Sanyo IR and RC-5-SZ protocol
  * Add missing mouse buttons in shipped keytables

* libdvbv5 changes
  * Initial release

* libv4l2rds and rds-ctl
  * Initial release (Konke Radlow)

* qv4l2 changes
  * Fix segfault when there are no inputs or outputs
  * Fix endianess issues
  * Add support for new timing ioctls
  * Improve frequency and radio support
  * Add VBI support
  * Add ability to make a snapshot
  * Add support to stream raw frames into a file

* buildsystem changes
  * Converted buildsystem to autotools
  * Made buildsystem cross compiling friendly
  * Support out of tree builds

v4l-utils-0.8.5
---------------
* Utils changes
  * parse_em28xx_drxk.pl: New parser for dumps of em28xx with drxk frontend
    (mchehab)
  * qv4l2: Add support for bitmap controls (hverkuil)
  * v4l2-ctl: add support for the new bitmask control type (hverkuil)
  * v4l2-ctl: add support for the control event (hverkuil)
  * v4l2-ctl: small bugfixes (hverkuil)
  * v4l2-compliance: various new tests (hverkuil)
  * lib_media_dev: various fixes / cleanups (hdegoede)
* libv4l changes
  * Add some more laptop models to the upside down devices table (hdegoede)
  * Add support for SE401 pixelformat (hdegoede)
  * Software autogain tweaks (hdegoede)

v4l-utils-0.8.4
---------------
* Utils changes
  * Various small fixes (hverkuil, mchehab)
  * qv4l2: Add support for configuring the framerate for devices which support
    this like uvc cams (hdegoede)
  * parse_tcpdump_log.pl: new parser for tcpdump / wireshark made usbmon
    dumps (mchehab)
  * New lib_media_dev lib, to pair audio devices with video devices
    (and other combinations) for now this lives in utils and does not get
    installed systemwide, as the API is not stable (mchehab)
* libv4l changes
  * Add many more laptop models to the upside down devices table (hdegoede)
  * Some small bugfixes (hdegoede)
  * Add vicam cameras to list of cameras need sw auto gain + whitebalance
    (hdegoede)
  * Add support for M420 pixelformat (hdegoede)
  * Add support for Y10B pixelformat (Antonio Ospite)
  * Add support for JPGL pixelformat (jfmoine)
  * Modified (rewrote) jpeg decompression code to use libjpeg[-turbo], for
    much lower cpu load when doing jpeg decompression (hdegoede)
  * Detect usb connection speed of devices (hdegoede)
  * Rewrite src format selection algorithm, taking bandwidth into account and
    choosing the format which will give us the lowest CPU load while still
    allowing 30 fps (hdegoede)
  * Intercept S_PARM and redo src format selection based on new fps setting,
    potentially switching from JPG to YUYV / M420 when the app lowers the
    fps, resulting in a significant lower cpu load (hdegoede)

v4l-utils-0.8.3
---------------
* Utils changes:
  * Various ir-keytable improvements (mchehab)
  * Various cx231xx parser improvements (mchehab)
* libv4l changes
  * Add a few more laptop models to the upside down devices table (hdegoede)
  * Make libv4l1 compile with kernels >= 2.6.38, which no longer have the
    v4l1 linux/videodev.h header (hdegoede)

v4l-utils-0.8.2
---------------
* Utils changes:
  * Various ir-keytable improvements (mchehab)
  * Various qv4l2 fixes (hverkuil, hdegoede)
  * Various v4l2-ctl fixes (hverkuil)
  * Add parsers for cx231xx i2c, saa7134 pci, sn9c201 usb and generic usb
    logs (mchehab)
  * v4l2-compliance: lots of new tests (hverkuil)
* libv4l changes
  * Add many more laptop models to the upside down devices table (hdegoede)
  * Add support for 8-bits grey format (V4L2_PIX_FMT_GREY) (mchehab)

v4l-utils-0.8.1
---------------
* Utils changes:
  * Various v4l-keytable improvements (mchehab)
  * Various qv4l2 fixes (hverkuil)
  * v4l2-ctl: Added support for s/g_dv_timings (Mats Randgaard)
* libv4l changes (hdegoede):
  * Add many more laptop models to the upside down devices table
  * Detect short frames (and retry upto 3 times to get a non short frame)
  * Support (uvc) cameras with more then 16 framesizes properly (Balint Reczey)
  * libv4l1 no longer relies on the kernel v4l1 compat ioctl handling, many
    thanks to Huzaifa Sidhpurwala for his work on this!
  * Add support for Xirlink C-It YYVYUY
  * Add support for konica yuv420 format

v4l-utils-0.8.0
---------------
* Utils changes:
  * Various v4l-keytable improvements (mchehab)
  * Various v4l2-ctl fixes (hverkuil)
  * Various qv4l2 fixes (hverkuil)
* libv4l changes (hdegoede):
  * Add many more laptop models to the upside down devices table
  * Some minor bugfixes

v4l-utils-0.7.91
----------------
* Utils changes:
  * Improve v4l-keytable to better support IR (mchehab)
  * Rename v4l-keytable to ir-keytable (mchehab)
* libv4l changes (hdegoede):
  * Add more laptop models to the upside down devices table
  * Ignore convert errors in the first few frames of a stream

v4l-utils-0.7.90
----------------
* This is the first release of v4l-utils, v4l-utils is the combination
  of various v4l and dvb utilities which used to be part of v4l-dvb
  mercurial kernel tree and libv4l.
* This first version is 0.7.90, as the version numbers continue were libv4l
  as a standalone source archive stops.
* libv4l changes:
  * Add more laptop models to the upside down devices table
  * Fix Pixart JPEG ff ff ff xx markers removal, this fixes the occasional
    corrupt frame we used to get (thanks to Németh Márton)
  * Enable whitebalance by default on various sonixj based cams
  * Enable whitebalance + gamma correction by default on all sonixb cams
  * Enable gamma correction by default on pac7302 based cams

Note all history below this line only applies to libv4l and not to the utils
----------------------------------------------------------------------------

libv4l-0.6.4
------------
* Add more laptop models to the upside down devices table
* Add error checking to mr97310a decompression
* Increase mr97310a minimum clockdiv upon 3 consecutive decoding errors
* Add support for decompressing CPIA1 compressed YUV
* Speed up autogain algorithm

libv4l-0.6.3
------------
* Add more laptop models to the upside down devices table
* Improved mr97310a decompression
* Add support for decompressing yuv420 planar JPEG (one component per SOS,
  3 SOS per frame), this is needed for w9968cf based cams
* Add support for STV0680 raw bayer data

libv4l-0.6.2
------------
* Add more laptop models to the upside down devices table
* Put usb id in controls shm segment name for USB devices, to better
  distuingish between devices plugged into the same port
* Enable software whitebalance and autogain for mr97310a cameras
* Improvements / tweaks to software autogain algorithm

libv4l-0.6.1
------------
* Add more laptop models to the upside down devices table
* Makefile changes to make life easier for the Debian package (Gregor Jasny)
* Bugfix: fixup 320x240 output for pac7302 cameras
* README improvements / clarifications (Bifferos)
* Bugfix: fix reqbuf Device or Resource busy error when using v4l2_read()
* Some applications want to use jpg format if possible, so do not hide
  it from the apps (do not assume it always needs conversion)
* Change controls shm segment name to include the username, as it is only
  writable by the user (this means libv4l controls are per user) (Gregor Jasny)
* Add support for decompressing sn9c2028 compressed bayer (Theodore Kilgore)
* Report V4L2_FMT_FLAG_EMULATED in v4l2_fmtdesc flags for emulated formats

libv4l-0.6.0
------------
* Recognize disabled controls and replace with fake equivalents where
  available
* Add support for decompressing ov511 and ov518 "JPEG", by piping data through
  an external helper as I've failed to contact Mark W. McClelland to get
  permission to relicense the code. If you know a working email address for
  Mark W. McClelland, please let me know.
* Add tons of laptop models to the upside down devices table
* Support for rgb565 source format by Mauro Carvalho Chehab
* Many bug fixes (see the mercurial tree for details)
* Improved pac207 decompression code to also support higher compression
  modes of the pac207, which enables us to use higher framerates.
  Many many thanks to Bertrik Sikken for figuring the decompression out!

libv4l-0.5.99
-------------
* Link libv4lconvert with -lm for powf by Gregor Jasny
* Fix black screen on devices with hardware gamma control
* Fix crash with devices on which we do not emulate fake controls
* Add a patch by Hans Petter Selasky <hselasky@freebsd.org>, which should
  lead to allowing use of libv4l (and the Linux webcam drivers ported
  to userspace usb drivers) on FreeBSD, this is a work in progress

libv4l-0.5.98
-------------
* Add software gamma correction
* Add software auto gain / exposure
* Add support for separate vflipping and hflipping
* Add fake controls controlling the software h- and v-flipping
* Add ability to determine upside down cams based on DMI info
* Add the capability to provide 320x240 to apps if the cam can only
  do 320x232 (some zc3xx cams) by adding black borders
* Rewrite video processing code to make it easier to add more video filters
  (and with little extra processing cost). As part of this the normalize
  filter has been removed as it wasn't functioning satisfactory anyways
* Support V4L2_CTRL_FLAG_NEXT_CTRL for fake controls by Adam Baker
* Some makefile improvements by Gregor Jasny
* Various small bugfixes and tweaks
* The V4L2_ENABLE_ENUM_FMT_EMULATION v4l2_fd_open flag is obsolete, libv4l2
  now *always* reports emulated formats through the ENUM_FMT ioctl

libv4l-0.5.97
-------------
* As the version number shows this is a beta release of the 0.6.x series,
  the big change here is the addition of video processing to libv4l
  currently this only does whitebalance and normalizing (which turns out
  to be useless for most cams) but the basic framework for doing video
  processing, and being able to control it through fake v4l2 controls using
  for example v4l2ucp is there.
  The initial version of this code was written by 3 of my computer science
  students: Elmar Kleijn, Sjoerd Piepenbrink and Radjnies Bhansingh
* Currently whitebalancing gets enabled based on USB-ID's and it only gets
  enabled for Pixart webcam's. You can force it being enabled with other
  webcams by setting the environment variable LIBV4LCONTROL_CONTROLS, this
  sets a bitmask enabling certain v4l2 controls which control the video
  processing set it to 15 to enable both whitebalancing and normalize. You
  can then change the settings using a v4l2 control panel like v4l2ucp
* Only report / allow supported destination formats in enum_fmt / try_fmt /
  g_fmt / s_fmt when processing, rotating or flipping.
* Some applications / libs (*cough* gstreamer *cough*) will not work
  correctly with planar YUV formats when the width is not a multiple of 8,
  so crop widths which are not a multiple of 8 to the nearest multiple of 8
  when converting to planar YUV
* Add dependency generation to libv4l by: Gilles Gigan <gilles.gigan@gmail.com>
* Add support to use orientation from VIDIOC_ENUMINPUT by:
  Adam Baker <linux@baker-net.org.uk>
* sn9c20x cams have occasional bad jpeg frames, drop these to avoid the
  flickering effect they cause, by: Brian Johnson <brijohn@gmail.com>
* adjust libv4l's upside down cam detection to also work with devices
  which have the usb interface as parent instead of the usb device
* fix libv4l upside down detection for the new v4l minor numbering scheme
* fix reading outside of the source memory when doing yuv420->rgb conversion

libv4l-0.5.9
------------
* Add support for MR97310A decompression by Kyle Guinn <elyk03@gmail.com>
* Add support for sq905c decompression by Theodore Kilgore
  <kilgota@auburn.edu>
* Add hm12 support for the cx2341x MPEG encoder devices by Hans Verkuil
  <hverkuil@xs4all.nl>

libv4l-0.5.8
------------
* Add support for UYVY (for USB Apple iSight) patch by Julien BLACHE
  <jb@jblache.org>
* Remove v4lconvert_yvyu_to_yuv420 function as its functionality is
  duplicate with v4lconvert_yuyv_to_yuv420
* Use Requires.private where appropiate in .pc files (patch by Gregor Jasny)
* Switch to using USB-id's instead of USB product string, as not all devices
  set a unique product string. This fixes the upside down issues with
  genius e-messenger 112 cams
* Add support for sn9c20x-i420 format patch by Vasily Khoruzhick
  <anarsoul@gmail.com>

libv4l-0.5.7
------------
* Fix a nasty (and stupid) bug in the special try_fmt handling for UVC cams
* Add some more verbose logging of various calls when asking libv4l to log
  calls to a file, to assist in (future) debugging

libv4l-0.5.6
------------
* Always do a s_fmt on uvc cams even if this changes nothing, as not doing
  the s_fmt triggers a bug in the uvcvideo driver in kernel <= 2.6.28
  (with certain cams)

libv4l-0.5.5
------------
* Avoid the use of try_fmt as much as possible on UVC cams, instead use the
  results of the enum_framesizes ioctl. This is because:
  1) try_fmt actually causes IO with UVC cams making apps which do lot of
     querrying of device capabilities slow (cheese)
  2) some buggy cams don't like getting lots of UVC video probes and crash
     when they do

libv4l-0.5.4
------------
* Don't report DQBUF errors when errno is EAGAIN, this fixes flooding the
  screen with errors when applications use non blocking mode
* Add support for downscaling to make apps which want low resolutions
  (skype, spcaview) happy when used with cams which can only do high
  resolutions (by Lukáš Karas <lukas.karas@centrum.cz>).
* Add support for converting to YV12 planar (next to the already supported
  YU12 / I420)
* Implement RGB/BGR24 -> YU/YV12 conversion

libv4l-0.5.3
------------
* When conversion requires multiple passes don't alloc the needed temporary
  buffer on the stack, as some apps (ekiga) use so much stack themselves
  this causes us to run out of stack space

libv4l-0.5.2
------------
* Add Philips SPC210NC to list of cams with upside down sensor, reported by
  Rieker Flaik
* Work around some drivers (pwc) not properly reflecting what one gets after a
  s_fmt in their try_fmt answer
* Check that s_fmt atleast gives us the width, height and pixelformat try_fmt
  promised us, and if not disable conversion
* Only check width, height and pixelformat when checking if we are doing
  conversion, instead of doing a memcmp, as that are the only things which
  the convert code checks
* Take into account that the buffers only contain half of the lines when
  field is V4L2_FIELD_ALTERNATE

libv4l-0.5.1
------------
* Add support for software cropping from 352x288 -> 320x240 / 176x144 ->
  160x120, so that apps which will only work with vga resolutions like
  320x240 (Skype!) will work with cams/drivers which do not support cropping
  CIF resolutions to VGA resolutions in hardware. This makes all 2.6.27 gspca
  supported cams, except for the pac7302 which only does 640x480 (and skype
  wants 320x240), work with skype
* The v4lconvert_convert function was becoming a bit of a mess, so split the
  functionailiy into separate v4lconvert_convert_pixfmt, v4lconvert_rotate and
  v4lconvert_crop functions, and make v4lconvert_convert a frontend to
  these
* Do not link the wrapper libs against libpthread (patch from Gregor Jasny)

libv4l-0.5.0
------------
* Add support for enumerating framesizes and frameintervals of emulated
  formats when the driver supports it for the real format
* Make sure the video device always gets opened RW even if the application
  asks for RO
* Add Genius E-Messenger 112 (093a:2476) to list of cams which have their
  sensor upside down

libv4l-0.4.3
------------
* Add suport for YUYV and YVYU packed pixel formats (Jean-Francois Moine)
* Prefer compressed pixformats for resolutions > 176x144

libv4l-0.4.2
------------
* The bayer pixel order in gspca's sonixb driver was different from that in
  the sn9c102 driver from the mainline kernel, a recent gspca patch fixes
  this, adjust libv4l to match (and make it work properly with the sn9c102
  driver).

libv4l-0.4.1
------------
* When the driver supports read() and we are not converting let the driver
  handle read() instead of emulating it with mmap mode
* Fix errors and warnings when compiling with ICC (Gregor Jasny)
* Add support to libv4lconvert for rotating images 90 (for Pixart 7302 cams)
  or 180 (Philips SPC200NC / Philips SPC300NC) degrees
* Add support for Pixart custom JPEG format
* Hide non public symbols (Gregor Jasny)
* Fix and enable x86_64 asm jpeg decompress helper functions (Gregor Jasny)

libv4l-0.4.0
------------
* Be more relaxed in our checks for mixing read and mmap access, we were
  being more strict in this then certain kernel drivers (bttv) making xawtv
  unhappy
* With some drivers the buffers must be mapped before queuing, so when
  converting map the (real) buffers before calling the qbuf ioctl
* Add support for conversion to RGB24 (before we only supported BGR24) based
  on a patch by Jean-Francois Moine
* When the hardware supports a format natively prefer using the native
  version over converting from another supported format
* Various Makefile and pkgconfig file improvements by Gregor Jasny (Debian)
* Drop the appl-patches dir, all application patches are now available and
  tracked here: http://linuxtv.org/v4lwiki/index.php/Libv4l_Progress


libv4l-0.3.9
------------
* Not only see /dev/video* but also /dev/v4l/* as video devices
  (only affects libv4l1 and the wrappers) patch from Brandon Philips
* Silence the creation of the .pc files in the Makefiles (Brandon Philips)
* Part of the copyright headers refered GPL instead of LGPL due to a copy
  and paste error (Brandon Philips)


libv4l-0.3.8
------------
* work around wrong REQUEST_BUFFERS ioctl return code from certain drivers
* add pkg-config (.pc) files for easier detection if libv4l is available
* check capabilities for streaming, if the driver cannot do streaming don't
  insert ourselves between the application and the driver
* intercept get capabilites and report read capability (which we always offer)
* query buffer: indicate the mapping state of our (fake) buffer in the flags


libv4l-0.3.7
------------
* Add spca505/6 and spca508 cam specific formats (YUYV per line variations)


libv4l-0.3.6
------------
* Add missing COPYING.LIB file


libv4l-0.3.5
------------
* Make JPEG decoding more robust


libv4l-0.3.4 (the brownpaperbag release)
----------------------------------------
* The mmap64 support in 0.3.3, has caused a bug in libv4l1 when running on
  32 bit systems (who uses those now a days?), this bug caused v4l1
  compatibility to not work at all, this release fixes this
* Some apps (xawtv, kopete) use an ioctl wrapper internally for various
  reasons. This wrappers request argument is an int, but the real ioctl's
  request argument is an unsigned long. Passing the VIDIOC_xxx defines through
  to the wrapper, and then to the real ioctl, causes the request to get sign
  extended on 64 bit args. The kernel seems to ignore the upper 32 bits,
  causing the sign extension to not make a difference. libv4l now also
  ignores the upper 32 bits of the libv4lx_ioctl request argument on 64 bit
  archs
* Add a bugfix patch for kopete in the appl-patches dir, currently it assumes
  that it got the width and height it asked for when doing a S_FMT, which is a
  wrong assumption


libv4l-0.3.3
------------
* Add open64 and mmap64 wrappers to the LD_PRELOAD wrapper libs, so that
  they also work for applications compiled with FILE_OFFSET_BITS=64, this
  fixes using them with v4l-info
* While looking at xawtv in general, found a few bugs in xawtv itself, added
  a patch to fix those to the appl-patches dir
* Talking about the appl-patches dir, restore that as it accidentally got
  dropped from 0.3.2
* Be more verbose in various places when it comes to logging (esp errors)
* Change v4lconvert_enum_fmt code a bit, so that it is easier to add more
  supported destination formats to libv4lconvert
* Don't return -EINVAL from try_fmt when we cannot convert because the cam
  doesn't have any formats we know. Instead just return as format whatever the
  cam returns from try_fmt, this new behavior is compliant with the v4l2
  api as documented

libv4l-0.3.2
------------
* Add support for converting from sn9c10x compressed data
* Add support for converting from pac207 compressed data
* Add "make install" Makefile target

libv4l-0.3.1
------------
* Only serialize V4L2_BUF_TYPE_VIDEO_CAPTURE type ioctls
* Do not return an uninitialized variable as result code for GPICT
  (fixes vlc, but see below)
* Add an apps-patches directory which includes:
  * vlc-0.8.6-libv4l1.patch, modify vlc's v4l1 plugin to directly call into
    libv4l1, in the end we want all apps todo this as its better then
    LD_PRELOAD tricks, but for vlc this is needed as vlc's plugin system
    causes LD_PRELOAD to not work on symbols in the plugins
  * camorama-0.19-fixes.patch, small bugfixes to camorama's v4l1 support,
    this patch only fixes _real_ bugs in camorama and does not change it to
    work with v4l1compat. Although it does work better with these bugs fixed
    :) With this patch and LD_PRELOAD=<path>/v4l1compat.so it works
    flawless.


libv4l-0.3
----------
* add extern "C" magic to public header files for c++ usage (Gregor Jasny)
* Make libv4l1 and libv4l2 multithread use safe, see README.multi-threading
* Add v4lx_dup() calls (and intercept dup() from the wrappers) this fixes
  use with gstreamer's v4l2 plugin (tested with cheese)
* Hopefully definitely fix compile errors on systems with a broken videodev2.h

libv4l-0.2
----------
*** API change ***
* Change v4lconvert api so that the v4lconvert struct always gets allocated
  by the library, this to make it opaque, so that we can avoid future API
  and ABI changes
* Add support for yuv420 -> bgr24 conversion
* When converting from v4l2 pixelformat to v4l12 palette return
  VIDEO_PALETTE_YUV420P instead of VIDEO_PALETTE_YUV420 for
  V4L2_PIX_FMT_YUV420 as that is what most apps seem to expect
* override kernel v4l1 compat min / max size with our own more accurate values
* fix v4l1 munmap bug where it didn't recognise the buffer being unmapped was
  our fake buffer (fixes gstreamer v4l1 support, checked with cheese)
* add support for reporting the emulated pixelformats with ENUM_FMT, this
  defaults to off, and can be activated by passing a flag to enable it to
  v4l2_fd_open. This gets enabled by default the wrappers.
* v4l2: mmap the real device buffers before doing conversion when DQBUF gets
  called before the application has called mmap (avoid crash).


libv4l-0.1
----------
* major shuffle / rewrite now split into libv4l1, libv4l2, libv4lconvert
  and 2 wrappers for binary compatibility
* rewritten LGPL bayer decoding
* many many other changes and fixes


v4l1-compat-0.6 (V4L2 apps stay working)
----------------------------------------
* Do not go into emulation mode of rgb24 immediately, but only after a
  GPICT ioctl which has not been preceded by a SPICT ioctl, AKA do not get
  in the way of V4L2 read calls by doing conversion on them
* Do not get in the way of mmap calls made by V4L2 applications
* Fix swapping of red and blue in bayer -> bgr24 decode routine
* Remember the v4l1 palette asked for with SPICT and return that, as
  otherwise we loose information when going v4l1 -> v4l2 -> v4l1, for example
  YUV420P becomes YUV420, which are separate in v4l1.


v4l1-compat-0.5 (perfect camorama)
----------------------------------
* Allow changing of format after the buffers have been mapped, by tearing
  down the entire house, changing the fundament and then rebuilding it.
  Now changing the capture resolution in camorama works!
* Fix jpeg decoding error reporting
* Allow jpeg's with a height which is a multiple of 8 (was 16)
* Remove a number of pretty new VIDIOCXXX -> string mappings from log.c,
  fixing compiling with somewhat older kernels


v4l1-compat 0.4
---------------
* Do not even try to change the format in v4l1_compat_set_format(), unless
  _really_ necessary.
* Cleanup ambigious use of src_format (no functional changes)
* Drop the mmap hack for zerocopy access under certain conditions, one of them
  that the cam can deliver the requested format. Although avoiding the
  memcpy in this scenarios is a good thing todo, there were several issues
  with the 0.3 implementation of this, fixing all these means adding lots of
  special cases all over the code. So instead we just drop support and
  always do atleast a memcpy (or a conversion). If an application cannot
  live with the speed penalty this imposes it should be ported to v4l2.
* Now that we've gotten rid of the zerocopy mmap hack, we can safely allow
  mixing read and mmap based IO.
* Explictly include linux/ioctl.h, to fix compile with kernel headers where
  linux/videodev.h doesn't.


v4l1-compat 0.3
---------------
* Don't allow multiple opens, in theory our code can handle it, but not all
  v4l2 devices like it (ekiga does it and uvc doesn't like it).


v4l1-compat 0.2
---------------
* When mmap gets passed an fd of -1 (anonymous map) don't look for it in our
  list of managed fds, as we use -1 to mark unused entries (fixes ekiga
  crashing). Also check for an fd of -1 in the other calls we intercept.
* In close() start with removing the fd from our list of managed fds, this must
  be done first, because as soon as we've done the actual close syscall, the
  fd maybe returned by an open in another thread and we don't want to intercept
  calls to this new fd.
* Make unknown v4l1 palette types a normal level log messages instead of an
  error.
* When an applicaiton changes the width / height through the CMCAPTURE ioctl
  remember the new width and height.
* If the devices initial v4l2 pixformat has no corresponding v4l1 palette, try
  setting a format which does (and which we emulate when necessary) so that
  applicactions which just query the current format (GPICT) and then take
  whatever they get will work (partially fixes camorama)
* Implement our own SWIN instead of using kernel compat layer, for more
  flexibility and better error checking


v4l1-compat 0.1
---------------
* Initial public release.
