# HG changeset patch # User Cosimo Cecchi # Date 1210696301 -7200 # Node ID 14b3177cee65d124424fedf3465e62c3761d538a # Parent e288919dcef906357b392d8e2343fa15d3105f6f Aggiornata la relazione. Inseriti gli esempi di uso e il diagramma delle classi. diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/capturemjpeg.uml --- a/docs/relazione/capturemjpeg.uml Mon May 12 13:56:20 2008 +0200 +++ b/docs/relazione/capturemjpeg.uml Tue May 13 18:31:41 2008 +0200 @@ -4,872 +4,1136 @@ -UMLStandard -Java - -CaptureMJPEG -A. Caiazza, C. Cecchi -2008 + +Untitled 1 - -Modello logico -oGF7TwHq3BE8hQAbJBgZzAAA + +analisi +o9xjwxIpp02v4DmTOlZPXwAA +1 + +capturemjpeg +2wUVYY8EfkaWK+W/jM43TgAA 1 - + Overview of capturemjpeg -ZgS93zn03BFhngAbJBgZzAAA - -NrbTDzr03BFhngAbJBgZzAAA -6 - -360 -172 +L8lkL3Qc5kq5N1LDwbGGlQAA + +tAtmRSiZ1km+cO1S9I1ZCQAA +7 + +64 +164 +238 +342 +sUeYIRykyE+NlWGBrfUrAAAA + + +1 +AxisURL + + +False + + +False + + + +sUeYIRykyE+NlWGBrfUrAAAA + + +sUeYIRykyE+NlWGBrfUrAAAA + + +False +sUeYIRykyE+NlWGBrfUrAAAA + + + +944 +304 +230 +69 +d5Gj/OYfJkCptPqAkhEWYgAA + + +1 +ErrorImage + + +False + + +False + + + +d5Gj/OYfJkCptPqAkhEWYgAA + + +d5Gj/OYfJkCptPqAkhEWYgAA + + +False +d5Gj/OYfJkCptPqAkhEWYgAA + + + +408 +20 467 -355 -wqrvDjr03BFhngAbJBgZzAAA - - +368 +hQ1Plolkk0O8EZcTNq2IxgAA + + 1 CaptureMJPEG - + False - + False - -wqrvDjr03BFhngAbJBgZzAAA + +hQ1Plolkk0O8EZcTNq2IxgAA - -wqrvDjr03BFhngAbJBgZzAAA + +hQ1Plolkk0O8EZcTNq2IxgAA - + False -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - -92 -244 + +956 +36 192 -212 -uq8pDzr03BFhngAbJBgZzAAA - - +225 +uDF2Ypds5UKV9oEHI6LZ/AAA + + 1 CircularBuffer - + False - + False - -uq8pDzr03BFhngAbJBgZzAAA + +uDF2Ypds5UKV9oEHI6LZ/AAA - -uq8pDzr03BFhngAbJBgZzAAA + +uDF2Ypds5UKV9oEHI6LZ/AAA - + False -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - -416 -28 + +874,172;956,161 +F80t9tRGiU2YLgQrvJ/07AAA +mFVCeOh9ykqUTLbfIKi0wwAA +iiJ8hVWdN0WJMNeEPog7GwAA + +False +15707963267949 +15 +F80t9tRGiU2YLgQrvJ/07AAA + + +False +15707963267949 +30 +F80t9tRGiU2YLgQrvJ/07AAA + + +False +-15707963267949 +15 +F80t9tRGiU2YLgQrvJ/07AAA + + +-0.507684007796262 +30.0832179129826 +epHead +-buffer +hZ6RBOwTOEmXMkoG9CatiAAA + + +False +523598775598299 +30 +epTail +aYzyA0YQ602OxQ2XJ21MVQAA + + +False +523598775598299 +25 +epHead +hZ6RBOwTOEmXMkoG9CatiAAA + + +False +-523598775598299 +25 +epTail +aYzyA0YQ602OxQ2XJ21MVQAA + + +False +-785398163397448 +40 +epHead +hZ6RBOwTOEmXMkoG9CatiAAA + + +False +785398163397448 +40 +epTail +aYzyA0YQ602OxQ2XJ21MVQAA + + +False +-960 +-988 +50 +8 +hZ6RBOwTOEmXMkoG9CatiAAA + + +False +-960 +-988 +50 +8 +aYzyA0YQ602OxQ2XJ21MVQAA + + + +472 +408 358 95 -4t5ADzr03BFhngAbJBgZzAAA - - +cegAD9gpGUaDIaShqaum3QAA + + 1 MJPEGInputStream - + False - + False - -4t5ADzr03BFhngAbJBgZzAAA + +cegAD9gpGUaDIaShqaum3QAA - -4t5ADzr03BFhngAbJBgZzAAA + +cegAD9gpGUaDIaShqaum3QAA - + False -4t5ADzr03BFhngAbJBgZzAAA +cegAD9gpGUaDIaShqaum3QAA - -124 + +92 44 188 108 -ptxMDzr03BFhngAbJBgZzAAA - - +I7KB97h+KECCTmqlGcH32AAA + + 1 SonyURL - + False - + False - -ptxMDzr03BFhngAbJBgZzAAA + +I7KB97h+KECCTmqlGcH32AAA - -ptxMDzr03BFhngAbJBgZzAAA + +I7KB97h+KECCTmqlGcH32AAA - + False -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA - -594,172;594,122 -EiHN+zr03BFhngAbJBgZzAAA -Pv3UDzr03BFhngAbJBgZzAAA -+s7TDzr03BFhngAbJBgZzAAA - -False -1,5707963267949 -15 -EiHN+zr03BFhngAbJBgZzAAA - -False -1,5707963267949 -30 -EiHN+zr03BFhngAbJBgZzAAA - -False --1,5707963267949 -15 -EiHN+zr03BFhngAbJBgZzAAA +7 + +AxisURL +L8lkL3Qc5kq5N1LDwbGGlQAA +4 +LCzgCBwqlE27Vk75g6R+jgAA +1QCmp3gCxU2UXvO1gGEp3AAA +lKw/ZZHGTUqHxKVktQn4WAAA +x0EgwSN8jkebUKI5XEc1jQAA +12 + +AxisURL +create +sUeYIRykyE+NlWGBrfUrAAAA +1 + +host +String +KGA344x/1kqtekHJI16CMQAA - -False --0,523598775598299 -30 -epHead -FCTN+zr03BFhngAbJBgZzAAA - -False -0,523598775598299 -30 -epTail -hCLN+zr03BFhngAbJBgZzAAA + +getURL +sUeYIRykyE+NlWGBrfUrAAAA +1 + +return +pdkReturn +String +qPsD6plNY0mLggZ6AmHSkQAA - -False -0,523598775598299 -25 -epHead -FCTN+zr03BFhngAbJBgZzAAA - --0,523598775598299 -25 -epTail -1 -hCLN+zr03BFhngAbJBgZzAAA + +setDesiredFPS +sUeYIRykyE+NlWGBrfUrAAAA +2 + +desiredFPS +int +XM4QHVpkwkihX413o0J0zwAA - -False --0,785398163397448 -40 -epHead -FCTN+zr03BFhngAbJBgZzAAA + +return +pdkReturn +XM4QHVpkwkihX413o0J0zwAA +sUeYIRykyE+NlWGBrfUrAAAA - -False -0,785398163397448 -40 -epTail -hCLN+zr03BFhngAbJBgZzAAA - -False --1000 --1000 -50 -8 -FCTN+zr03BFhngAbJBgZzAAA + +setRequiredFPS +sUeYIRykyE+NlWGBrfUrAAAA +2 + +requiredFPS +int +8ovyvQ4BP0ur7iE3AGInIAAA - -False --1000 --1000 -50 -8 -hCLN+zr03BFhngAbJBgZzAAA + +return +pdkReturn +8ovyvQ4BP0ur7iE3AGInIAAA +sUeYIRykyE+NlWGBrfUrAAAA - -283,349;360,349 -+gx9Tzv03BFhngAbJBgZzAAA -+s7TDzr03BFhngAbJBgZzAAA -FFrUDzr03BFhngAbJBgZzAAA - -False -1,5707963267949 -15 -+gx9Tzv03BFhngAbJBgZzAAA + +setResolution +sUeYIRykyE+NlWGBrfUrAAAA +3 + +width +int +ruCGG8hWIEGh95GmP9H/TQAA - -False -1,5707963267949 -30 -+gx9Tzv03BFhngAbJBgZzAAA + +height +int +ruCGG8hWIEGh95GmP9H/TQAA - -False --1,5707963267949 -15 -+gx9Tzv03BFhngAbJBgZzAAA + +return +pdkReturn +ruCGG8hWIEGh95GmP9H/TQAA +sUeYIRykyE+NlWGBrfUrAAAA - -False --0,523598775598299 -30 -epHead -khB9Tzv03BFhngAbJBgZzAAA - -0,523598775598299 -30 -epTail --buffer -qA59Tzv03BFhngAbJBgZzAAA + +setCamera +sUeYIRykyE+NlWGBrfUrAAAA +2 + +camera +int +k9jD9GiJc0OogPhDP3JUIwAA - -False -0,523598775598299 -25 -epHead -khB9Tzv03BFhngAbJBgZzAAA + +return +pdkReturn +k9jD9GiJc0OogPhDP3JUIwAA +sUeYIRykyE+NlWGBrfUrAAAA - -False --0,523598775598299 -25 -epTail -qA59Tzv03BFhngAbJBgZzAAA - -False --0,785398163397448 -40 -epHead -khB9Tzv03BFhngAbJBgZzAAA + +setColorLevel +sUeYIRykyE+NlWGBrfUrAAAA +2 + +colorLevel +int +hQ0WVvWO+U+TvZiFdkzu3wAA - -False -0,785398163397448 -40 -epTail -qA59Tzv03BFhngAbJBgZzAAA + +return +pdkReturn +hQ0WVvWO+U+TvZiFdkzu3wAA +sUeYIRykyE+NlWGBrfUrAAAA - -False --1000 --1000 -50 -8 -khB9Tzv03BFhngAbJBgZzAAA - -False --1000 --1000 -50 -8 -qA59Tzv03BFhngAbJBgZzAAA + +setShowClock +sUeYIRykyE+NlWGBrfUrAAAA +2 + +showClock +boolean +cKpziVKAxkSseoPtMLwfmgAA + +return +pdkReturn +cKpziVKAxkSseoPtMLwfmgAA +sUeYIRykyE+NlWGBrfUrAAAA + +setShowDate +sUeYIRykyE+NlWGBrfUrAAAA +2 + +showDate +boolean +veurHIulgUSyCUM6W/5ykgAA -1 - -it.lilik.capturemjpeg -ZgS93zn03BFhngAbJBgZzAAA -6 - + +return +pdkReturn +veurHIulgUSyCUM6W/5ykgAA +sUeYIRykyE+NlWGBrfUrAAAA + + + +setQuad +sUeYIRykyE+NlWGBrfUrAAAA +2 + +quad +boolean +/bwvNeryXEiRq6NCtO/5OwAA + + +return +pdkReturn +/bwvNeryXEiRq6NCtO/5OwAA +sUeYIRykyE+NlWGBrfUrAAAA + + + +setShowText +sUeYIRykyE+NlWGBrfUrAAAA +2 + +showText +boolean +Zjg8OyDt90eGVU7zRJy9FQAA + + +return +pdkReturn +Zjg8OyDt90eGVU7zRJy9FQAA +sUeYIRykyE+NlWGBrfUrAAAA + + + +setRotation +sUeYIRykyE+NlWGBrfUrAAAA +2 + +rotation +int +LhlpY954FEGxYP5qk2oAFwAA + + +return +pdkReturn +LhlpY954FEGxYP5qk2oAFwAA +sUeYIRykyE+NlWGBrfUrAAAA + + +10 ++lu2MJ/aO06niKehkXU+OAAA +nCZuakrZXEman0z5v/L6vwAA +tB+FtDCRLU+1j8+CgSgpggAA +rTJtXntAAEiQCjKT1/freAAA +ftA0ZbqzcEOG7x0Z4W2twQAA +zNwzQD1waEOOnqFmkrH4LgAA +rtQD9ZCNqECFsens6OfkzgAA +2pv0tgkmIUaHYk8ugfZNZAAA +JzPR+bd570uQ9H3WX2JuXAAA +Xz76biia4EWhQtiiP+CHPAAA +11 + +host +vkPrivate +String +sUeYIRykyE+NlWGBrfUrAAAA + + +desiredFPS +vkPrivate +Integer +sUeYIRykyE+NlWGBrfUrAAAA + + +requiredFPS +vkPrivate +Integer +sUeYIRykyE+NlWGBrfUrAAAA + + +resolution +vkPrivate +Dimension +sUeYIRykyE+NlWGBrfUrAAAA + + +camera +vkPrivate +Integer +sUeYIRykyE+NlWGBrfUrAAAA + + +colorLevel +vkPrivate +Integer +sUeYIRykyE+NlWGBrfUrAAAA + + +showClock +vkPrivate +Boolean +sUeYIRykyE+NlWGBrfUrAAAA + + +showDate +vkPrivate +Boolean +sUeYIRykyE+NlWGBrfUrAAAA + + +quad +vkPrivate +Boolean +sUeYIRykyE+NlWGBrfUrAAAA + + +showText +vkPrivate +Boolean +sUeYIRykyE+NlWGBrfUrAAAA + + +rotation +vkPrivate +Integer +sUeYIRykyE+NlWGBrfUrAAAA + + + +ErrorImage +vkPackage +L8lkL3Qc5kq5N1LDwbGGlQAA +4 +0eb0GBVtl0+5Xpe5kKsnLwAA +owVZuzaiXUWHvwrdBHUh9gAA +YsLR5LUy2k2Io5uW3xI8BwAA +tpdGE3WyUUCvCCjx6vH+iAAA +2 + +ErrorImage +create +d5Gj/OYfJkCptPqAkhEWYgAA +1 + +err +String +Nmu+xPTkv0acS/Fl96xFwAAA + + + +getAsInputStream +d5Gj/OYfJkCptPqAkhEWYgAA +1 + +return +pdkReturn +ByteArrayInputStream +y+PDlU5eDkStgsWiXwkEMgAA + + +1 +6yi+qc2TTEKpr5B6qtXceQAA + + CaptureMJPEG -qHnqDjr03BFhngAbJBgZzAAA +L8lkL3Qc5kq5N1LDwbGGlQAA 4 -+s7TDzr03BFhngAbJBgZzAAA -WtPTDzr03BFhngAbJBgZzAAA -NtTTDzr03BFhngAbJBgZzAAA -/tTTDzr03BFhngAbJBgZzAAA -14 - +iiJ8hVWdN0WJMNeEPog7GwAA +UFiPzWgGqkq3FwqQG0jX3AAA +sVMfOzuwFk+AofCK7OxTFAAA +1OuuwR2FfU+8lu/My4s3wQAA +15 + CaptureMJPEG create -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 2 - + parent PApplet -8B30Djr03BFhngAbJBgZzAAA +evOd3nELiE+PNCmkjQp1nAAA - + url String -8B30Djr03BFhngAbJBgZzAAA +evOd3nELiE+PNCmkjQp1nAAA - + CaptureMJPEG create -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 4 - + parent PApplet -Xif6Djr03BFhngAbJBgZzAAA +c5EjS/AUiUWtWddLGblw9AAA - + url String -Xif6Djr03BFhngAbJBgZzAAA +c5EjS/AUiUWtWddLGblw9AAA - + username String -Xif6Djr03BFhngAbJBgZzAAA +c5EjS/AUiUWtWddLGblw9AAA - + password String -Xif6Djr03BFhngAbJBgZzAAA +c5EjS/AUiUWtWddLGblw9AAA - + isStopping -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + return pdkReturn boolean -llcFDzr03BFhngAbJBgZzAAA +zKEE7XQDpkS/saOMvlTaBAAA - + startCapture -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + stopCapture -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + setURL -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + url String -AMQLDzr03BFhngAbJBgZzAAA +h0j8ALaoAk+Xykgg48bfUwAA - + setCredential -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 2 - + username String -WikQDzr03BFhngAbJBgZzAAA +6EJCoUffykWAIeIdg1/n+QAA - + password String -WikQDzr03BFhngAbJBgZzAAA +6EJCoUffykWAIeIdg1/n+QAA - + isAdaptFrameSize -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + return pdkReturn boolean -pOIWDzr03BFhngAbJBgZzAAA +BOfwhMFYvEas3BGeWyO+SQAA - + setAdaptFrameSize -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + adaptFrameSize boolean -ph8ZDzr03BFhngAbJBgZzAAA +k3M37fBymEellII/x3Yt8wAA - + run -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + +setErrorImage +vkPrivate +hQ1Plolkk0O8EZcTNq2IxgAA +1 + +error +DL+aD0eqzUqstdzFsSR/kQAA +d5Gj/OYfJkCptPqAkhEWYgAA + + + dispose -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + getImage -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + return pdkReturn PImage -wgohDzr03BFhngAbJBgZzAAA +7pbPan/77UKkc9cCChL3MgAA - + isImageAvailable -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 1 - + return pdkReturn boolean -LE4jDzr03BFhngAbJBgZzAAA +G8Fb6fRuX0Wp1OfHGka18AAA - + assign vkPrivate -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA 2 - + tmp PImage -yiElDzr03BFhngAbJBgZzAAA +a34xj8zABUOeUWc3VvJEsAAA - + return pdkReturn PImage -yiElDzr03BFhngAbJBgZzAAA +a34xj8zABUOeUWc3VvJEsAAA -2 -hCLN+zr03BFhngAbJBgZzAAA -khB9Tzv03BFhngAbJBgZzAAA +1 +aYzyA0YQ602OxQ2XJ21MVQAA 10 - + HTTP_TIMEOUT vkPrivate skClassifier ckFrozen int 5000 -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + client vkPrivate HttpClient -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + method vkPrivate HttpMethod -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + shouldStop vkPrivate boolean -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + isChangePending vkPrivate boolean -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + parent vkPrivate PApplet -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + captureEventMethod vkPrivate Method -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + lastImage vkPrivate PImage -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + adaptFrameSize vkPrivate boolean -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + changeFrameSize vkPrivate boolean -wqrvDjr03BFhngAbJBgZzAAA +hQ1Plolkk0O8EZcTNq2IxgAA - + CircularBuffer vkPackage -qHnqDjr03BFhngAbJBgZzAAA +L8lkL3Qc5kq5N1LDwbGGlQAA 4 -FFrUDzr03BFhngAbJBgZzAAA -el3UDzr03BFhngAbJBgZzAAA -Gl7UDzr03BFhngAbJBgZzAAA -zl7UDzr03BFhngAbJBgZzAAA -7 - +mFVCeOh9ykqUTLbfIKi0wwAA +atjc++eDFEe46Jh/aVkTpQAA +EwnH7RFLaU2PBbHjolKxbAAA +1sxPfL80RUOk6W5j1S8U8QAA +8 + CircularBuffer create -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + size int -/IItDzr03BFhngAbJBgZzAAA +2xWAXqOSckatPVPmp24tJQAA - + CircularBuffer create -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + push cckGuarded -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + data ByteArrayInputStream -atczDzr03BFhngAbJBgZzAAA +e+MjwO5lBky88A2nzl9axAAA - + getLength cckGuarded -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + return pdkReturn int -IBM4Dzr03BFhngAbJBgZzAAA +8ufLAcilpEKDnG6x/sUyfQAA - + pop cckGuarded -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + return pdkReturn ByteArrayInputStream -quE5Dzr03BFhngAbJBgZzAAA +pmcgeRvb6k6WMANFO5id/gAA - + isEmpty cckGuarded -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + return pdkReturn boolean -bmY8Dzr03BFhngAbJBgZzAAA +3rdE0CRr3U6kBdSSPgmReQAA - + +clear +uDF2Ypds5UKV9oEHI6LZ/AAA + + getSize -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + return pdkReturn int -1Lw+Dzr03BFhngAbJBgZzAAA +2EJkv2uXW0WXjjuHHMRA/wAA 1 -qA59Tzv03BFhngAbJBgZzAAA +hZ6RBOwTOEmXMkoG9CatiAAA 6 - + buffer vkPrivate * ByteArrayInputStream -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA 1 - + Java JavaDimensions JavaDimensions 1 -Mip9Dzr03BFhngAbJBgZzAAA +9gcbrO2ZpkKd3m1l5oBHMAAA - + lastIdx vkPrivate int -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + firstIdx vkPrivate int -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + size vkPrivate int -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + empty vkPrivate boolean -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + DEFAULT_SIZE vkPackage skClassifier ckFrozen int 5 -uq8pDzr03BFhngAbJBgZzAAA +uDF2Ypds5UKV9oEHI6LZ/AAA - + MJPEGInputStream -qHnqDjr03BFhngAbJBgZzAAA +L8lkL3Qc5kq5N1LDwbGGlQAA 4 -Pv3UDzr03BFhngAbJBgZzAAA -IgDVDzr03BFhngAbJBgZzAAA -pADVDzr03BFhngAbJBgZzAAA -MAHVDzr03BFhngAbJBgZzAAA +Lqq894uGzkuiyrJ4Hl+YGwAA +G5ZDLy63aUa0+Qy47hZLNgAA +x6YjAQZ2h0y2XbEYpKARkgAA +bSOkmM0zlE2ivtvC1ACI9gAA 2 - + MJPEGInputStream create -4t5ADzr03BFhngAbJBgZzAAA +cegAD9gpGUaDIaShqaum3QAA 2 - + arg0 InputStream -TphDDzr03BFhngAbJBgZzAAA +T5++CJQQMU6u04gFfSECtwAA - + boundary String -TphDDzr03BFhngAbJBgZzAAA +T5++CJQQMU6u04gFfSECtwAA - + readImage -4t5ADzr03BFhngAbJBgZzAAA +cegAD9gpGUaDIaShqaum3QAA 1 - + Java JavaOperation JavaThrows IOException -kiBKDzr03BFhngAbJBgZzAAA +J57Dmifa3EidoHD3XuY8YAAA 1 - + return pdkReturn byte -kiBKDzr03BFhngAbJBgZzAAA +J57Dmifa3EidoHD3XuY8YAAA 1 - + Java JavaDimensions JavaDimensions 1 -WPmMDzr03BFhngAbJBgZzAAA +VM4oCSvCz06Xkg/p3mzPlwAA -1 -FCTN+zr03BFhngAbJBgZzAAA 2 - + BYTES_TO_READ vkPrivate skClassifier ckFrozen int 256 -4t5ADzr03BFhngAbJBgZzAAA +cegAD9gpGUaDIaShqaum3QAA - + boundary vkPrivate String -4t5ADzr03BFhngAbJBgZzAAA +cegAD9gpGUaDIaShqaum3QAA - + SonyURL -qHnqDjr03BFhngAbJBgZzAAA +L8lkL3Qc5kq5N1LDwbGGlQAA 4 -xGzVDzr03BFhngAbJBgZzAAA -sm/VDzr03BFhngAbJBgZzAAA -SHDVDzr03BFhngAbJBgZzAAA -1HDVDzr03BFhngAbJBgZzAAA +5SAu+ceEcEmHJZpbkmVFxwAA +uMudxp+qhkObN7i1n928iAAA +Bc8t8dd+b0+2rmxrHr+rWQAA +O0It0/W9lEumqEWs86r7jAAA 3 - + SonyURL create -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA 1 - + host String -xIlPDzr03BFhngAbJBgZzAAA +IB/I+gSaREKasNpNMzvVXAAA - + getURL -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA 1 - + return pdkReturn String -AntSDzr03BFhngAbJBgZzAAA +8cn3UwzlZ02+BKkPe8Z6qgAA - + setFPS -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA 2 - + speed int -9LlTDzr03BFhngAbJBgZzAAA +2wsakdlpL0ytlYHg3UIxAQAA - + return pdkReturn -9LlTDzr03BFhngAbJBgZzAAA -ptxMDzr03BFhngAbJBgZzAAA +2wsakdlpL0ytlYHg3UIxAQAA +I7KB97h+KECCTmqlGcH32AAA 1 -KqGVDzr03BFhngAbJBgZzAAA +KvhXyC9u6kaaP+QWFoSQrgAA 2 - + host vkPrivate String -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA - + speed vkPrivate Integer -ptxMDzr03BFhngAbJBgZzAAA +I7KB97h+KECCTmqlGcH32AAA - -qHnqDjr03BFhngAbJBgZzAAA + +L8lkL3Qc5kq5N1LDwbGGlQAA 4 -+CbN+zr03BFhngAbJBgZzAAA -aijN+zr03BFhngAbJBgZzAAA -ZCnN+zr03BFhngAbJBgZzAAA -LCrN+zr03BFhngAbJBgZzAAA +eqzhJTS3zE2i8ktZL2v1uwAA +cseFcO6Ln0azplucP9bDDgAA +cHzmi/b/YE6nMPOxLVZEPQAA +jYIhlaf2/Ea/fzkJcz111QAA 2 - + False -1 -EiHN+zr03BFhngAbJBgZzAAA -wqrvDjr03BFhngAbJBgZzAAA +F80t9tRGiU2YLgQrvJ/07AAA +hQ1Plolkk0O8EZcTNq2IxgAA 4 -xivN+zr03BFhngAbJBgZzAAA -0i7N+zr03BFhngAbJBgZzAAA -Vi3N+zr03BFhngAbJBgZzAAA -YjDN+zr03BFhngAbJBgZzAAA +LFbZhyLV/UKH7K5PITYbzAAA ++tXVo2POe0WktULgnVcfqAAA +dUGs5mfqWEG//X1tgIM1gQAA +JhCFcWSTD0aN878i/axW/QAA - -EiHN+zr03BFhngAbJBgZzAAA -4t5ADzr03BFhngAbJBgZzAAA -4 -/irN+zr03BFhngAbJBgZzAAA -FC7N+zr03BFhngAbJBgZzAAA -mCzN+zr03BFhngAbJBgZzAAA -pC/N+zr03BFhngAbJBgZzAAA - - - -qHnqDjr03BFhngAbJBgZzAAA -4 -DBR9Tzv03BFhngAbJBgZzAAA -IBl9Tzv03BFhngAbJBgZzAAA -6Bl9Tzv03BFhngAbJBgZzAAA -dBp9Tzv03BFhngAbJBgZzAAA -2 - + buffer vkPrivate -+gx9Tzv03BFhngAbJBgZzAAA -uq8pDzr03BFhngAbJBgZzAAA +F80t9tRGiU2YLgQrvJ/07AAA +uDF2Ypds5UKV9oEHI6LZ/AAA 4 -tBt9Tzv03BFhngAbJBgZzAAA -Ah59Tzv03BFhngAbJBgZzAAA -6hx9Tzv03BFhngAbJBgZzAAA -Qh99Tzv03BFhngAbJBgZzAAA - - -False -akComposite -+gx9Tzv03BFhngAbJBgZzAAA -wqrvDjr03BFhngAbJBgZzAAA -4 -Cht9Tzv03BFhngAbJBgZzAAA -dh19Tzv03BFhngAbJBgZzAAA -VBx9Tzv03BFhngAbJBgZzAAA -th59Tzv03BFhngAbJBgZzAAA +LAK0tftMaU2xeOFQdZ0g7gAA +M9EaLYMVE0uY/J+r4dqkqwAA +E61ESQo6oUC+SDxw/nXJjwAA +3r75YYYl50e9yQAnY0hZigAA diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/img/capturemjpegclass.png Binary file docs/relazione/img/capturemjpegclass.png has changed diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/img/uribuilders.png Binary file docs/relazione/img/uribuilders.png has changed diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/relazione.tex --- a/docs/relazione/relazione.tex Mon May 12 13:56:20 2008 +0200 +++ b/docs/relazione/relazione.tex Tue May 13 18:31:41 2008 +0200 @@ -51,8 +51,50 @@ \subsection{Guida all'utilizzo} \label{sec:guida} %inserire un po' di esempi e spiegare le funzioni utilizzabili +La libreria si trova nel package \texttt{it.lilik.capturemjpeg}.\\ +La classe fondamentale \`e \texttt{CaptureMJPEG}, che dispone dei metodi +necessari per la gestione dello stream e per l'integrazione con processing. +Per una documentazione completa sulle classi offerte dal package e i relativi +metodi disponibili si rimanda alla documentazione JavaDoc sul sito del +progetto.\footnote{http://capturemjpeg.lilik.it/doc/}\\ +Per ottenere un oggetto di tipo \texttt{CaptureMJPEG} \`e necessario invocare +il suo costruttore con l'URI della videocamera come parametro. Per questa +finalit\`a, la libreria mette a disposizione delle classi per creare facilmente +gli URI a partire dalla marca della videocamera, correntemente sono +implementate solo quelle per le videocamere Sony e AXIS.\\ +Una volta ottenuto l'oggetto \texttt{CaptureMJPEG} abbiamo a disposizione due +modalit\`a per gestire lo stream proveniente dalla videocamera. La prima, +chiamata modalit\`a di callback, prevede la definizione di un metodo +all'interno dello sketch, che verr\`a invocato dalla libreria ogni volta che +un nuovo fotogramma \`e pronto. La modalit\`a senza callback, invece, prevede +che i fotogrammi siano salvati, non appena disponibili, in un buffer circolare +interno alla libreria e accessibile tramite il metodo \texttt{getImage ()}.\\ +Un programmatore che usa la libreria ha la garanzia che il flusso restituito +sar\`a sempre costituito da immagini. Infatti gli eventuali errori sono gestiti +internamente alla libreria, che provveder\`a a creare delle immagini con una +descrizione testuale dell'errore in caso di problemi. +\subsubsection{Esempi} +\label{sec:utilizzo_esempi} +Qui di seguito sono illustrati vari esempi di utilizzo della libreria.\\ +L'esempio in \reffigura{fig:basic_usage} illustra l'utilizzo di base di CaptureMJPEG. +Si nota la funzione di callback \texttt{captureMJPEGEvent}, invocata dalla libreria quando +sono disonibili nuovi frame. In questo esempio \`e utilizzato il parser di +default per gli URI. Si noti che in questo caso \`e necessario specificare +l'URI completo di protocollo.\\ + +Il secondo esempio in \reffigura{fig:vendor_specific} illustra la modalit\`a +d'uso dei costruttori di URI specializzati. In questo caso \`e necessario +inserire solamente l'host come parametro del costruttore dell'URI.\\ + +Il terzo esempio in \reffigura{fig:buffer_usage} illustra l'utilizzo del buffer +interno alla libreria. Si noti l'utilizzo del metodo \texttt{getImage ()} per +ottenere il fotogramma successivo dello stream.\\ + +Infine, l'esempio in \reffigura{fig:adaptive_fsize} mostra come sia possibile +far s\`i che la dimensione dell'applet si adatti alla dimensione dello stream, +attraverso la chiamata al metodo \texttt{setAdaptiveFrameSize ()}.\\ \section{Analisi} \label{sec:analisi} @@ -69,35 +111,10 @@ CaptureMJPEG e in \reffigura{fig:capture_blur} per Capture. Sono stati misurati l'utilizzo di memoria e di CPU al variare delle dimensioni del filmato e del framerate richiesto allo sketch.\\ -\begin{figure} - \centering -\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/micc_blur.pde} - \caption{Sorgente di test CaptureMJPEG} - \label{fig:micc_blur} -\end{figure} -\begin{figure} - \centering - \lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/capture_blur.pde} - \caption{Sorgente di test Capture} - \label{fig:capture_blur} -\end{figure} L'analisi ha riportato un utilizzo di memoria minore per la libreria CaptureMJPEG, 30MB contro 40MB per il filmato a risoluzione 320x240 e 50MB contro 60MB per il filmato a risoluzione 640x480.\\ -\begin{figure} - \centering - \includegraphics[scale=0.9]{scilab/isto_blur_640.png} - \caption{Analisi algoritmo blur 640x480} - \label{fig:blur_640} -\end{figure} -\begin{figure} - \centering - \includegraphics[scale=0.9]{scilab/isto_blur_320.png} - \caption{Analisi algoritmo blur 320x240} - \label{fig:blur_320} -\end{figure} - L'utilizzo di CPU è riportato in \reffigura{fig:blur_640} e in \reffigura{fig:blur_320}. L'algoritmo applicato allo stream di risoluzione 320x240 mostra un @@ -119,6 +136,7 @@ \textbf{processing} \> 0135 beta \\ \end{tabbing} + \subsection{Impressioni qualitative} \label{sec:impressioni} @@ -177,9 +195,10 @@ cd capturemjpeg cp user_pref.xml.template user_pref.xml -\end{boxedverbatim} - \caption{Come ottenere i sorgenti da terminale} - \label{fig:clone} +\end{boxedverbatim} +\\ +\vspace{0.3cm} +Esempio: ottenere i sorgenti da terminale \end{figure} \subsection{Classi utilizzate} @@ -187,11 +206,72 @@ Forniamo ora una descrizione sommaria delle classi sviluppate per la libreria, per una trattazione più approfondita si rimanda alla documentazione JavaDoc disponibile online all'indirizzo -http://capturemjpeg.lilik.it/doc/ +http://capturemjpeg.lilik.it/doc/. +In \reffigura{fig:class_diagram1} e in \reffigura{fig:class_diagram2} +si pu\`o visualizzare il diagramma delle classi della libreria. -%inserire il diagramma delle classi UML e aggiungere qualche commento +\begin{figure} + \centering +\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/basic_usage.pde} + \caption{Esempio di utilizzo base} + \label{fig:basic_usage} +\end{figure} +\begin{figure} + \centering +\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/vendor_specific.pde} + \caption{Utilizzo dei costruttori specializzati} + \label{fig:vendor_specific} +\end{figure} +\begin{figure} + \centering +\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/buffer_usage.pde} + \caption{Esempio dell'utilizzo del buffer} + \label{fig:buffer_usage} +\end{figure} +\begin{figure} + \centering +\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/adaptive_fsize.pde} + \caption{Utilizzo della dimensione adattiva} + \label{fig:adaptive_fsize} +\end{figure} +\begin{figure} + \centering +\lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/micc_blur.pde} + \caption{Sorgente di test CaptureMJPEG} + \label{fig:micc_blur} +\end{figure} +\begin{figure} + \centering + \lstinputlisting[language=Java,numbers=left,frame=shadowbox]{sources/capture_blur.pde} + \caption{Sorgente di test Capture} + \label{fig:capture_blur} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.9]{scilab/isto_blur_640.png} + \caption{Analisi algoritmo blur 640x480} + \label{fig:blur_640} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.9]{scilab/isto_blur_320.png} + \caption{Analisi algoritmo blur 320x240} + \label{fig:blur_320} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.7,angle=90]{img/capturemjpegclass.png} + \caption{Diagramma delle classi di CaptureMJPEG} + \label{fig:class_diagram1} +\end{figure} +\begin{figure} + \centering + \includegraphics[scale=0.9]{img/uribuilders.png} + \caption{Diagramma delle classi dei costruttori di URI} + \label{fig:class_diagram2} +\end{figure} \end{document} diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/sources/adaptive_fsize.pde --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/relazione/sources/adaptive_fsize.pde Tue May 13 18:31:41 2008 +0200 @@ -0,0 +1,28 @@ +import it.lilik.capturemjpeg.*; + +private CaptureMJPEG capture; +private PImage next_img = null; + +void setup() { + frame.setResizable (true); + background(0); + capture = new CaptureMJPEG + (this, + "http://mynetworkcamera.foo/image?speed=20"), + "user", + "password"); + capture.setAdaptFrameSize(true); + capture.startCapture(); + frameRate(20); +} + +void draw() { + if (next_img != null) { + image(next_img, 0, 0); + } +} + +void captureMJPEGEvent(PImage img) { + next_img = img; +} + diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/sources/basic_usage.pde --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/relazione/sources/basic_usage.pde Tue May 13 18:31:41 2008 +0200 @@ -0,0 +1,31 @@ +import it.lilik.capturemjpeg.*; + +private CaptureMJPEG capture; +private PImage next_img = null; + +void setup() { + size(400, 300); + background(0); + capture = new CaptureMJPEG + (this, + "http://mycamera.foo/image?speed=20"), + "user", + "password"); + // or this if you don't need auth + // capture = new CaptureMJPEG + // (this, "http://mycamera.foo/image?speed=20"); + + capture.startCapture(); + frameRate(20); +} + +void draw() { + if (next_img != null) { + image(next_img, 0, 0); + } +} + +// callback method +void captureMJPEGEvent(PImage img) { + next_img = img; +} diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/sources/buffer_usage.pde --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/relazione/sources/buffer_usage.pde Tue May 13 18:31:41 2008 +0200 @@ -0,0 +1,28 @@ +import it.lilik.capturemjpeg.*; + +private CaptureMJPEG capture; +private PImage next_img = null; + +void setup() { + size (400,300); + capture = new CaptureMJPEG + (this, + "http://mynetworkcamera.foo/image?speed=20"), + "user", + "password"); + capture.startCapture(); + frameRate(20); +} + +void draw() { + next_img = capture.getImage(); + if (next_img != null) { + image(next_img, 0, 0); + } +} + +void stop() +{ + capture.dispose(); +} + diff -r e288919dcef906357b392d8e2343fa15d3105f6f -r 14b3177cee65d124424fedf3465e62c3761d538a docs/relazione/sources/vendor_specific.pde --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/docs/relazione/sources/vendor_specific.pde Tue May 13 18:31:41 2008 +0200 @@ -0,0 +1,29 @@ +import it.lilik.capturemjpeg.*; + +private CaptureMJPEG capture; +private PImage next_img = null; + +void setup() { + size(400, 300); + background(0); + capture = new CaptureMJPEG + (this, + new SonyURL("mynetworkcamera.foo") + .setFPS(20).getURL(), + //new AxisURL("mynetworkcamera.foo") + //.setDesiredFPS(20).getURL(), + "user", + "password"); + capture.startCapture(); + frameRate(20); +} + +void draw() { + if (next_img != null) { + image(next_img, 0, 0); + } +} + +void captureMJPEGEvent(PImage img) { + next_img = img; +}