Claims
- 1. A method for recording a video session at a client, comprising:
determining the processing capacity of the client; establishing a recording interval in response to the determined processing capacity, the recording interval indicating a time between a first recording time and a second recording time; recording a first video frame at the first recording time, the first video frame including first video data; recording a second video frame at the second recording time, the second video frame including second video data; and generating a video sub-frame comprising the second video data that is different from the first video data.
- 2. The method of claim 1, further comprising communicating the first video frame and the video sub-frame to a video server coupled to the client.
- 3. The method of claim 1, wherein the video sub-frame comprises a first video sub-frame and the recording interval further indicating the time between the second recording time and a third recording time, the method further comprising:
recording a third video frame at the third recording time, the third video frame including third video data; and generating a second video sub-frame comprising the third video data that is different from the second video data.
- 4. The method of claim 1, wherein the first video frame comprises a first key frame and the video sub-frame comprises a first video sub-frame, the method further comprising:
determining the network capacity of a communication path that couples the client to a video server; establishing a key frame interval in response to the determined network capacity, the key frame interval indicating a time between the first recording time associated with the first key frame and a third recording time associated with a second key frame; recording a third video frame at the third recording time, the third video frame comprising the second key frame and including third video data; recording a fourth video frame at a fourth recording time, the fourth video frame including fourth video data; generating a second video sub-frame comprising the fourth video data that is different from the third video data; and communicating the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame to the video server.
- 5. The method of claim 1, wherein:
the first video data comprises a plurality of video pixels arranged in a plurality of rows and a plurality of columns; and the second video data comprises a corresponding plurality of video pixels arranged in a corresponding plurality of rows and a corresponding plurality of columns.
- 6. The method of claim 5, wherein the step of generating the video sub-frame comprises:
sequentially comparing each row of video pixels associated with the second video data with a corresponding row of video pixels associated with the first video data until identifying a row of video pixels where the second video data is different from the first video data; and sequentially comparing each column of video pixels associated with the second video data with a corresponding column of video pixels associated with the first video data until identifying a column of video pixels where the second video data is different from the first video data.
- 7. The method of claim 6, wherein:
the step of sequentially comparing each row of video pixels is initiated from the first row of video pixels and performed until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a first boundary of the video sub-frame; the step of sequentially comparing each row of video pixels is simultaneously initiated from the last row of video pixels and performed until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a second boundary of the video sub-frame; the step of sequentially comparing each column of video pixels is initiated from the first column of video pixels and performed until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a third boundary of the video sub-frame; and the step of sequentially comparing each column of video pixels is simultaneously initiated from the last column of video pixels and performed until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a fourth boundary of the video sub-frame.
- 8. The method of claim 1, further comprising determining the available processing resources of the client and wherein the step of generating a video sub-frame comprises generating a video sub-frame if the available processing resources of the client exceeds a predetermined threshold.
- 9. The method of claim 3, wherein:
the step of recording the first video frame comprises storing the first video frame in a queue at the client; the step of recording the second video frame comprises storing the second video frame in the queue; the step of recording the third video frame comprises storing the third video frame in the queue; the method further comprising:
determining the available memory resources of the client; removing a selected one of the second video frame or the third video frame from the queue if the available memory resources of the client fall below a predetermined threshold.
- 10. The method of claim 3, wherein the step of recording the first video frame comprises storing the first video frame in a queue at the client, and the step of recording the second video frame comprises storing the second video frame in the queue, the method further comprising:
removing the first video frame from the queue upon generating the first video sub-frame; and removing the second video frame from the queue upon generating the second video sub-frame.
- 11. The method of claim 4, further comprising compressing the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame prior to the step of communicating.
- 12. The method of claim 2, wherein the step of communicating comprises:
communicating a first video segment comprising the first video data; and communicating a second video segment comprising the video sub-frame.
- 13. The method of claim 1, wherein:
the first video data comprises the video activity of the client for a first interval of time; and the second video data comprises the video activity of the client for a second interval of time.
- 14. A client for recording a video session, comprising:
a memory operable to:
store a first video frame recorded at a first recording time, the first video frame including first video data; and store a second video frame recorded at a second recording time, the second video frame including second video data; and a processor coupled to the memory and operable to:
determine the processing capacity of the client; establish a recording interval in response to the determined processing capacity, the recording interval indicating a time between the first recording time and the second recording time; and generate a video sub-frame comprising the second video data that is different from the first video data.
- 15. The client of claim 14, wherein the processor is further operable to communicate the first video frame and the video sub-frame to a video server coupled to the client.
- 16. The client of claim 14, wherein the video sub-frame comprises a first video sub-frame and the recording interval rate further indicating the time between the second recording time and a third recording time, the processor further operable to:
record a third video frame at the third recording time, the third video frame including third video data; and generate a second video sub-frame comprising the third video data that is different from the second video data.
- 17. The client of claim 14, wherein the first video frame comprises a first key frame and the video sub-frame comprises a first video sub-frame, the processor further operable to:
determine the network capacity of a communication path that couples the client to a video server; establish a key frame interval in response to the determined network capacity, the key frame interval indicating a time between the first recording time associated with the first key frame and a third recording time associated with a second key frame; record a third video frame at the third recording time, the third video frame comprising the second key frame and including third video data; record a fourth video frame at a fourth recording time, the fourth video frame including fourth video data; generate a second video sub-frame comprising the fourth video data that is different from the third video data; and communicate the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame to the video server.
- 18. The client of claim 14, wherein:
the first video data comprises a plurality of video pixels arranged in a plurality of rows and a plurality of columns; and the second video data comprises a corresponding plurality of video pixels arranged in a corresponding plurality of rows and a corresponding plurality of columns.
- 19. The client of claim 18, wherein the processor is further operable to:
sequentially compare each row of video pixels associated with the second video data with a corresponding row of video pixels associated with the first video data until identifying a row of video pixels where the second video data is different from the first video data; and sequentially compare each column of video pixels associated with the second video data with a corresponding column of video pixels associated with the first video data until identifying a column of video pixels where the second video data is different from the first video data.
- 20. The client of claim 19, wherein the processor is further operable to:
initiate comparing each row of video pixels from the first row of video pixels and to continue the comparing until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a first boundary of the video sub-frame; simultaneously initiate comparing each row of video pixels from the last row of video pixels and to continue the comparing until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a second boundary of the video sub-frame; initiate comparing each column of video pixels from the first column of video pixels and to continue the comparing until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a third boundary of the video sub-frame; and simultaneously initiate comparing each column of video pixels from the last column of video pixels and to continue the comparing until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a fourth boundary of the video sub-frame.
- 21. The client of claim 16, wherein the processor is further operable to:
determine the available processing resources of the client; and generate a video sub-frame if the available processing resources of the client exceeds a predetermined threshold.
- 22. The client of claim 16, wherein: the memory is further operable to:
store the first video frame in a queue at the client; store the second video frame in the queue; and store the third video frame in the queue; and the processor is further operable to:
determine the available memory resources of the client; and remove a selected one of the second video frame or the third video frame from the queue if the available memory resources of the client does not exceed a predetermined threshold.
- 23. The client of claim 16, wherein:
the memory is further operable to store the first video frame and the second video frame in a queue at the client; and the processor is further operable to remove the first video frame from the queue upon generating the first video sub-frame, and to remove the second video frame from the queue upon generating the second video sub-frame.
- 24. The client of claim 17, wherein the processor is further operable to compress the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame prior to communicating.
- 25. The client of claim 15, wherein the processor is further operable to:
communicate a first video segment comprising the first video data; and communicate a second video segment comprising the video sub-frame.
- 26. The client of claim 14, wherein:
the first video data comprises the video activity of the client for a first interval of time; and the second video data comprises the video activity of the client for a second interval of time.
- 27. A system for recording a video session, comprising:
a video server operable to communicate a start record command; and a client coupled to the video server using a communication path and operable to:
determine the processing capacity of the client; establish a recording interval in response to the determined processing capacity, the recording interval indicating a time between a first recording time and a second recording time; record a first video frame at the first recording time in response to the start record command, the first video frame including first video data; record a second video frame at the second recording time, the second video frame including second video data; and generate a video sub-frame comprising the second video data that is different from the first video data.
- 28. The system of claim 27, wherein the client is further operable to communicate the first video frame and the video sub-frame to the video server.
- 29. The system of claim 27, wherein the video sub-frame comprises a first video sub-frame and the recording interval further indicating the time between the second recording time and a third recording time, the client further operable to:
record a third video frame at the third recording time, the third video frame including third video data; and generate a second video sub-frame comprising the third video data that is different from the second video data.
- 30. The system of claim 27, wherein the first video frame comprises a first key frame and the video sub-frame comprises a first video sub-frame, the client further operable to:
determine the network capacity of the communication path; establish a key frame interval in response to the determined network capacity, the key frame interval indicating a time between the first recording time associated with the first key frame and a third recording time associated with a second key frame; record a third video frame at the third recording time, the third video frame comprising the second key frame and including third video data; record a fourth video frame at a fourth recording time, the fourth video frame including fourth video data; generate a second video sub-frame comprising the fourth video data that is different from the third video data; and communicate the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame to the video server.
- 31. The system of claim 27, wherein:
the first video data comprises a plurality of video pixels arranged in a plurality of rows and a plurality of columns; and the second video data comprises a corresponding plurality of video pixels arranged in a corresponding plurality of rows and a corresponding plurality of columns.
- 32. The system of claim 31, wherein the client is further operable to:
sequentially compare each row of video pixels associated with the second video data with a corresponding row of video pixels associated with the first video data until identifying a row of video pixels where the second video data is different from the first video data; and sequentially compare each column of video pixels associated with the second video data with a corresponding column of video pixels associated with the first video data until identifying a column of video pixels where the second video data is different from the first video data.
- 33. The system of claim 32, wherein the client is further operable to:
initiate comparing each row of video pixels from the first row of video pixels and to continue the comparing until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a first boundary of the video sub-frame; simultaneously initiate comparing each row of video pixels from the last row of video pixels and to continue the comparing until identifying a row of video pixels where the second video data is different from the first video data, the identified row defining a second boundary of the video sub-frame; initiate comparing each column of video pixels from the first column of video pixels and to continue the comparing until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a third boundary of the video sub-frame; and simultaneously initiate comparing each column of video pixels from the last column of video pixels and to continue the comparing until identifying a column of video pixels where the second video data is different from the first video data, the identified column defining a fourth boundary of the video sub-frame.
- 34. The system of claim 27, wherein the client is further operable to:
determine the available processing resources of the client; and generate a video sub-frame if the available processing resources of the client exceeds a predetermined threshold.
- 35. The system of claim 29, wherein the client is further operable to:
store the first video frame in a queue at the client; store the second video frame in the queue; store the third video frame in the queue; determine the available memory resources of the client; and remove a selected one of the second video frame or the third video frame from the queue if the available memory resources of the client does not exceed a predetermined threshold.
- 36. The system of claim 29, wherein the client is further operable to:
store the first video frame and the second video frame in a queue; remove the first video frame from the queue upon generating the first video sub-frame; and remove the second video frame from the queue upon generating the second video sub-frame.
- 37. The system of claim 30, wherein the client is further operable to compress the first key frame, the first video sub-frame, the second key frame, and the second video sub-frame prior to communicating.
- 38. The system of claim 28, wherein the client is further operable to:
communicate a first video segment comprising the first video data; and communicate a second video segment comprising the video sub-frame.
- 39. The system of claim 27, wherein:
the first video data comprises the video activity of the client for a first interval of time; and the second video data comprises the video activity of the client for a second interval of time.
CROSS-REFERENCE TO RELATED APPLICATIONS
[0001] This application is related to and filed concurrently with pending U.S. patent application Ser. No. ______, entitled “System and Method for Reproducing a Video Session Using Accelerated Frame Playback.” These applications have been commonly assigned to E-Talk Corporation.