001package com.github.sarxos.webcam; 002 003import java.awt.Dimension; 004import java.awt.image.BufferedImage; 005import java.nio.ByteBuffer; 006 007 008/** 009 * Webcam device abstraction. 010 * 011 * @author Bartosz Firyn (SarXos) 012 */ 013public interface WebcamDevice { 014 015 /** 016 * This interface should be implemented by all webcam devices supporting 017 * possibility to access raw bytes or direct bytes buffer from native webcam 018 * device. 019 * 020 * @author Bartosz Firyn (SarXos) 021 */ 022 public static interface BufferAccess { 023 024 /** 025 * Get image in form of raw bytes. Do <b>not</b> use this buffer to set 026 * bytes value, it should be used only for read purpose! 027 * 028 * @return Bytes buffer 029 */ 030 ByteBuffer getImageBytes(); 031 032 } 033 034 public static interface FPSSource { 035 036 /** 037 * Get current device FPS. 038 * 039 * @return FPS 040 */ 041 double getFPS(); 042 043 } 044 045 /** 046 * Get device name. 047 * 048 * @return Device name 049 */ 050 String getName(); 051 052 /** 053 * Get the list of all possible image resolutions. 054 * 055 * @return Possible resolutions 056 */ 057 Dimension[] getResolutions(); 058 059 /** 060 * Get currently set image size. 061 * 062 * @return The size which is currently set 063 */ 064 Dimension getResolution(); 065 066 /** 067 * Set new expected image size. 068 * 069 * @param size the size to be set 070 */ 071 void setResolution(Dimension size); 072 073 /** 074 * Fetch image from underlying camera. 075 * 076 * @return Image 077 */ 078 BufferedImage getImage(); 079 080 /** 081 * Open device, it can be closed any time. 082 */ 083 void open(); 084 085 /** 086 * Close device, however it can be open again. 087 */ 088 void close(); 089 090 /** 091 * Dispose device. After device is disposed it cannot be open again. 092 */ 093 void dispose(); 094 095 /** 096 * Is webcam device open? 097 * 098 * @return True if webcam device is open, false otherwise 099 */ 100 boolean isOpen(); 101}