1460931905-e04a5b36-f761-4816-974b-2fa099df4203

1. An optical system comprising:
a filter wheel rotatable about at least two axes and having a plurality of optical filters coupled thereto, at least one of said filters having a transmission band that varies with the angle of light incident on the filter,
a first optical subsystem defining a first light path and arranged such that a beam of light from a first broadband light source passes through a selected one of said plurality of filters at a selected angle of incidence and the filtered light is directed to an object,
a second optical subsystem defining a second light path and arranged such that light from a second broadband light source reflects off of a surface of said selected one of said plurality of filters and the reflected light is directed to said object,

a control system for rotating said filter wheel about each of said at least two axes, and for controlling said first and second light sources, whereby a user can select to have said object illuminated by said filtered light or by said reflected light, or by both.
2. The optical system of claim 1, wherein said first and second broadband light sources are the same.
3. The optical system of claim 1 wherein said first and second light paths utilize the same filter angle, such that the object can be illuminated by transmitted filtered light or reflected light from said first and second light sources, respectively, without rotating the filter.
4. The optical system of claim 1 wherein the first and second optical subsystems are configured such that the reflected light is missing a frequency band that is substantially the same as the frequency band of the filtered light, whereby the object can be alternately illuminated by light within and outside of said frequency band.
5. The optical system of claim 1 wherein each of said plurality of optical filters has an elongate shape.
6. The optical system of claim 1 wherein said light beam is an inch or more in diameter.
7. A method of illuminating an object, comprising:
collimating light from a first light source to form a beam,
rotating a filter wheel having a plurality of filters coupled thereto about a first axis such that said collimated light beam passes through a selected one of said filters to illuminate an object with filtered light, said selected filter having a transmission band that depends on the angle of the light beam incident on said selected filter,
rotating said selected filter about a second axis to adjust the transmission band of said incident collimated light beam, such that filtered light illuminates the object,
reflecting light off of a surface of said selected filter such that said reflected light illuminates the object.
8. The method of claim 7 wherein said reflected light originates from a second light source.
9. The method of claim 7 wherein said reflected light originates from said first light source.
10. The method of claim 7 wherein the angle of said selected filter is changed when the filter is used to provide reflected light.
11. The method of claim 7 wherein the angle of said selected filter is held constant when the filter is used to provide reflected light.
12. The method of claim 7 wherein the reflected light is missing a frequency band.
13. The method of claim 12 wherein the missing frequency band is substantially the same as the frequency band of the filtered light.
14. The method of claim 7 wherein the object is simultaneously illuminated by filtered light and reflected light, such that no frequency band is missing from the illumination.
15. The method of claim 7 wherein the steps are performed by a control system based on user inputs.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A method for generating chunks for peer to peer distribution, the method comprises:
converting a media stream to chunks of variable size in response to media characteristics of the media stream; wherein sizes of the chunks are responsive to the media characteristics of the media stream and to transport later characteristics of the media stream;
generating a hash value for each chunk;
transmitting to a peer to peer manager hash values and media characteristic information associated with the chunks and
receiving a request from a peer to obtain chunks of the media stream and providing the chunks to the peer.
2. The method according to claim 1 comprising generating a new hash value for a chunk based upon an old hash value of the chunk.
3. The method according to claim 1 comprising converting the media stream to chunks in response to scalable video coding metadata.
4. The method according to claim 1 comprising converting the media stream to chunks while preventing splitting of media and transport layer structures.
5. The method according to claim 1 comprising converting the media stream to chunks while flagging each chunk that comprises independently decodable frames.
6. The method according to claim 1 wherein the metadata chunk stream comprises forward error correction information and transport layer tables.
7. The method according to claim 1 comprising converting the media stream to an audio chunk stream, a video chunk stream and metadata chunk stream.
8. The method according to claim 1 comprising converting multiple versions of single media stream element to multiple chunks that differ from each other by a size parameter.
9. The method according to claim 8 comprising generating association information that associate the multiple chunks to each other.
10. The method according to claim 1 comprising determining a capability of a peer to seamlessly switch from a first bit rate chunk to a second bit rate chunk; wherein the first bit rate differs from the second bit rate.
11. A method for managing peer to peer distribution of chunks, the method comprises:
receiving, by a peer to peer manager, hash values and media characteristic information associated with chunks that represent a media stream; wherein sizes of the chunks are responsive to the media characteristics of the media stream and to transport layer characteristics of the media stream;
receiving capacity information indicative of capacity constraints associated with a provision of chunks to peers;
receiving, from a peer, a request to obtain a peer data structure indicative of peers that are capable of providing chunks associated with a media stream;
generating the peer data structure in response to an identity of the media stream, the media characteristic information and capacity information; and
transmitting to the peer the peer data structure.
12. The method according to claim 11 comprising:
determining, in response to capacity information indicative of a capacity constraints associated with the provision of chunks to peers, to compress a chunk;
instructing an intermediate node to compress the chunk to provide a compresses chunk; and
generating the peer data structure so as to identify the intermediate node as a possible source of the compressed chunk.
13. The method according to claim 11 comprising selecting a chunk out of multiple chunks that represent different versions of the same media stream element and differ from each other by a size parameter; wherein the generating of the peer to peer data structure is responsive to the selected chunk.
14. The method according to claim 11 comprising generating the peer data structure in response to a capability of the peer to seamlessly receive and process consecutive chunks of different bit rates.
15. The method according to claim 11 comprising generating a peer data structure per video chunk stream, per audio chunk stream and per stream processing information chunk stream.
16. A media processor that comprises:
a media stream converter configured to convert a media stream to chunks of variable size in response to media characteristics of the media stream and in response to transport layer characteristics of the media stream; wherein sizes of the chunks are responsive to the media characteristics of the media stream;
a metadata generator, configured to generate a hash value for each chunk; and
a transmitter for transmitting to a peer to peer manager hash values and media characteristic information associated with the chunks;
wherein the media stream processor is further configured to receive a request from a peer to obtain chunks of the media stream and providing the chunks to the peer.
17. The media processor according to claim 16 configured to generate a new hash value for a chunk based upon an old hash value of the chunk.
18. The media processor according to claim 16 configured to convert the media stream to chunks in response to scalable video coding metadata.
19. The media processor according to claim 16 configured to convert the media stream to chunks withput splitting media and transport layer structures.
20. The media processor according to claim 16 configured to convert the media stream to chunks while flagging each chunk that comprises independently decodable frames.
21. The media processor according to claim 17 wherein the metadata chunk stream comprises forward error correction information and transport layer tables.
22. The media processor according to claim 16 configured to convert the media stream to an audio chunk stream, a video chunk stream and metadata chunk stream.
23. The media processor according to claim 16 configured to convert multiple versions of a single media stream element to multiple chunks that differ from each other by a size parameter.
24. The media processor according to claim 23 configured to generate association information that associate the multiple chunks generated from the single media stream element to each other.
25. The media processor according to claim 16 configured to determine a capability of a peer to seamlessly switch from a first bit rate chunk to a second bit rate chunk; wherein the first bit rate differs from the second bit rate.
26. A peer to peer manager that comprises:
a receiver that is configured to receive:
hash values and media characteristic information associated with chunks that represent a media stream, wherein sizes of the chunks are responsive to the media characteristics of the media stream and to transport layer characteristics of the media stream;
capacity information indicative of capacity constraints associated with a provision of chunks to peers;
a request to obtain a peer data structure indicative of peers that are capable of providing chunks associated with a media stream;

a metadata generator configured to generate the peer data structure in response to an identity of the media stream, the media characteristic information and capacity information; and
a transmitter, configured to transmit to the peer the peer data structure.
27. The peer to peer manager according to claim 26 comprising a controller that is configured to determine, in response to capacity information indicative of a capacity constraints associated with the provision of chunks to peers, to compress a chunk; and instruct an intermediate node to compress a chunk to provide a compresses chunk; and wherein the metadata generator is configured to generate the peer data structure so as to identify the intermediate node as a possible source of the compressed chunk.
28. The peer to peer manager according to claim 26 wherein the controller is configured to select a chunk out of multiple chunks that represent different versions of the same media stream element but differ from each other by a size parameter; wherein the metadata generator is configured to generate a peer to peer data structure that is responsive to the selected chunk.
29. The peer to peer manager according to claim 26 configured to generate the peer data structure in response to a capability of the peer to seamlessly receive and process consecutive chunks of different bit rates.
30. The peer to peer manager according to claim 26 wherein the metadata generator is configured to generate a peer data structure per video chunk stream, per audio chunk stream and per stream processing information chunk stream.
31. A computer program product that comprises a non-transitory computer readable medium that stores instructions for:
converting a media stream to chunks of variable size in response to media characteristics of the media stream; wherein sizes of the chunks are responsive to the media characteristics of the media stream and to transport later charactaristics of the media stream;
generating a hash value for each chunk;
transmitting to a peer to peer manager hash values and media characteristic information associated with the chunks and
receiving a request from a peer to obtain chunks of the media stream and providing the chunks to the peer.
32. A computer program product that comprises a non-transitory computer readable medium that stores instructions for:
receiving hash values and media characteristic information associated with chunks that represent a media stream; wherein sizes of the chunks are responsive to the media characteristics of the media stream and to transport layer characteristics of the media stream;
receiving capacity information indicative of capacity constraints associated with a provision of chunks to peers;
receiving, from a peer, a request to obtain a peer data structure indicative of peers that are capable of providing chunks associated with a media stream;
generating the peer data structure in response to an identity of the media stream, the media characteristic information and capacity information; and
transmitting to the peer the peer data structure.
33. The method according to claim 1 comprising converting the media stream to chunks in response to program identifier values.
34. The method according to claim 1 comprising converting the media stream to chunks in response to clock reference information.