Claims
- 1. A method of processing multiple streams of video frames comprising:
employing multiple encode processes to encode multiple streams of video frames in parallel; exchanging at least one input statistic or encode statistic between the encode processes; and dynamically adapting encoding of at least one stream of video frames of the multiple streams of video frames based on relative complexity of the video frames comprising the multiple streams of video frames employing the at least one input statistic or encode statistic exchanged between the encode processes.
- 2. The method of claim 1, further comprising providing an exchange interface between the multiple encode processes, wherein said exchange interface facilitates said exchanging of said at least one input statistic or encode statistic between the encode processes.
- 3. The method of claim 2, wherein said employing comprises employing multiple encoders connected in parallel, each encoder implementing a respective encode process of said multiple encode processes, and wherein said providing the exchange interface includes providing dedicated data and control buses between the multiple encoders for facilitating said exchanging of the at least one input statistic or encode statistic.
- 4. The method of claim 1, wherein said dynamically adapting comprises employing a joint rate control strategy distributed among said multiple encode processes.
- 5. The method of claim 4, further comprising multiplexing resultant compressed video streams output by said multiple encode processes onto a constant bit rate channel.
- 6. The method of claim 5, wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encode processes.
- 7. The method of claim 6, further comprising buffering output of each encode process of said multiple encode processes in a respective encode buffer prior to said multiplexing, and allowing expanded upper and lower bounds in at least one encode buffer when a new bit budget is allocated in its respective encode process, wherein an amount of data unloaded by each encode process from its respective encode buffer is a function of a total output of said multiple encode processes at any instance in time and said constant bit rate channel capacity.
- 8. The method of claim 1, wherein each encode process of said multiple encode processes ascertains said at least one input statistic or encode statistic for its respective stream of video frames being encoded, saves said at least one input statistic or encode statistic, and shares said at least one input statistic or encode statistic among said multiple encode processes during said exchanging to allow determination of a total statistic corresponding to a sum of the at least one input statistics or encode statistics generated by said multiple encode processes.
- 9. The method of claim 8, wherein said exchanging further comprises sharing the total statistic among the multiple encode processes, wherein at least one encode process employs the total statistic and its own at least one input statistic or encode statistic during said dynamically adapting encoding to facilitate said dynamically adapting encoding of the at least one stream of video frames of the multiple streams of video frames.
- 10. The method of claim 9, wherein each encode process of said multiple encode processes employs the total statistic and its own at least one input statistic or encode statistic during said dynamically adapting encoding to dynamically adapt encoding of each stream of video frames.
- 11. The method of claim 10, wherein said dynamically adapting encoding comprises selecting at each encode process a bit rate of a compressed video stream output therefrom, said bit rate being selected using the total statistic and its own at least one input statistic or encode statistic.
- 12. The method of claim 1, wherein said dynamically adapting encoding comprises modifying a bit rate employed by at least one encode process of said multiple encode processes responsive to said at least one input statistic or encode statistic exchanged between the encode processes.
- 13. The method of claim 12, wherein said modifying the bit rate comprises modifying the bit rate of the at least one encode process at a group of picture boundary or scene change in the stream of video frames being encoded by said at least one encode process.
- 14. The method of claim 12, wherein said modifying a bit rate of the at least one encode process comprises modifying the bit rate of the at least one encode process at a picture boundary of the stream of video frames being encoded by said at least one encode process.
- 15. The method of claim 1, wherein said at least one input statistic or encode statistic comprises at least one of an inter-pixel difference statistic, a frame activity statistic, an encode bit count or a quantization level statistic.
- 16. A method of processing multiple streams of video frames comprising:
encoding the multiple streams of video frames in parallel employing multiple encode processes, the encoding including employing at least one controllable encode parameter for each stream of video frames; during the encoding, analyzing each stream of video frames to derive information on at least one characteristic thereof, the at least one characteristic comprising at least one of an intraframe characteristic or an interframe characteristic; exchanging the information derived on the at least one characteristic of each stream of video frames between the multiple encode processes; and dynamically adapting encoding of at least one stream of video frames using relative information on the at least one characteristic obtained from each stream of video frames of the multiple streams of video frames, the dynamically adapting including for the at least one stream of video frames adjusting the at least one controllable encode parameter employed in the encoding, wherein the encoding of each stream of video frames is dynamically adaptive to relative changes in the at least one characteristic obtained from the multiple streams of video frames by exchanging the information on the at least one characteristic of the multiple streams of video frames between the encode processes.
- 17. The method of claim 16, further comprising providing an exchange interface between the multiple encode processes, wherein said exchange interface facilitates said exchanging of said information derived on the at least one characteristic of each stream of video frames between the multiple encode processes.
- 18. The method of claim 16, wherein said dynamically adapting encoding comprises employing a joint rate control strategy distributed among said multiple encode processes.
- 19. The method of claim 18, further comprising multiplexing resultant compressed video streams output by said multiple encode processes onto a constant bit rate channel, and wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encode processes.
- 20. The method of claim 16, wherein each encode process of said multiple encode processes ascertains said information derived on the at least one characteristic of its respective stream of video frames, saves said information, and shares said information among said multiple encode processes during said exchanging to allow determination of a total statistic corresponding to a sum of the information derived on the at least one characteristic by each encode process of the multiple encode processes.
- 21. The method of claim 20, wherein said exchanging further comprises sharing the total statistic among the multiple encode processes, wherein at least one encode process employs the total statistic and its own information during said dynamically adapting encoding to facilitate said dynamically encoding of the at least one stream of video frames of the multiple streams of video frames.
- 22. The method of claim 16, wherein said at least one controllable encode parameter comprises a bit rate employed by at least one encode process of said multiple encode processes.
- 23. A system for processing multiple streams of video frames comprising:
multiple encoders for encoding the multiple streams of video frames in parallel, each encoder receiving one stream of video frames of said multiple streams of video frames; an exchange interface providing a communications path between said multiple encoders and allowing said multiple encoders to exchange the at least one input statistic or encode statistic therebetween; and a distributed joint rate control means integrated within said multiple encoders for dynamically adapting encoding of at least one stream of video frames of the multiple streams of video frames based on relative complexity of the video frames comprising the multiple streams of video frames.
- 24. The system of claim 23, wherein the exchange interface includes dedicated data and control buses between the multiple encoders for facilitating said exchanging of the at least one input statistic or encode statistic.
- 25. The system of claim 23, further comprising a multiplexer for multiplexing resultant compressed video streams output by said multiple encoders onto a constant bit rate channel.
- 26. The system of claim 25, wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encoders.
- 27. The system of claim 26, further comprising means for buffering output of each encoder of said multiple encoders in a respective encode buffer prior to said multiplexer, and for allowing expanded upper and lower bounds in at least one encode buffer when a new bit budget is allocated in its respective encoder, wherein an amount of data unloaded by each encoder from its respective encode buffer is a function of a total output of said multiple encoders at any instance in time and said constant bit rate channel capacity.
- 28. The system of claim 23, wherein each encoder ascertains said at least one input statistic or encode statistic for its respective stream of video frames being encoded, saves said at least one input statistic or encode statistic, and shares said at least one input statistic or encode statistic among said multiple encoders using said exchange interface to allow determination of a total statistic corresponding to a sum of the at least one input statistics or encode statistics generated by said multiple encoders.
- 29. The system of claim 28, wherein said exchange interface facilitates sharing the total statistic among the multiple encoders, wherein at least one encoder employs the total statistic and its own at least one input statistic or encode statistic to dynamically adapt encoding of the at least one stream of video frames of the multiple streams of video frames.
- 30. The system of claim 29, wherein each encoder of said multiple encoders employs the total statistic and its own at least one input statistic or encode statistic to dynamically adapt encoding of its stream of video frames.
- 31. The system of claim 30, wherein said dynamically adapting encoding comprises selecting at each encoder a bit rate of a compressed video stream output therefrom, said bit rate being selected using the total statistic and its own at least one input statistic or encode statistic.
- 32. The system of claim 23, wherein said dynamically adapting encoding comprises modifying a bit rate employed by at least one encoder of said multiple encoders responsive to said at least one input statistic or encode statistic exchanged between the encode processes.
- 33. The system of claim 32, wherein said modifying the bit rate comprises modifying the bit rate of the at least one encoder at a group of picture boundary or scene change in the stream of video frames being encoded by said at least one encoder.
- 34. The system of claim 32, wherein said modifying the bit rate of the at least one encoder comprises modifying the bit rate of the at least one encoder at a picture boundary of the stream of video frames being encoded by said at least one encoder.
- 35. The system of claim 23, wherein said at least one input statistic or encode statistic comprises at least one of an inter-pixel difference statistic, a frame activity statistic, an encode bit count or a quantization level statistic.
- 36. A system for processing multiple streams of video frames comprising:
multiple encoders for encoding multiple streams of video frames in parallel, each encoder employing at least one controllable encode parameter for encoding one stream of the video frames; means for analyzing each stream of video frames to derive information on at least one characteristic thereof, said at least one characteristic comprising at least one of an intraframe characteristic or an interframe characteristic; an exchange interface comprising a communications bus interconnecting said multiple encoders allowing said encoders to exchange information derived on the at least one characteristic of each stream of video frames; and means for dynamically adapting encoding of at least one stream of video frames using relative information on the at least one characteristic obtained from each stream of video frames of the multiple streams of video frames, the dynamically adapting including for the at least one stream of video frames adjusting the at least one controllable encode parameter employed in the encoding, wherein the encoding of each stream of video frames is dynamically adaptive to relative changes in the at least one characteristic obtained from the multiple streams of video frames by exchanging the information on the at least one characteristic of the multiple streams of video frames between the multiple encoders, and wherein the means for dynamically adapting encoding comprises a distributed means integrated within each of the multiple encoders.
- 37. The system of claim 36, wherein said means for dynamically adapting encoding comprises means for employing a joint rate control strategy distributed among said multiple encode processes.
- 38. The system of claim 37, further comprising means for multiplexing resultant compressed video streams output by said multiple encode processes onto a constant bit rate channel, and wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encoders.
- 39. The system of claim 36, wherein each encoder of said multiple encoders ascertains said information derived on the at least one characteristic of its respective stream of video frames, saves said information, and shares said information among said multiple encoders using said exchange interface to allow determination of a total statistic corresponding to a sum of the information derived on the at least one characteristic by each encoder of the multiple encoders.
- 40. The system of claim 39, wherein said exchange interface further comprises means for sharing the total statistic among the multiple encoders, wherein at least one encoder employs the total statistic and its own information during said dynamically adapting encoding to facilitate said dynamically encoding of the at least one stream of video frames of the multiple streams of video frames.
- 41. The system of claim 36, wherein said at least one controllable encode parameter comprises a bit rate employed by at least one encoder of said multiple encoders.
- 42. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of processing multiple streams of video frames, comprising:
employing multiple encode processes to encode multiple streams of video frames in parallel; exchanging at least one input statistic or encode statistic between the encode processes; and dynamically adapting encoding of at least one stream of video frames of the multiple streams of video frames based on relative complexity of the video frames comprising the multiple streams of video frames employing the at least one input statistic or encode statistic exchanged between the encode processes.
- 43. The at least one program storage device of claim 42, further comprising providing an exchange interface between the multiple encode processes, wherein said exchange interface facilitates said exchanging of said at least one input statistic or encode statistic between the encode processes.
- 44. The at least one program storage device of claim 42, wherein said dynamically adapting comprises employing a joint rate control strategy distributed among said multiple encode processes.
- 45. The at least one program storage device of claim 44, further comprising multiplexing resultant compressed video streams output by said multiple encode processes onto a constant bit rate channel.
- 46. The at least one program storage device of claim 45, wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encode processes.
- 47. The at least one program storage device of claim 46, further comprising buffering output of each encode process of said multiple encode processes in a respective encode buffer prior to said multiplexing, and allowing expanded upper and lower bounds in at least one encode buffer when a new bit budget is allocated in its respective encode process, wherein an amount of data unloaded by each encode process from its respective encode buffer is a function of a total output of said multiple encode processes at any instance in time and said constant bit rate channel capacity.
- 48. The at least one program storage device of claim 42, wherein each encode process of said multiple encode processes ascertains said at least one input statistic or encode statistic for its respective stream of video frames being encoded, saves said at least one input statistic or encode statistic, and shares said at least one input statistic or encode statistic among said multiple encode processes during said exchanging to allow determination of a total statistic corresponding to a sum of the at least one input statistics or encode statistics generated by said multiple encode processes.
- 49. The at least one program storage device of claim 48, wherein said exchanging further comprises sharing the total statistic among the multiple encode processes, wherein at least one encode process employs the total statistic and its own at least one input statistic or encode statistic during said dynamically adapting encoding to facilitate said dynamically adapting encoding of the at least one stream of video frames of the multiple streams of video frames.
- 50. The at least one program storage device of claim 49, wherein each encode process of said multiple encode processes employs the total statistic and its own at least one input statistic or encode statistic during said dynamically adapting encoding to dynamically adapt encoding of each stream of video frames.
- 51. The at least one program storage device of claim 50, wherein said dynamically adapting encoding comprises selecting at each encode process a bit rate of a compressed video stream output therefrom, said bit rate being selected using the total statistic and its own at least one input statistic or encode statistic.
- 52. The at least one program storage device of claim 42, wherein said dynamically adapting encoding comprises modifying a bit rate employed by at least one encode process of said multiple encode processes responsive to said at least one input statistic or encode statistic exchanged between the encode processes.
- 53. The at least one program storage device of claim 52, wherein said modifying the bit rate comprises modifying the bit rate of the at least one encode process at a group of picture boundary or scene change in the stream of video frames being encoded by said at least one encode process.
- 54. The at least one program storage device of claim 52, wherein said modifying a bit rate of the at least one encode process comprises modifying the bit rate of the at least one encode process at a picture boundary of the stream of video frames being encoded by said at least one encode process.
- 55. The at least one program storage device of claim 42, wherein said at least one input statistic or encode statistic comprises at least one of an inter-pixel difference statistic, a frame activity statistic, an encode bit count or a quantization level statistic.
- 56. At least one program storage device readable by a machine, tangibly embodying at least one program of instructions executable by the machine to perform a method of processing multiple streams of video frames, comprising:
encoding the multiple streams of video frames in parallel employing multiple encode processes, the encoding including employing at least one controllable encode parameter for each stream of video frames; during the encoding, analyzing each stream of video frames to derive information on at least one characteristic thereof, the at least one characteristic comprising at least one of an intraframe characteristic or an interframe characteristic; exchanging the information derived on the at least one characteristic of each stream of video frames between the multiple encode processes; and dynamically adapting encoding of at least one stream of video frames using relative information on the at least one characteristic obtained from each stream of video frames of the multiple streams of video frames, the dynamically adapting including for the at least one stream of video frames adjusting the at least one controllable encode parameter employed in the encoding, wherein the encoding of each stream of video frames is dynamically adaptive to relative changes in the at least one characteristic obtained from the multiple streams of video frames by exchanging the information on the at least one characteristic of the multiple streams of video frames between the encode processes.
- 57. The at least one program storage device of claim 56, further comprising providing an exchange interface between the multiple encode processes, wherein said exchange interface facilitates said exchanging of said information derived on the at least one characteristic of each stream of video frames between the multiple encode processes.
- 58. The at least one program storage device of claim 56, wherein said dynamically adapting encoding comprises employing a joint rate control strategy distributed among said multiple encode processes.
- 59. The at least one program storage device of claim 58, further comprising multiplexing resultant compressed video streams output by said multiple encode processes onto a constant bit rate channel, and wherein said distributed rate control strategy facilitates partitioning of said constant bit rate channel capacity among said multiple encode processes.
- 60. The at least one program storage device of claim 56, wherein each encode process of said multiple encode processes ascertains said information derived on the at least one characteristic of its respective stream of video frames, saves said information, and shares said information among said multiple encode processes during said exchanging to allow determination of a total statistic corresponding to a sum of the information derived on the at least one characteristic by each encode process of the multiple encode processes.
- 61. The at least one program storage device of claim 60, wherein said exchanging further comprises sharing the total statistic among the multiple encode processes, wherein at least one encode process employs the total statistic and its own information during said dynamically adapting encoding to facilitate said dynamically encoding of the at least one stream of video frames of the multiple streams of video frames.
- 62. The at least one program storage device of claim 56, wherein said at least one controllable encode parameter comprises a bit rate employed by at least one encode process of said multiple encode processes.
CROSS-REFERENCE TO RELATED PATENTS/APPLICATIONS
[0001] This application is a continuation-in-part of a U.S. patent application entitled “Control Strategy For Dynamically Encoding Multiple Streams Of Video Data In Parallel For Multiplexing Onto A Constant Bit Rate Channel”, by Boroczky et al., U.S. Ser. No. 09/087,603, filed May 29, 1998, which is hereby incorporated herein by reference in its entirety.
[0002] In addition, this application contains subject matter which relates to the subject matter of the following commonly-owned patents and applications, each of which is hereby incorporated herein by reference in its entirety:
[0003] “Control Scheme For Shared-Use Dual-Port Predicted Error Array”, by Carr et al., U.S. Pat. No. 6,118,823, issued Sep. 12, 2000;
[0004] “Real-Time Single Pass Variable Bit Rate Control Strategy And Encoder”, by N. Mohsenian et al., U.S. Ser. No. 09/044,642, filed Mar. 19, 1998;
[0005] “Adaptive Encoding Of A Sequence Of Still Frames Or Partially Still Frames Within Motion Video”, by Boice et al., U.S. Ser. No. 09/046,118, filed Mar. 20, 1998;
[0006] “Adaptively Encoding Multiple Streams of Video Data In Parallel For Multiplexing Onto A Constant Bit Rate Channel”, by Boroczky et al., U.S. Ser. No. 09/225,193, filed Jan. 5, 1999; and
[0007] “Adaptive Real-Time Encoding Of Video Sequence Employing Image Statistics”, by Boroczky et al., U.S. Pat. No. 6,040,861, issued Mar. 21, 2000.
Continuation in Parts (1)
|
Number |
Date |
Country |
Parent |
09087603 |
May 1998 |
US |
Child |
10051004 |
Jan 2002 |
US |