IP Library Granted Patent US 8,582,905
Granted Patent B2
US 8,582,905 · App. 11/669,000 · Granted Nov 12, 2013

Methods and systems for rate control within an encoding device

Inventors: Gordon Kent Walker (Poway, CA); Vijayalakshmi R. Raveendran (San Diego, CA); Binita Gupta (San Diego, CA); Phanikumar Bhamidipati (San Diego, CA); Bruce Collins (San Diego, CA)
Assignee: QUALCOMM Incorporated
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,582,905
App. No.
11/669,000
Granted
Nov 12, 2013
Kind
B2
Abstract

This disclosure describes techniques for adjusting encoding variables of an encoding device. In response to a request to resize a segment of data, an encoding module adjusts at least one encoding variable used to encode one or more subsequent segments of data such that the subsequent segments of data are encoded at a bit rate that is different than the bit rate at which the subsequent segments of data would have been encoded had there been no request to resize. At some point, the encoding module re-adjusts the encoding variables used to encode the segments of data such that the subsequent segments of data are encoded to achieve a desired encoding result. For example, the encoding module may re-adjust the encoding variables after a period of time or may incrementally adjust the encoding variables until the encoding variables result in achieving the desired encoding result.

Claims (127)

1. A method for encoding a stream of digital multimedia data, the method comprising:

calculating a plurality of quality-rate characteristics for streams of data with varying content using a logarithmic function that is based on a quality metric and a bit rate;

classifying a segment of data of the stream based on content included in the segment of data;

associating the segment of data of the stream with one of the plurality of quality-rate characteristics based on the classification; and

adjusting at least one encoding variable with respect to one of the plurality of quality-rate characteristics associated with a segment of data selected for resizing in order to encode one or more subsequent segments of data using the adjusted encoding variable.

2. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable such that the subsequent segments of data are encoded at a desired encoding result.

3. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable such that the subsequent segments of data are encoded at a desired quality level.

4. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable such that the subsequent segments of data are encoded at a desired bit rate.

5. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable such that the subsequent segments of data are encoded at a desired frame rate.

6. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable such that the subsequent segments of data are encoded at a desired quantization parameter (QP).

7. The method of claim 1 , wherein adjusting the at least one encoding variable comprises adjusting the encoding variable when no resize requests are received for a period of time.

8. The method of claim 1 , wherein adjusting the encoding variable comprises incrementally adjusting the encoding variable used to encode the subsequent segments of data until the subsequent segments of data are encoded at a desired encoding result.

9. The method of claim 8 , wherein incrementally adjusting the encoding variable comprises incrementally adjusting the encoding variable by an increment value when no resize request is received for the subsequent segment of data and the subsequent segment of data is not encoded at the desired encoding result.

10. The method of claim 8 , further comprising:

receiving a resize request for the subsequent segment of data; and

adjusting the encoding variable used to encode the subsequent segment of data by a decrement value upon receiving the resize request for the subsequent segment of data.

11. The method of claim 8 , further comprising:

receiving a resize request for the subsequent segment of data; and

adjusting the encoding variable to achieve a reduced bit rate specified in the resize request received for the subsequent segment of data.

12. The method of claim 1 , wherein adjusting the encoding variable to be used to encode one or more subsequent segments of data comprises setting the encoding variable to be used to encode one or more subsequent segments of data equal to the encoding variable used to resize the segment of data.

13. The method of claim 1 , wherein adjusting the encoding variable used to encode one or more subsequent segments of data comprises adjusting the encoding variable used to encode one or more subsequent segments of data upon receiving resize requests for a number of consecutive segments of data.

14. The method of claim 1 , wherein the segments of data comprise segments of real-time data.

15. An apparatus for encoding a stream of digital multimedia data, the apparatus comprising:

a memory configured to store instructions that cause the apparatus to:

calculate a plurality of quality-rate characteristics for streams of data with varying content using a logarithmic function that is based on a quality metric and a bit rate;

classify a segment of data of the stream based on content included in the segment of data;

associate the segment of data of the stream with one of the plurality of quality-rate characteristics based on the classification; and

adjust at least one encoding variable with respect to one of the plurality of quality-rate characteristics associated with a segment of data selected for resizing in order to encode one or more subsequent segments of data using the adjusted encoding variable; and

a processor configured to execute the instructions.

16. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired encoding result.

17. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quality level.

18. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired bit rate.

19. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired frame rate.

20. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quantization parameter (QP).

21. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode the subsequent segments of data when no resize requests are received for a period of time.

22. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to incrementally adjust the encoding variable used to encode the subsequent segments of data until the subsequent segments of data are encoded at a desired encoding result.

23. The apparatus of claim 22 , wherein the memory stores further instructions that cause the apparatus to incrementally adjust the encoding variable by an increment value when no resize request is received for the subsequent segment of data and the subsequent segment of data is not encoded at the desired encoding result.

24. The apparatus of claim 22 , wherein the memory stores further instructions that cause the apparatus to:

receive a resize request for the subsequent segment of data, and

adjust the encoding variable used to encode the subsequent segment of data by a decrement value upon receiving the resize request for the subsequent segment of data.

25. The apparatus of claim 22 , wherein the memory stores further instructions that cause the apparatus to:

receive a resize request for the subsequent segment of data, and

adjust the encoding variable to achieve a reduced bit rate specified in the resize request received for the subsequent segment of data.

26. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to set the encoding variable to be used to encode one or more subsequent segments of data equal to the encoding variable used to resize the segment of data.

27. The apparatus of claim 15 , wherein the memory stores further instructions that cause the apparatus to adjust the encoding variable used to encode one or more subsequent segments of data upon receiving resize requests for a number of consecutive segments of data.

28. The apparatus of claim 15 , wherein the segments of data comprise segments of real-time data.

29. An apparatus for encoding a stream of digital multimedia data, the apparatus comprising:

means for generating a plurality of quality-rate characteristics for streams of data with varying content using a logarithmic function that is based on a quality metric and a bit;

means for classifying a segment of data of the stream based on content included in the segment of data;

means for associating the segment of data of the stream with one of the plurality of quality-rate characteristics based on the classification; and

means for adjusting at least one encoding variable with respect to one of the plurality of quality-rate characteristics associated with a segment of data selected for resizing in order to encode one or more subsequent segments of data using the adjusted encoding variable.

30. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired encoding result.

31. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quality level.

32. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired bit rate.

33. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired frame rate.

34. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quantization parameter (QP).

35. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segments of data when no resize requests are received for a period of time.

36. The apparatus of claim 29 , wherein the adjusting means comprises means for incrementally adjusting the encoding variable used to encode the subsequent segments of data until the subsequent segments of data are encoded at a desired encoding result.

37. The apparatus of claim 36 , wherein the adjusting means comprises means for incrementally adjusting the encoding variable by an increment value when no resize request is received for the subsequent segment of data and the subsequent segment of data is not encoded at the desired encoding result.

38. The apparatus of claim 36 , further comprising wherein:

receiving means for receiving a resize request for the subsequent segment of data; and,

wherein the adjusting means comprises means for adjusting the encoding variable used to encode the subsequent segment of data by a decrement value upon receiving the resize request for the subsequent segment of data.

39. The apparatus of claim 36 , further comprising:

receiving means for receiving a resize request for the subsequent segment of data,

wherein the adjusting means comprises means for adjusting the encoding variable to achieve a reduced bit rate specified in the resize request received for the subsequent segment of data.

40. The apparatus of claim 29 , wherein the adjusting means comprises means for setting the encoding variable to be used to encode one or more subsequent segments of data equal to the encoding variable used to resize the segment of data.

41. The apparatus of claim 29 , wherein the adjusting means comprises means for adjusting the encoding variable used to encode one or more subsequent segments of data upon receiving resize requests for a number of consecutive segments of data.

42. The apparatus of claim 29 , wherein the segments of data comprise segments of real-time data.

43. A multimedia encoding device for processing digital video data, comprising:

an encoder module configured to:

generate a plurality of quality-rate characteristics for streams of data with varying content using a logarithmic function that is based on a quality metric and a bit;

classify a segment of data of the stream based on content included in the segment of data;

associate the segment of data of the stream with one of the plurality of quality-rate characteristics based on the classification; and

adjust at least one encoding variable with respect to one of the plurality of quality-rate characteristics associated with a segment of data selected for resizing in order to encode one or more subsequent segments of data using the adjusted encoding variable.

44. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable such that the subsequent segments of data are encoded at a desired encoding result.

45. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable such that the subsequent segments of data are encoded at a desired quality level.

46. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable such that the subsequent segments of data are encoded at a desired bit rate.

47. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable such that the subsequent segments of data are encoded at a desired frame rate.

48. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable such that the subsequent segments of data are encoded at a desired quantization parameter (QP).

49. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable when no resize requests are received for a period of time.

50. The processor of claim 43 , wherein the encoder module is further configured to incrementally adjust the encoding variable used to encode the subsequent segments of data until the subsequent segments of data are encoded at a desired encoding result.

51. The processor of claim 50 , wherein the encoder module is further configured to incrementally adjust the encoding variable by an increment value when no resize request is received for the subsequent segment of data and the subsequent segment of data is not encoded at the desired encoding result.

52. The processor of claim 50 , wherein the encoder module is further configured to:

receive a resize request for the subsequent segment of data; and

adjust the encoding variable used to encode the subsequent segment of data by a decrement value upon receiving the resize request for the subsequent segment of data.

53. The processor of claim 50 , wherein the encoder module is further configured to:

receive a resize request for the subsequent segment of data; and

adjust the encoding variable to achieve a reduced bit rate specified in the resize request received for the subsequent segment of data.

54. The processor of claim 43 , wherein the encoder module is further configured to set the encoding variable to be used to encode one or more subsequent segments of data equal to the encoding variable used to resize the segment of data.

55. The processor of claim 43 , wherein the encoder module is further configured to adjust the encoding variable used to encode one or more subsequent segments of data upon receiving resize requests for a number of consecutive segments of data.

56. A computer-program product for processing digital video data comprising:

a non-transitory computer readable medium comprising instructions to cause at least one computer to:

generate a plurality of quality-rate characteristics for streams of data with varying content using a logarithmic function that is based on a quality metric and a bit rate;

classify a segment of data of the stream based on content included in the segment of data;

associate the segment of data of the stream with one of the plurality of quality-rate characteristics based on the classification; and

adjust at least one encoding variable with respect to one of the plurality of quality-rate characteristics associated with a segment of data selected for resizing in order to encode one or more subsequent segments of data using the adjusted encoding variable.

57. The computer-program product of claim 56 , wherein the non-transitory computer readable medium further comprises instructions that cause the computer to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired encoding result.

58. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quality level.

59. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired bit rate.

60. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired frame rate.

61. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to adjust the encoding variable used to encode the subsequent segments of data such that the subsequent segments of data are encoded at a desired quantization parameter (QP).

62. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to adjust the encoding variable used to encode the subsequent segments of data when no resize requests are received for a period of time.

63. The computer-program product of claim 57 , wherein the instructions to cause the computer to adjust the encoding variable comprise instructions to cause the computer to incrementally adjust the encoding variable used to encode the subsequent segments of data until the subsequent segments of data are encoded at a desired encoding result.

64. The computer-program product of claim 63 , wherein the instructions to cause the computer to incrementally adjust the encoding variable comprise instructions to cause the computer to incrementally adjust the encoding variable by an increment value when no resize request is received for the subsequent segment of data and the subsequent segment of data is not encoded at the desired encoding result.

65. The computer-program product of claim 63 , wherein the non-transitory computer readable medium further comprises instructions to cause the computer to:

receive a resize request for the subsequent segment of data; and

adjust the encoding variable used to encode the subsequent segment of data by a decrement value upon receiving the resize request for the subsequent segment of data.

66. The computer-program product of claim 63 , wherein the non-transitory computer readable medium further comprises instructions to cause the computer to:

receive a resize request for the subsequent segment of data; and

adjust the encoding variable to achieve a reduced bit rate specified in the resize request received for the subsequent segment of data.

67. The computer-program product of claim 56 , wherein the instructions to cause the computer to adjust the encoding variable to be used to encode one or more subsequent segments of data comprise instructions to cause the computer to set the encoding variable to be used to encode one or more subsequent segments of data equal to the encoding variable used to resize the segment of data.

68. The computer-program product of claim 56 , wherein instructions to cause the computer to adjust the encoding variable used to encode one or more subsequent segments of data comprise instructions to cause the computer to adjust the encoding variable used to encode one or more subsequent segments of data upon receiving resize requests for a number of consecutive segments of data.

69. The method of claim 1 , wherein the logarithmic function comprises Q=a*ln(r)+b, wherein Q is the quality metric, a and b are constants, and r is the bit rate.

70. The method of claim 1 , further comprising:

calculating a normalized quality level for a class of content;

calculating a quality adjustment offset based on the normalized quality level; and

adjusting at least one quality-rate characteristic based on the calculated quality adjustment offset.

71. The apparatus of claim 15 , wherein the logarithmic function comprises Q=a*ln(r)+b, wherein Q is the quality metric, a and b are constants, and r is the bit rate.

72. The apparatus of claim 16 , wherein the memory stores further instructions that cause the apparatus to calculate a normalized quality level for a class of content and a quality adjustment offset based on the normalized quality level, and adjust at least one quality-rate characteristic based on the calculated quality adjustment offset.

73. The apparatus of claim 29 , wherein the logarithmic function comprises Q=a*ln(r)+b, wherein Q is the quality metric, a and b are constants, and r is the bit rate.

74. The apparatus of claim 29 , further comprising:

means for calculating a normalized quality level for a class of content and a quality adjustment offset based on the calculated normalized quality level; and

means for adjusting at least one quality-rate characteristic based on the calculated quality adjustment offset.

75. The computer-program product of claim 56 , wherein the logarithmic function comprises Q=a*ln(r)+b, wherein Q is the quality metric, a and b are constants, and r is the bit rate.

76. The computer-program product of claim 56 , further comprising instructions to cause the computer to:

calculate a normalized quality level for a class of content and a quality adjustment offset based on the calculated normalized quality level; and

adjust at least one quality-rate characteristic based on the calculated quality adjustment offset.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 16, 2007
From: WALKER, GORDON KENT; RAVEENDRAN, VIJAYALAKSHMI R.; GUPTA, BINITA; BHAMIDIPATI, PHANIKUMAR; COLLINS, BRUCE
To: QUALCOMM INCORPORATED
Reel/Frame 019303/0685 →
Continuity (2)
Provisional Application 60763995 · Jan 31, 2006
Related Publication 20070204067A1 · Aug 30, 2007