IP Library Granted Patent US 8,090,241
Granted Patent B2
US 8,090,241 · App. 11/803,877 · Granted Jan 3, 2012

System and method for simultaneous network recording and playback of digital television programs

Assignee: Broadcom Corporation
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,090,241
App. No.
11/803,877
Granted
Jan 3, 2012
Kind
B2
Abstract

A method of playing back a television program on a playback device connected to a local area network while simultaneously storing a television program on a storage device connected to the network is disclosed. The method includes receiving a television broadcast that includes at least one program at a first settop box. A first program is stored on a permanent storage device of a network storage server connected through a network to the first settop box. While receiving the television broadcast and while storing the first program, a program is rendered on a digital media rendering device connected through the network to the first settop box.

Claims (39)

1. A method of playing back a television program on a playback device connected to a local area network while simultaneously storing the television program on a storage device connected to the network, the method comprising:

receiving a television broadcast at a first settop box, wherein the television broadcast comprises at least one program;

storing a first program on a permanent storage device of a network storage server connected through a network to the first settop box, wherein storing the at least one of the programs on the network storage server comprises:

establishing a connection between the settop box and the network storage server for a session according to a TCP/IP protocol;

receiving data packets corresponding to the first program from the settop box in a kernel space buffer of the network storage server, wherein the data packets include payload data and headers;

stripping the headers from the packets and routing the payload data directly from the kernel space buffer through memory-to-memory direct memory access circuitry (DMA), without processing through a TCP/IP stack, to a user space buffer of the network storage server;

writing the payload data in the user space buffer of the network through a hard disk DMA to a permanent storage medium of the network storage server

defining a packet header template for acknowledging the receipt of the data packet, the template having a plurality of static fields filled with static values and a variable field adapted for carrying the value of a sequence number identifying the ACK packet within a sequence of a plurality of ACK packets sent from the network storage server to the network receiving during the session;

storing the header template in a memory location of a memory device of the network storage server;

updating, within the kernel space of the network storage server, packet-dependent values of the variable fields of the template stored in the memory device; and

sending an ACK packet that includes a copy of the updated packet header from the network storage server to the settop box to acknowledge the receipt of the packet; and

while receiving the television broadcast and while storing the first program, rendering a program on a digital media rendering device connected through the network to the first settop box.

2. The method of claim 1 , wherein the program that is stored on the network storage server is different than the program that is rendered on the digital media rendering device.

3. The method of claim 1 , wherein the program that is rendered on the digital media rendering device is a time-shifted version of the program that is stored on the network storage server.

4. The method of claim 1 , wherein the first settop box is different from the digital media rendering device.

5. The method of claim 1 , further comprising while receiving the television broadcast and while storing the first program, storing a second program on the network storage server, wherein the network storage server is also connected through the network to the second settop box.

6. The method of claim 1 , further comprising while receiving the television broadcast and while storing the program, rendering another program on a second digital media rendering device connected through the network.

7. The method of claim 6 , wherein the television broadcast comprises the other program.

8. The method of claim 6 , wherein the other program is received from the memory device comprised by the network storage server.

9. The method of claim 1 , wherein the static fields include a source field, a destination field, and a window size field.

10. The method of claim 1 , further comprising writing updated packet-dependent values from a CPU cache to the template stored in the memory, wherein at least one static value used in ACK packet header is not written from the template to the CPU cache and back to the memory device.

11. The method of claim 1 , wherein storing the first program on the network storage server comprises:

writing the program in discrete video frames to a storage medium comprised by the network storage server; and

generating a time index of video frames of the program for use when playing back the program from the storage medium, so that the program can be rendered based on an accurate timestamp.

12. An apparatus for playing back a television program on a playback device connected to network while simultaneously storing the television program, the apparatus comprising:

an edge device adapted for receiving a television broadcast, wherein the television broadcast comprises a least one program;

a network storage server connected through a network to the edge device according to a TCP/IP protocol, the network storage server comprising:

a permanent storage medium,

a kernel space buffer configured for receiving data packets corresponding to the program from the edge device, wherein the data packets include payload data and headers,

a user space buffer,

memory-to-memory direct memory access (DMA) circuitry configured for writing payload data that has been stripped from the headers from the kernel space buffer to the user space buffer, without processing through a TCP/IP stack,

hard disk DMA circuitry configured for writing the payload data from the user space buffer to the permanent storage medium,

a memory configured for storing a packet header template for acknowledging the receipt of the data packets, the template having a plurality of static fields filled with static values and a variable field adapted for carrying the value of a sequence number identifying the ACK packet within a sequence of a plurality of ACK packets sent from the network storage server to the network receiving during the session;

a software-based TCP offload engine configured for updating, within the kernel space of the network storage server, the packet-dependent values of the variable fields of the template stored in the memory device and sending an ACK packet that includes a copy of the updated packet header from the network storage server to the settop box to acknowledge the receipt of the packet.

13. The apparatus of claim 12 , wherein the program being played back is a time-shifted version of the program being stored.

14. The apparatus of claim 12 , wherein the network storage server is further adapted for streaming, while storing the first program, the first program for rendering on a first digital media rendering device connected through the network to the storage server and a second program for rendering on a second digital media rendering device connected through the network to the storage server.

15. The apparatus of claim 12 , wherein the network comprises a wireless network.

16. The apparatus of claim 12 , wherein the hard disk DMA circuitry is configured for writing the program in discrete video frames directly to the storage medium and for generating a time index of video frames of the program for use when playing back the program from the storage medium, so that the program can be rendered based on an accurate timestamp.

17. The apparatus of claim 12 , wherein the edge device does not comprise a storage medium adapted for storing television programs.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0267 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0344 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0687 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: BROADCOM CORPORATION
Reel/Frame 041712/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 1, 2017
From: BROADCOM CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041706/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: BROADCOM CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037806/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 19, 2007
From: RAJAKARUNANAYAKE, YASANTHA N.; RUBIO, JOSE A.
To: BROADCOM CORPORATION
Reel/Frame 019581/0739 →
Continuity (1)
Related Publication 20080285945A1 · Nov 20, 2008