edgetpuvision (5-1) mendel-chef; urgency=medium

  * Honor bufferpool stride alignment when rendering overlays.

 -- Coral <coral-support@google.com>  Wed, 03 Apr 2019 17:08:25 -0700

edgetpuvision (4-1) mendel-chef; urgency=medium

  * Disable QoS for all pipelines that render to the display.
  * Bump the changelog version for Chef build #3.

 -- Coral <coral-support@google.com>  Tue, 02 Apr 2019 17:08:25 -0700

edgetpuvision (3-1) mendel-chef; urgency=medium

  * Disable QoS events in live camera pipeline.
  * Bump the changelog version for Chef build #2.

 -- Coral <coral-support@google.com>  Thu, 28 Mar 2019 17:08:25 -0700

edgetpuvision (2-1) mendel-chef; urgency=medium

  * Render full size overlays, draw with glvideomixer
  * Add visual separation between text lines.

 -- Coral <coral-support@google.com>  Tue, 19 Mar 2019 17:08:25 -0700

edgetpuvision (1.3-1) mendel-beaker; urgency=medium

  * Add --loop command line parameter for video.
  * Get rid of start/stop buttons in web UI.
  * Set window title to 'Coral'
  * Add parameter to disable SIGINT handling from run_pipeline().
  * Add env var to override index.html file location.
  * Set stdin back to blocking state on exit.
  * Set default streaming resolution to 640x480.
  * Fix missing dependencies.
  * Upload rendered overlays as textures and display with glimagesink.
  * Display model title in overlay.
  * Update classification overlay rendering.
  * Remove demo script from edgetpuvision.
  * Use monospace font to calculate label backround rects.
  * Add Coral logo, fonts, and initial css style.
  * Bug fix: use white color when labels file is not specified.
  * Move info to the bottom left corner on black background.
  * Add shadow to bounding boxes.
  * Add custom bbox color command line parameter.
  * Make server scripts functionally compatible with console ones.
  * Making pipeline code more reusable.
  * Use different colors for different detected objects.
  * Add convenient object representation for detection.
  * Add --bitrate command line param.
  * Simplify code that renders gstreamer pipelines.
  * Remove code redundancy and group some params together.
  * Get rid of explicit use of vpudec filter.
  * Add correct favicon and change web page title.
  * Support relative filenames and paths with spaces.
  * Add width and height values to generated SVGs.
  * Reuse inference code in streaming server.
  * Add headless gstreamer pipelines.
  * Add bounding box area filtering.
  * Move gstreamer pipelines into a separate file.
  * Fix problem with using JPEG images as a source.

 -- Coral <coral-support@google.com>  Fri, 22 Feb 2019 13:56:05 -0800

edgetpuvision (1.2-1) mendel-beaker; urgency=medium

  * Update command line examples and help strings.

 -- Coral <coral-support@google.com>  Mon, 28 Jan 2019 15:01:00 -0800

edgetpuvision (1.1-1) mendel-beaker; urgency=medium

  * Better gstreamer pipelines
  * Inference on image files
  * Streaming from .mp4 file
  * Streaming from any v4l2 source
  * Switching between .tflite models in runtime
  * tpudemo script
  * Simplified API based on python generators

 -- Coral <coral-support@google.com>  Thu, 24 Jan 2019 14:27:56 -0800

edgetpuvision (1.0-1) unstable; urgency=low

  * Initial release.

 -- Coral <coral-support@google.com>  Wed, 16 Jan 2019 21:25:55 +0000
