Methods and systems for a personal video recorder (PVR) software buffer management to support the software passage are disclosed. A first plurality of receive buffer descriptors may be allocated for recording at least one received packet in at least a portion of a shared memory. The received packet may be recorded in the shared memory utilizing at least one of the allocated first plurality of receive buffer descriptors. A plurality of playback buffer descriptors may be allocated for playback of the recorded received packet from the shared memory. A first portion of the received packet may be simultaneously played back from the shared memory while recording a second portion of the received packet in the shared memory. If at least one of the recorded received packet is consumed, the playback buffer descriptors corresponding to a number of the consumed received packet may be de-allocated.
|
1. A method for processing a packet, the method comprising:
allocating a first plurality of receive buffer descriptors for recording at least one received packet in at least a portion of a shared memory;
recording said at least one received packet in said at least a portion of said shared memory utilizing at least one of said allocated first plurality of receive buffer descriptors;
responsive to said recording, allocating a plurality of playback buffer descriptors for playback of said recorded said at least one received packet from said at least a portion of said shared memory; and
decoding a first portion of said at least one received packet from said shared memory, while recording a second portion of said at least one received packet in said shared memory.
21. A system for processing a packet, the system comprising:
one or more circuits that enable allocating a first plurality of receive buffer descriptors for recording at least one received packet in at least a portion of a shared memory;
said one or more circuits enable recording said at least one received packet in said at least a portion of said shared memory utilizing at least one of said allocated first plurality of receive buffer descriptors;
said one or more circuits enable allocating, responsive to said recording, a plurality of playback buffer descriptors for playback of said recorded said at least one received packet from said at least a portion of said shared memory; and
said one or more circuits enable decoding a first portion of said at least one received packet from said shared memory, while recording a second portion of said at least one received packet in said shared memory.
11. A non-transitory machine-readable storage having stored thereon, a computer program having at least one code section for processing a packet, the at least one code section being executable by a machine to perform steps comprising:
allocating a first plurality of receive buffer descriptors for recording at least one received packet in at least a portion of a shared memory;
recording said at least one received packet in said at least a portion of said shared memory utilizing at least one of said allocated first plurality of receive buffer descriptors;
responsive to said recording, allocating a plurality of playback buffer descriptors for playback of said recorded said at least one received packet from said at least a portion of said shared memory; and
decoding a first portion of said at least one received packet from said shared memory, while recording a second portion of said at least one received packet in said shared memory.
2. The method according to
3. The method according to
4. The method according to
5. The method according to
6. The method according to
7. The method according to
8. The method according to
9. The method according to
10. The method according to
12. The non-transitory machine-readable storage according to
13. The non-transitory machine-readable storage according to
14. The non-transitory machine-readable storage according to
15. The non-transitory machine-readable storage according to
16. The non-transitory machine-readable storage according to
17. The non-transitory machine-readable storage according to
18. The non-transitory machine-readable storage according to
19. The non-transitory machine-readable storage according to
20. The non-transitory machine-readable storage according to
22. The system according to
23. The system according to
24. The system according to
25. The system according to
26. The system according to
27. The system according to
28. The system according to
29. The system according to
30. The system according to
|
Not Applicable
Not Applicable
Not Applicable
Certain embodiments of the invention relate to processing bitstream information. More specifically, certain embodiments of the invention relate to a method and system for a personal video recorder (PVR) software buffer management to support software passage.
Passage technology was introduced by Sony in 2002 and is relatively new in the communications field. The technology allows equipment from multiple vendors to co-exist on legacy digital cable television (CATV) networks. Passage technology supports multiple conditional access (CA) systems, and it treats each CA system independently. Passage also allows each CA system to operate on its own encrypted data. During encoding, only certain data may be selected for encryption. This process allows multiple conditional access systems to co-exist in an existing cable plant. An additional benefit is that passage technology supports digital video broadcast (DVB) open standards. The DVB open standards have been extended to allow communication to a passage encoding device, for example. Support for DVB open standards allows interchangeable headend equipment operation, and interoperability of multiple CA systems.
During encoding of a passage stream, vital data, essential for decoding, may be selected, duplicated, and encrypted once for legacy set-top boxes (STBs) and once for Passage STBs. Each STB may receive the same transport data and may appropriately select its STB-specific encrypted data. General, non-STB specific content may be shared by all STBs. In this regard, only the critical data necessary for recovering video or audio content may need to be encrypted, and the passage system may only encrypt critical data. If a decoder cannot receive the critical data, then the video image cannot be decompressed.
During decoding of a passage stream, a conventional set-top box (STB) receiver, for example, may utilize a plurality of on-chip memories to store received encoded data as well as decoded passage stream data prior to displaying. Utilizing separate memories for recording encoded passage stream information and decoded information significantly reduces the processing efficiency of the STB and increases implementation cost.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.
A system and/or method for a personal video recorder (PVR) software buffer management to support software passage, substantially as shown in and/or described in connection with at least one of the figures, as set forth more completely in the claims.
Various advantages, aspects and novel features of the present invention, as well as details of an illustrated embodiment thereof, will be more fully understood from the following description and drawings.
Certain embodiments of the invention may be found in a method and system for a personal video recorder (PVR) software buffer management to support the software passage. A passage stream decoder may be adapted to utilize a single shared memory during recording of encoded passage stream information and during playing back, or decoding, of the stored passage stream information. Initially, a software driver within the passage decoder may create a buffer in the shared memory, which may be simultaneously utilized by both recording and playback hardware modules, for example, to use. Further, a half list, or approximately a half list, of record descriptors may be allocated with the buffer addresses mapping to the top half of the allocated shared memory buffer. By utilizing a half, or approximately a half of the memory, encoded passage stream information may be recorded and then played back utilizing the same memory and without a need to duplicate recorded information prior to playback. This eliminates a need for separate recording and playback memories for recording and playback.
In accordance with an embodiment of the invention, a first plurality of receive buffer descriptors may be allocated for recording at least one received packet in at least a portion of a shared memory. The received packet may be recorded in the shared memory utilizing at least one of the allocated first plurality of receive buffer descriptors. A plurality of playback buffer descriptors may be allocated for playback of the recorded received packet from the shared memory. A first portion of the received packet may be simultaneously played back from the shared memory while recording a second portion of the received packet in the shared memory. If at least one of the recorded received packet is consumed, the playback buffer descriptors corresponding to a number of the consumed received packet may be de-allocated.
A second plurality of receive buffer descriptors corresponding to the number of the consumed recorded received packet may be allocated. The received packet may comprise a Transport Passage packet. Approximately one half of the shared memory may be allocated for the recording of the received packet. The received packet may be decoded prior to the recording. The recorded received packet may be decoded prior to playback. If a last one of the allocated first plurality of receive buffer descriptors is utilized, a first of the allocated first plurality of receive buffer descriptors may be wrapped around. If a last one of the allocated plurality of playback buffer descriptors is utilized, a first of the allocated plurality of playback buffer descriptors may be wrapped around.
Another embodiment of the invention may provide a machine-readable storage, having stored thereon, a computer program having at least one code section executable by a machine, thereby causing the machine to perform the steps as described herein for personal video recorder (PVR) software buffer management to support the software passage.
In operation, data stream from the TV program source 108 may be encoded utilizing the passage stream encoder 110. The encoded passage stream may then be modulated by the QAM block 112 and transmitted via the cable or SAT medium 104. The transmitted encoded passage stream may be received by the STB RF receiver 114. The transport block 116 may transport the received encoded passage stream to the passage stream decoder 118. The passage stream decoder 118 may comprise suitable circuitry, logic, and/or code and may be adapted to decode the received encoded passage stream to an encoded stream in a more conventional format, such as MPEG-2. The simplified encoded stream may be communicated to the A/V decoder 120 for decoding. Decoded audio and video streams may then be communicated to the TV display 122 for presentation thereon.
In an exemplary aspect of the invention, the passage stream decoder 118 may be implemented in software and/or as a dedicated processor utilizing a single shared memory for recording encoded passage information and playing back the stored encoded passage information prior to decoding. This playing back occurs without having to copy the data to be played back from a recording memory to a playback memory.
The in-band block 202 may comprise suitable circuitry, logic, and/or code and may be adapted receive the passage transport stream 226. The passage transport stream 226 may be communicated inband. The PID parser block 204 may comprise PID information for legacy video/audio, shadow video/audio, and/or optional PIDs and may be adapted to select PIDs depending on whether audio or video information will be decoded.
The record hardware block 206 may comprise suitable circuitry, logic, and/or code and may be configured to record passage stream packets containing the PIDS selected by the PID parser 204 into the memory 212. The memory 212 may comprise SDRAM, for example. The passage stream decoder 200 may allocate about 480 Kbytes to 1.5 Mbytes, for example, of the SDRAM memory 212, which may be utilized to record the passage stream. The decoder 200 may also be adapted to create a list of hardware record descriptors for the record hardware 206 and to manage the memory 212. The software record thread 208 may be utilized to manage the record descriptor list and to check the record hardware 206 for new recorded passage stream packets in the memory 212. The software record thread 208 may also be utilized to indicate to the software playback thread 210 the packet memory addresses and size of a newly recorded passage stream packet. The record hardware 206 may generate a signal such as an interrupt signal 228 for the software record thread 208 when the record hardware 206 finishes recording passage stream packets into the shared memory 212.
The software playback thread 210 may be adapted to receive notifications from the software record thread 208 for newly recorded passage stream packets that may be recorded into the shared memory 212. After receiving a signal indicating the recording of new passage stream packets from the software record thread 208, the software playback thread 210 may perform passage stream decoding. Passage stream decoding may be utilized to transform the passage stream packets into an MPEG-2 formatted stream, for example. In addition, the software playback thread 210 may be adapted to manage the playback of information indicated by the hardware descriptors. The software packet thread 210 may communicate the decoded passage streams to the playback hardware 214. The playback hardware 214 may generate a signal such as an interrupt signal 230 for the software playback thread 210 when the playback hardware 214 finishes playing back, or decoding, passage stream packets recorded into the shared memory 212.
In an exemplary aspect of the invention, the playback hardware 214 may be configured to feed passage stream packets into the TP playback block 216. Each of the passage stream packets may be identified for processing by the PID parser 218 and the A/V decoder 220. The playback hardware 214 may also be configured to program and/or reset PID tables within the PID parser 218 so that legacy video, legacy audio, and/or optional PIDs may be selected for processing. The selected passage stream may then be communicated to the A/V decoder 220 for decoding. Decoded video information may be communicated to the video display 222 and audio information may be communicated to the audio DAC 224 for further processing.
In one aspect of the invention, the passage stream decoder 200 may be adapted to utilize a single shared memory 212 during simultaneous recording of encoded passage stream information and during playing back, or decoding, of the stored passage stream information. Initially, a software driver within the passage decoder 200 may create a buffer in the shared memory for record and playback hardware modules 206 and 214, respectively, to use. Further, a half list, or approximately a half list of record descriptors may be allocated with corresponding buffer addresses being mapped to the top half of the allocated shared memory buffer within the memory 212. The list of playback descriptors may initially be left empty. The software driver may configure the record/playback hardware to trigger a signal such as an interrupt signal each time it completes consuming of the data associated with a descriptor.
After the software driver within the decoder 200 starts the record hardware 206 with a half list of record descriptors and the playback hardware 214 with an empty list of the playback descriptors, the software driver may check the number of record descriptors which are consumed by the record hardware 206. Based on this number, the software driver may allocate an equivalent number of new record descriptors with the buffer addresses mapping to the remaining half of the allocated buffer in the shared memory 212. The new record descriptors may be inserted at the end of the existing record descriptor list. The software driver may build an equivalent number of playback descriptors with the address buffers pointing to the locations where the consumed record descriptors buffer addresses are, and may add the descriptors to the existing playback descriptor list. When the software driver reaches the last descriptor, the software driver may allocate the next descriptor with buffer address pointing to the beginning location of the allocated shared memory buffer.
In an exemplary aspect of the invention, the shared memory buffer 302 may be segmented into 256 segments, 20×188 bytes each, so that each segment may store 20 MPEG passage transport packets. The record hardware descriptor list 304 and the playback hardware descriptor list 306 may comprise descriptors allocated for corresponding memory segments, as illustrated in
In another aspect of the invention, in order to utilize the shared memory more efficiently and without data overruns, record and playback hardware may be adapted to utilize one half, or approximately half, of the record descriptor list 304 and the playback descriptor list 306.
Since two record descriptors are done, a software driver within the passage stream decoder may construct the next two record descriptors, with indexes 128 and 129, where the buffer addresses may be mapped to the next available segments in the shared memory 502. In addition to managing the record descriptor list after two record descriptors are done, the software driver within the passage stream decoder may also manages and update the playback descriptor list, as described in more detail in
During an exemplary playback descriptor list post-scenario 606, the record hardware may finish recording two segments of data in the shared memory 602. In response to the two complete record descriptors, a software driver may configure two playback descriptors with the buffer addresses mapped to the two new recorded buffers in the shared memory 602 and may add the descriptors to the playback descriptor list. In this regard, the playback hardware pointer 612 may point to the descriptor with index 0 and the playback hardware may start working on this descriptor. The last valid playback descriptor 614 is at index 1 of the playback descriptor list.
Referring to
The processor may simultaneously play back a first portion of the received packet from the shared memory 402 while recording a second portion of the received packet in the shared memory 402. If a recorded received packet is consumed, the playback buffer descriptors in the descriptor list 406 corresponding to a number of the consumed recorded received packet may be de-allocated by the processor. A second plurality of receive buffer descriptors in the descriptor list 404 may be allocated by the processor corresponding to the number of the consumed recorded received packet. The received packet may comprise a Transport Passage packet.
The processor may allocate approximately one half of the shared memory 402 for the recording of the received packet and may decode the received packet prior to the recording. The recorded received packet may be decoded by the processor prior to playback. If a last one of the allocated receive buffer descriptors in the descriptor list 404 is utilized, the processor may wrap around to a first of the allocated receive buffer descriptors in the descriptor list 404 and/or to a first of the allocated plurality of playback buffer descriptors in the descriptor list 406.
Accordingly, aspects of the invention may be realized in hardware, software, firmware or a combination thereof. The invention may be realized in a centralized fashion in at least one computer system or in a distributed fashion where different elements are spread across several interconnected computer systems. Any kind of computer system or other apparatus adapted for carrying out the methods described herein is suited. A typical combination of hardware, software and firmware may be a general-purpose computer system with a computer program that, when being loaded and executed, controls the computer system such that it carries out the methods described herein.
One embodiment of the present invention may be implemented as a board level product, as a single chip, application specific integrated circuit (ASIC), or with varying levels integrated on a single chip with other portions of the system as separate components. The degree of integration of the system will primarily be determined by speed and cost considerations. Because of the sophisticated nature of modern processors, it is possible to utilize a commercially available processor, which may be implemented external to an ASIC implementation of the present system. Alternatively, if the processor is available as an ASIC core or logic block, then the commercially available processor may be implemented as part of an ASIC device with various functions implemented as firmware.
The invention may also be embedded in a computer program product, which comprises all the features enabling the implementation of the methods described herein, and which when loaded in a computer system is able to carry out these methods. Computer program in the present context may mean, for example, any expression, in any language, code or notation, of a set of instructions intended to cause a system having an information processing capability to perform a particular function either directly or after either or both of the following: a) conversion to another language, code or notation; b) reproduction in a different material form. However, other meanings of computer program within the understanding of those skilled in the art are also contemplated by the present invention.
While the invention has been described with reference to certain embodiments, it will be understood by those skilled in the art that various changes may be made and equivalents may be substituted without departing from the scope of the present invention. In addition, many modifications may be made to adapt a particular situation or material to the teachings of the present invention without departing from its scope. Therefore, it is intended that the present invention not be limited to the particular embodiments disclosed, but that the present invention will include all embodiments falling within the scope of the appended claims.
Patent | Priority | Assignee | Title |
8789088, | Mar 31 2010 | Electronics and Telecommunications Research Institute | Method and apparatus for remotely installing and updating different security clients for broadcasting or communication channels |
9697630, | Oct 01 2014 | Sony Corporation | Sign language window using picture-in-picture |
Patent | Priority | Assignee | Title |
5477541, | Dec 04 1989 | Motorola Mobility LLC | Addressing technique for storing and referencing packet data |
5809334, | Sep 24 1996 | Allen-Bradley Company, LLC | Receive packet pre-parsing by a DMA controller |
5996013, | Apr 30 1997 | International Business Machines Corporation | Method and apparatus for resource allocation with guarantees |
6081783, | Nov 14 1997 | CRYSTAL SEMICONDUCTOR CORP | Dual processor digital audio decoder with shared memory data transfer and task partitioning for decompressing compressed audio data, and systems and methods using the same |
6185438, | Oct 01 1998 | Samsung Electronics Co., Ltd. | Processor using virtual array of buffer descriptors and method of operation |
6223261, | Jul 31 1997 | Matsushita Electric Industrial Co., Ltd. | Communication system method and recording apparatus for performing arbitrary application processing |
6438319, | Jun 05 1995 | Sony Electronics Inc. | Recording digital video signals and redundancy signals for error correction |
6667978, | Jul 09 1998 | International Business Machines Corporation | Apparatus and method for reassembling frame data into stream data |
7117308, | Apr 06 2004 | Cisco Technology, Inc. | Hypertransport data path protocol |
7774778, | Feb 25 2004 | Panasonic Corporation | Device control apparatus, device control method, and computer-readable recording medium recorded with device control program |
20010007565, | |||
20010014100, | |||
20020061183, | |||
20030165196, | |||
20040013406, | |||
20040155801, | |||
20050135395, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 01 2005 | Broadcom Corporation | (assignment on the face of the patent) | / | |||
Mar 01 2005 | PHAN, KEVIN T | Broadcom Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 016021 | /0428 | |
Feb 01 2016 | Broadcom Corporation | BANK OF AMERICA, N A , AS COLLATERAL AGENT | PATENT SECURITY AGREEMENT | 037806 | /0001 | |
Jan 19 2017 | BANK OF AMERICA, N A , AS COLLATERAL AGENT | Broadcom Corporation | TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS | 041712 | /0001 | |
Jan 20 2017 | Broadcom Corporation | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041706 | /0001 | |
May 09 2018 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | MERGER SEE DOCUMENT FOR DETAILS | 047230 | /0133 | |
Sep 05 2018 | AVAGO TECHNOLOGIES GENERAL IP SINGAPORE PTE LTD | AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE LIMITED | CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09 05 2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133 ASSIGNOR S HEREBY CONFIRMS THE MERGER | 047630 | /0456 |
Date | Maintenance Fee Events |
Dec 28 2015 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Dec 26 2019 | M1552: Payment of Maintenance Fee, 8th Year, Large Entity. |
Dec 21 2023 | M1553: Payment of Maintenance Fee, 12th Year, Large Entity. |
Date | Maintenance Schedule |
Jun 26 2015 | 4 years fee payment window open |
Dec 26 2015 | 6 months grace period start (w surcharge) |
Jun 26 2016 | patent expiry (for year 4) |
Jun 26 2018 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jun 26 2019 | 8 years fee payment window open |
Dec 26 2019 | 6 months grace period start (w surcharge) |
Jun 26 2020 | patent expiry (for year 8) |
Jun 26 2022 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jun 26 2023 | 12 years fee payment window open |
Dec 26 2023 | 6 months grace period start (w surcharge) |
Jun 26 2024 | patent expiry (for year 12) |
Jun 26 2026 | 2 years to revive unintentionally abandoned end. (for year 12) |