← Back to Patent Explorer
US5862140A Expired / Lapsed US ⏱️ 0.0 years remaining

Method and apparatus for multiplexing video programs for improved channel utilization

Assignee: Arris Technology Inc
•
Filing: 1995-11-21
•
Granted: 1999-01-19
•
Expires: 2015-11-21
📄 Original PDF 🌐 Google Patents 🔄 Sync Now

Abstract

Abstract A method and apparatus multiplexing several encoded program streams into a single multiplex suitable for transmission over a data channel, the streams typically including video and audio. According to one embodiment of the invention, high data channel utilization is achieved by determining the order of sending data packets of program streams into the data channel. According to this embodiment, whenever data is to be sent into the data channel, a determination is made of which packet to send or append to the multiplex, said determination by selecting a channel that has a decoder buffer that is not approaching a full state, and said next packet is appended to said multiplex. The method further includes selecting a channel that substantially balances the decoder buffers of the decoders with which the program streams are decodeable.

Inventors

  • 👤 Paul Shen
  • 👤 Edward A. Krause
  • 👤 Adam S. Tom

Bibliographic Details

Application Number —
Jurisdiction US
Data Source google_patents
Last Synchronized 2026-11-08 20:49
CPC Classifications
H; H04; H04N; H04N21/00; H04N21/40; H04N21/43; H04N21/434; H04N21/4347; H04N21/20; H04N21/23; H04N21/236; H04N21/2365; H04N7/00; H04N7/16; H04N7/173; H04N7/17309; H04N7/17336

Claims Analysis

Total Claims: 53
Claim 1
Independent Claim 94 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex.
Claim 2
Independent Claim 94 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex.
Claim 3
Dependent Claim 57 words
The method of claim 1, wherein said determining step comprises a loop that terminates when a channel is selected that has a decoder buffer that is not approaching a full state, said loop comprising: (a) selecting a next channel; and (b) evaluating whether or not the decoder buffer of said next channel is approaching a full state.
Claim 4
Dependent Claim 18 words
The method of claim 2, wherein said step of selecting said next channel substantially balances the decoder buffers.
Claim 5
Dependent Claim 29 words
The method of claim 3, wherein said full state is the state of not having enough room for the next available packet to be sent of said next channel.
Claim 6
Independent Claim 215 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex; wherein said determining step includes a loop that terminates when a channel is selected that has a decoder buffer that is not approaching a fall state, said loop including: (a) selecting a next channel; and (b) evaluating whether or not the decoder buffer of said next channel is approaching a full state; wherein said step of selecting said next channel substantially balances the decoder buffers; wherein said full state is the state of not having enough room for the next available packet to be sent of said next channel; further including the steps of deciding if all decoder buffers are approaching a full state, and, if all buffers are approaching a full state, assigning an alternate packet to said next packet.
Claim 7
Independent Claim 215 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex; wherein said determining step includes a loop that terminates when a channel is selected that has a decoder buffer that is not approaching a fall state, said loop including: (a) selecting a next channel; and (b) evaluating whether or not the decoder buffer of said next channel is approaching a full state; wherein said step of selecting said next channel substantially balances the decoder buffers; wherein said full state is the state of not having enough room for the next available packet to be sent of said next channel; further including the steps of deciding if all decoder buffers are approaching a full state, and, if all buffers are approaching a full state, assigning an alternate packet to said next packet.
Claim 8
Dependent Claim 13 words
The method of claim 5, wherein said alternate packet is a fill packet.
Claim 9
Dependent Claim 19 words
The method of claim 5, wherein said deciding step decides if said loop does not terminate after n cycles.
Claim 10
Dependent Claim 29 words
The method of claim 4, wherein said step of evaluating includes estimating the level of fullness of the decoder buffer corresponding to the program stream of said next packet.
Claim 11
Dependent Claim 19 words
The method of claim 4, wherein substantially balancing keeps substantially the same time duration stored in each decoder buffer.
Claim 12
Independent Claim 217 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex; wherein said determining step includes a loop that terminates when a channel is selected that has a decoder buffer that is not approaching a full state, said loop including: (a) selecting a next channel; and (b) evaluating whether or not the decoder buffer of said next channel is approaching a full state; wherein said step of selecting said next channel substantially balances the decoder buffers; wherein said fall state is the state of not having enough room for the next available packet to be sent of said next channel; wherein substantially balancing keeps substantially the same time duration stored in each decoder buffer; wherein said step of evaluating includes using one or more time stamps in the program stream of said next packet.
Claim 13
Independent Claim 217 words
A method for multiplexing a set of n program streams to form a multiplex, each program stream in said set having a corresponding channel, each program stream in said set decodeable by a corresponding decoder, each corresponding decoder including a corresponding decoder buffer, said method comprising the steps of: (a) partitioning each program stream in said set into packets; (b) determining a next packet to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state; and (c) appending said next packet to said multiplex; wherein said determining step includes a loop that terminates when a channel is selected that has a decoder buffer that is not approaching a full state, said loop including: (a) selecting a next channel; and (b) evaluating whether or not the decoder buffer of said next channel is approaching a full state; wherein said step of selecting said next channel substantially balances the decoder buffers; wherein said fall state is the state of not having enough room for the next available packet to be sent of said next channel; wherein substantially balancing keeps substantially the same time duration stored in each decoder buffer; wherein said step of evaluating includes using one or more time stamps in the program stream of said next packet.
Claim 14
Dependent Claim 28 words
The method of claim 10, wherein said step of selecting said next channel includes using one or more time stamps in the program stream of said next channel.
Claim 15
Dependent Claim 12 words
The method of claim 4, wherein said packets are fixed length packets.
Claim 16
Dependent Claim 15 words
The method of claim 4, wherein said program streams are segments of a compressed program.
Claim 17
Independent Claim 123 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream in said set being decodeable by a corresponding decoder, each program stream in said set partitioned into packets, each corresponding decoder including a corresponding decoder buffer, said apparatus comprising: (a) a means for determining a next packet of said packets to append to said multiplex, said determining means including means for ascertaining whether or not a decoder buffer is approaching a fall state; (b) a means for determining a next packet into said packets to append to said multiplex, said determining means, including means for balancing the decoder buffers; and (c) a means coupled to said determining means, for appending said next packet to said multiplex.
Claim 18
Independent Claim 123 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream in said set being decodeable by a corresponding decoder, each program stream in said set partitioned into packets, each corresponding decoder including a corresponding decoder buffer, said apparatus comprising: (a) a means for determining a next packet of said packets to append to said multiplex, said determining means including means for ascertaining whether or not a decoder buffer is approaching a fall state; (b) a means for determining a next packet into said packets to append to said multiplex, said determining means, including means for balancing the decoder buffers; and (c) a means coupled to said determining means, for appending said next packet to said multiplex.
Claim 19
Independent Claim 139 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream in said set being decodeable by a corresponding decoder, each program stream in said set partitioned into packets, each corresponding decoder including a corresponding decoder buffer, said apparatus comprising: (a) a means for determining a next packet of said packets to append to said multiplex, said determining means including means for ascertaining whether or not a decoder buffer is approaching a full state; (b) a means for determining a next packet into said packets to append to said multiplex, said determining means, including means for balancing the decoder buffers; and (c) a means coupled to said determining means, for appending said next packet to said multiplex, wherein said means for ascertaining also ascertains whether or not a buffer is about to empty.
Claim 20
Independent Claim 139 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream in said set being decodeable by a corresponding decoder, each program stream in said set partitioned into packets, each corresponding decoder including a corresponding decoder buffer, said apparatus comprising: (a) a means for determining a next packet of said packets to append to said multiplex, said determining means including means for ascertaining whether or not a decoder buffer is approaching a full state; (b) a means for determining a next packet into said packets to append to said multiplex, said determining means, including means for balancing the decoder buffers; and (c) a means coupled to said determining means, for appending said next packet to said multiplex, wherein said means for ascertaining also ascertains whether or not a buffer is about to empty.
Claim 21
Dependent Claim 27 words
The apparatus of claim 15, wherein said means for determining further comprises a means for reading time stamps, said reading means coupled to said means for ascertaining.
Claim 22
Dependent Claim 18 words
The apparatus of claim 15, wherein said means for determining includes means for substantially balancing the decoder buffers.
Claim 23
Dependent Claim 238 words
A server system for generating multiplexes of a set of encoded program streams, said server system comprising: (a) a controller; (b) a plurality of server modules, each server module in said plurality coupled to said controller, each server module in said plurality being capable of storing the compressed data of a program stream, said compressed data partitioned into packets, and each server module in said plurality having an output port for said compressed data; (c) a set of one or more MUX modules, each MUX module coupled to said controller, each MUX module in said set being capable of generating a multiplex, and each MUX module in said set having an input port for compressed data; and (d) a data transmission means coupled to the output ports of said server modules and to the input ports of said MUX modules; whereby said transmission means under control of said controller enables a selected MUX to form said multiplex of the compressed data from the output ports of a selected subset of one or more server modules, the compressed data from each server port in said selected subset being decodeable by a decoder corresponding to said each server port, each corresponding decoder including a corresponding decoder buffer, and said controller determines a next packet for said selected MUX module to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state.
Claim 24
Dependent Claim 238 words
A server system for generating multiplexes of a set of encoded program streams, said server system comprising: (a) a controller; (b) a plurality of server modules, each server module in said plurality coupled to said controller, each server module in said plurality being capable of storing the compressed data of a program stream, said compressed data partitioned into packets, and each server module in said plurality having an output port for said compressed data; (c) a set of one or more MUX modules, each MUX module coupled to said controller, each MUX module in said set being capable of generating a multiplex, and each MUX module in said set having an input port for compressed data; and (d) a data transmission means coupled to the output ports of said server modules and to the input ports of said MUX modules; whereby said transmission means under control of said controller enables a selected MUX to form said multiplex of the compressed data from the output ports of a selected subset of one or more server modules, the compressed data from each server port in said selected subset being decodeable by a decoder corresponding to said each server port, each corresponding decoder including a corresponding decoder buffer, and said controller determines a next packet for said selected MUX module to append to said multiplex by selecting a channel that has a decoder buffer that is not approaching a full state.
Claim 25
Dependent Claim 21 words
The server system of claim 18, wherein said controller also determines said next packet according to substantially balancing the decoder buffer.
Claim 26
Dependent Claim 12 words
The server system of claim 18, wherein said controller comprises a computer.
Claim 27
Dependent Claim 13 words
The server system of claim 18, wherein said transmission means comprises a bus.
Claim 28
Independent Claim 104 words
A method of multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the method comprising the steps of: partitioning each program stream into packets; maintaining a record of a current level of fullness of each decoder buffer; determining a next packet to append to the multiplex by selecting a program stream that the record indicates has a corresponding decoder buffer that is not approaching a full state and using a packet from the selected program stream as the next packet; and appending the next packet to the multiplex.
Claim 29
Independent Claim 104 words
A method of multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the method comprising the steps of: partitioning each program stream into packets; maintaining a record of a current level of fullness of each decoder buffer; determining a next packet to append to the multiplex by selecting a program stream that the record indicates has a corresponding decoder buffer that is not approaching a full state and using a packet from the selected program stream as the next packet; and appending the next packet to the multiplex.
Claim 30
Dependent Claim 36 words
A method in accordance with claim 22, wherein the step of determining a next packet to append to the multiplex further comprises the step of: determining from the record which decoder buffer will be empty first.
Claim 31
Dependent Claim 39 words
A method in accordance with claim 22, wherein the step of maintaining a record of a current level of fullness of each decoder buffer further comprises the step of: recording time stamps associated with packets in the program streams.
Claim 32
Dependent Claim 34 words
A method in accordance with claim 24, wherein the step of determining a next packet to append to the multiplex further comprises the step of: comparing the recorded time stamps with a reference clock.
Claim 33
Independent Claim 108 words
A method of multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the method comprising the steps of: partitioning each program stream into packets; maintaining a record of a current level of fullness of each decoder buffer; determining a next packet to append to the multiplex by checking whether the record indicates that all decoder buffers are full; selecting a program stream and using a packet therefrom as the next packet in response to the record indicating that not all decoder buffers are full; and appending the next packet to the multiplex.
Claim 34
Independent Claim 108 words
A method of multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the method comprising the steps of: partitioning each program stream into packets; maintaining a record of a current level of fullness of each decoder buffer; determining a next packet to append to the multiplex by checking whether the record indicates that all decoder buffers are full; selecting a program stream and using a packet therefrom as the next packet in response to the record indicating that not all decoder buffers are full; and appending the next packet to the multiplex.
Claim 35
Dependent Claim 34 words
A method in accordance with claim 26, further comprising the step of: using an alternate packet as the next packet in response to the record indicating that all of the decoder buffers are full.
Claim 36
Dependent Claim 15 words
A method in accordance with claim 27, wherein the alternate packet is a fill packet.
Claim 37
Dependent Claim 31 words
A method in accordance with claim 26, wherein the step of selecting a program stream further comprises the step of: determining from the record which decoder buffer will be empty first.
Claim 38
Dependent Claim 39 words
A method in accordance with claim 26, wherein the step of maintaining a record of a current level of fullness of each decoder buffer further comprises the step of: recording time stamps associated with packets in the program streams.
Claim 39
Dependent Claim 34 words
A method in accordance with claim 30, wherein the step of determining a next packet to append to the multiplex further comprises the step of: comparing the recorded time stamps with a reference clock.
Claim 40
Independent Claim 113 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, comprising: means for partitioning each program stream into packets; means for maintaining a record of a current level of fullness of each decoder buffer; means for determining a next packet to append to the multiplex by checking whether the record indicates that all decoder buffers are full; means for selecting a program stream and using a packet therefrom as the next packet in response to the record indicating that not all decoder buffers are full; and means for appending the next packet to the multiplex.
Claim 41
Independent Claim 113 words
An apparatus for multiplexing a set of n program streams to form a multiplex, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, comprising: means for partitioning each program stream into packets; means for maintaining a record of a current level of fullness of each decoder buffer; means for determining a next packet to append to the multiplex by checking whether the record indicates that all decoder buffers are full; means for selecting a program stream and using a packet therefrom as the next packet in response to the record indicating that not all decoder buffers are full; and means for appending the next packet to the multiplex.
Claim 42
Dependent Claim 33 words
An apparatus in accordance with claim 32, further comprising: means for using an alternate packet as the next packet in response to the record indicating that all of the decoder buffers are full.
Claim 43
Dependent Claim 15 words
An apparatus in accordance with claim 33, wherein the alternate packet is a fill packet.
Claim 44
Dependent Claim 30 words
An apparatus in accordance with claim 32, wherein the means for selecting a program stream further comprises: means for determining from the record which decoder buffer will be empty first.
Claim 45
Dependent Claim 38 words
An apparatus in accordance with claim 32, wherein the means for maintaining a record of a current level of fullness of each decoder buffer further comprises: means for recording time stamps associated with packets in the program streams.
Claim 46
Dependent Claim 33 words
An apparatus in accordance with claim 36, wherein the means for determining a next packet to append to the multiplex further comprises: means for comparing the recorded time stamps with a reference clock.
Claim 47
Dependent Claim 240 words
A server system for generating multiplexes of encoded program streams, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the server system comprising: a data transmission bus; a plurality of server modules that each have an output coupled to the data transmission bus, each server module being configured to store a program stream that has been compressed and partitioned into packets and to provide the program stream to the data transmission bus; a set of one or more MUX modules that each have a plurality of input ports coupled to the data transmission bus, each MUX module being configured to receive one or more program streams from the data transmission bus and to generate an output multiplex; and a controller coupled to the server modules and to the MUX modules, the controller being configured to route program streams from a subset of one or more of the server modules to a selected one of the MUX modules, the controller being further configured to maintain a record of a current level of fullness of each decoder buffer and to determine a next packet to append to the output multiplex of the selected MUX module by selecting a program stream from one of the subset of server modules that the record indicates has a corresponding decoder buffer that is not approaching a fall state and using a packet from the selected program stream as the next packet.
Claim 48
Dependent Claim 240 words
A server system for generating multiplexes of encoded program streams, each program stream being decodeable by a corresponding decoder having a corresponding decoder buffer, the server system comprising: a data transmission bus; a plurality of server modules that each have an output coupled to the data transmission bus, each server module being configured to store a program stream that has been compressed and partitioned into packets and to provide the program stream to the data transmission bus; a set of one or more MUX modules that each have a plurality of input ports coupled to the data transmission bus, each MUX module being configured to receive one or more program streams from the data transmission bus and to generate an output multiplex; and a controller coupled to the server modules and to the MUX modules, the controller being configured to route program streams from a subset of one or more of the server modules to a selected one of the MUX modules, the controller being further configured to maintain a record of a current level of fullness of each decoder buffer and to determine a next packet to append to the output multiplex of the selected MUX module by selecting a program stream from one of the subset of server modules that the record indicates has a corresponding decoder buffer that is not approaching a fall state and using a packet from the selected program stream as the next packet.
Claim 49
Dependent Claim 37 words
A server system in accordance with claim 38, wherein the controller is further configured to use an alternate packet as the next packet in response to the record indicating that all of the decoder buffers are fall.
Claim 50
Dependent Claim 16 words
A server system in accordance with claim 39, wherein the alternate packet is a fill packet.
Claim 51
Dependent Claim 27 words
A server system in accordance with claim 38, wherein the controller selects a program stream by determining from the record which decoder buffer will be empty first.
Claim 52
Dependent Claim 35 words
A server system in accordance with claim 38, wherein the controller maintains a record of a current level of fullness of each decoder buffer by recording time stamps associated with packets in the program streams.
Claim 53
Dependent Claim 28 words
A server system in accordance with claim 42, wherein the controlled determines a next packet to append to the output multiplex by comparing stamps with a reference clock.

USPTO Annuity & Maintenance Windows

Annuity Stage Window Opens Payment Deadline Surcharge Period Until Estimated Fee Status
3.5 Years (Year 4) 2002-01-18 2002-07-20 2003-01-19 $2000.00 Window Closed / Lapsed
7.5 Years (Year 8) 2006-01-18 2006-07-20 2007-01-19 $3760.00 Window Closed / Lapsed
11.5 Years (Year 12) 2010-01-18 2010-07-20 2011-01-19 $7700.00 Window Closed / Lapsed

Assigned Categories & Tags

No categories assigned to this patent yet.

Assign Category Tag