ptolemy.actor.lib.jmf
Class VideoCamera

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.actor.lib.Source
                              extended by ptolemy.actor.lib.jmf.VideoCamera
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, javax.media.ControllerListener, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class VideoCamera
extends Source
implements javax.media.ControllerListener

An actor that produces a sequence of frames from a video camera. This actor requires the Java Media Framework, and has been tested at least with version 2.1.1. FIXME: more info.

Since:
Ptolemy II 3.0
Version:
$Id: VideoCamera.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Christopher Hylands, Edward Lee, James Yeh, Paul Yang, David Lee
See Also:
Serialized Form
Accepted Rating:
Red
Proposed Rating:
Red

Nested Class Summary
 class VideoCamera.PreAccessCodec
          A pass-through codec to access to individual frames.
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  javax.media.Buffer _bufferNew
          The java.awt.Image that we are producing/
private  VideoCamera.PreAccessCodec _cameraCodec
           
private  javax.media.format.VideoFormat _format
           
private  javax.media.Buffer _frameBuffer
           
private  boolean _newFrame
           
private  javax.media.Processor _processor
          The video processor.
private  boolean _stateTransitionOK
           
private  java.lang.Object _waitSync
           
 Parameter deviceNumber
          This parameter lets the user select the device to use.
 StringAttribute formatName
          The type of video format to use.
 
Fields inherited from class ptolemy.actor.lib.Source
output, trigger
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
VideoCamera(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
protected  boolean _waitForState(int state)
          Block until the processor has transitioned to the given state.
 void controllerUpdate(javax.media.ControllerEvent evt)
          Controller Listener.
 void fire()
          Capture a frame and send a java.awt.Image object to the output port.
 void initialize()
          Open the file at the URL, and set the width of the output.
 void wrapup()
          Close the media processor.
 
Methods inherited from class ptolemy.actor.lib.Source
prefire
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, clone, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeChanged, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, preinitialize, removeInitializable
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

formatName

public StringAttribute formatName
The type of video format to use. This is a string valued attribute that defaults to the type RGB.


deviceNumber

public Parameter deviceNumber
This parameter lets the user select the device to use. Typically this parameter is of no concern and should be left at 0. However, if a computer has more than one usable cameras, this parameter can be used to choose amongst them.


_format

private javax.media.format.VideoFormat _format

_bufferNew

private javax.media.Buffer _bufferNew
The java.awt.Image that we are producing/


_newFrame

private boolean _newFrame

_processor

private javax.media.Processor _processor
The video processor.


_cameraCodec

private VideoCamera.PreAccessCodec _cameraCodec

_waitSync

private java.lang.Object _waitSync

_stateTransitionOK

private boolean _stateTransitionOK

_frameBuffer

private javax.media.Buffer _frameBuffer
Constructor Detail

VideoCamera

public VideoCamera(CompositeEntity container,
                   java.lang.String name)
            throws IllegalActionException,
                   NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

controllerUpdate

public void controllerUpdate(javax.media.ControllerEvent evt)
Controller Listener.

Specified by:
controllerUpdate in interface javax.media.ControllerListener

fire

public void fire()
          throws IllegalActionException
Capture a frame and send a java.awt.Image object to the output port.

Specified by:
fire in interface Executable
Overrides:
fire in class Source
Throws:
IllegalActionException - If there's no director.

initialize

public void initialize()
                throws IllegalActionException
Open the file at the URL, and set the width of the output.

Specified by:
initialize in interface Initializable
Overrides:
initialize in class AtomicActor
Throws:
IllegalActionException - If there are no video capture devices.

wrapup

public void wrapup()
Close the media processor.

Specified by:
wrapup in interface Initializable
Overrides:
wrapup in class AtomicActor

_waitForState

protected boolean _waitForState(int state)
Block until the processor has transitioned to the given state. Return false if the transition failed.

Parameters:
state - The state for which we are waiting.
Returns:
True if the state transition is ok, otherwise return false.