WO2000023914A1 - On-demand decompression and decryption with random access to information - Google Patents

On-demand decompression and decryption with random access to information Download PDF

Info

Publication number
WO2000023914A1
WO2000023914A1 PCT/US1999/023713 US9923713W WO0023914A1 WO 2000023914 A1 WO2000023914 A1 WO 2000023914A1 US 9923713 W US9923713 W US 9923713W WO 0023914 A1 WO0023914 A1 WO 0023914A1
Authority
WO
WIPO (PCT)
Prior art keywords
encoded
block
digital content
offset
original
Prior art date
Application number
PCT/US1999/023713
Other languages
French (fr)
Inventor
Garth Conboy
James Sachs
Aleksey Novicov
John Michael Rivlin
Original Assignee
Softbook Press, Inc.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Softbook Press, Inc. filed Critical Softbook Press, Inc.
Priority to AU13130/00A priority Critical patent/AU1313000A/en
Publication of WO2000023914A1 publication Critical patent/WO2000023914A1/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction

Definitions

  • This invention relates to decompression and decryption.
  • the invention relates to on- demand data decompression and decryption.
  • a device connected to a communication network such as the Internet can download a large amount of data from a server.
  • Two fundamental requirements for network transmission for information retrieval are transmission efficiency and information security.
  • Transmission efficiency refers to the speed of transmitting the data over the network.
  • Information security refers to the confidentiality and integrity of the transmitted data.
  • Transmission efficiency can be achieved by compressing the data to reduce the amount of transmitted data. After receiving the compressed data, the receiving device can decompress the data to recover the original information. Information security can be achieved by using encryption/decryption techniques. Before transmission, the data, whether in compressed or uncompressed form, is encrypted with a secret key. When the receiving device receives the encrypted data, the receiving device decrypts the encrypted data to recover the original information. A transmission of information using both compression/decompression and encryption/decryption techniques can achieve both transmission efficiency and information security.
  • the time to decompress and/or decrypt may be high. This processing time may cause inconvenience to the user of the receiving device. The problem is even more significant when the user does not need to decompress and/or decrypt the entire received data for use.
  • One particular example is the electronic book.
  • An electronic book is a viewing device that allows a user to download over a network electronic versions of copyrighted materials or on-line information for later viewing.
  • the content of such materials is referred to as a digital content.
  • a user of an electronic book downloads the digital content of a book, he or she usually downloads the entire materials into his or her electronic book for later reading or retrieval .
  • the user usually does not need to read the entire digital content at one time. Rather, the user prefers to have the flexibility of accessing the digital contents randomly, at any place in the digital content. If the amount of downloaded data is large, the user may have to wait for some time for decompression and/or decryption. In addition, the amount of on-board storage may be required to be excessively large in order to be able to hold the entire content of the book.
  • the present invention is a method and apparatus for storing and decoding a digital content in a storage device.
  • the digital content is encoded based on a predetermined block size to generate an encoded digital content.
  • An offset table is created to contain encoded offsets pointing to the digital content at predetermined block offsets.
  • the encoded digital content and the offset table are stored in the storage device.
  • a page of information in an encoded content is decoded.
  • the encoded content is encoded from an original content.
  • An original offset of an original block in the original content is obtained.
  • the original block contains the page of information.
  • An encoded offset which corresponds to the original offset is obtained.
  • the encoded offset corresponds to an encoded block in the encoded content.
  • the encoded block is decoded to generate a decoded block which corresponds to the original block.
  • Figure 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced.
  • Figure 2 is a diagram illustrating an electronic book according to one embodiment of the invention.
  • Figure 3 is a diagram illustrating a logical mapping between the compressed and decompressed data according to one embodiment of the invention.
  • Figure 4 is a flowchart illustrating a process for decompressing according to one embodiment of the invention.
  • Figure 5A is a flowchart illustrating a first part of a process for decrypting according to one embodiment of the invention.
  • Figure 5B is a flowchart illustrating a second part of a process for decrypting according to one embodiment of the invention.
  • the present invention is a method and apparatus for decoding a digital content on demand and with random access.
  • the technique stores the encoded data in the receiving device together with an offset table that contains pointers to starting of blocks of encoded data. When requested by the user, the encoded data are decoded using the offset table to locate the blocks that contain the requested data.
  • the technique saves storage space in the receiving device and allows the user to randomly access the stored information.
  • the encoding process may include any encoding technique.
  • Examples of the encoding process include compression and encryption.
  • the decoding process may include any decoding technique corresponding to the encoding technique. Examples of the decoding technique include decompression and decryption.
  • FIG. 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced.
  • the system 100 comprises: (a) at least one portable electronic book 10 operative to request a digital content from a catalog of distinct digital contents, to receive and display the requested digital content in readable form; (b) an information services system 20 which includes an authentication server 32 for authenticating the identity of the requesting portable electronic book 10 and a copyright protection server 22 for rendering the requested digital content sent to the requesting portable electronic book 10 readable only by the requesting portable electronic book 10; (c) at least one primary virtual bookstore 40 in electrical communication with the information services system 20, the primary virtual bookstore being a computer-based storefront accessible by the portable electronic book and including the catalog of distinct digital contents; and (d) a repository 50, in electrical communication with the primary virtual bookstore 40, for storing the distinct digital contents listed in the catalog.
  • the system 100 preferably includes more than one portable electronic book 10, to be commercially viable. This is illustrated in Figure 1 by including the portable electronic books 12 and 14.
  • the system also preferably includes more than one primary virtual bookstore 40, each serving a different set of customers, each customer owning a portable electronic book.
  • the system 100 further comprises a secondary virtual bookstore 60 in electrical communication with the information services system 20.
  • the information services system 20 also includes a directory of virtual bookstores 26 in order to provide the portable electronic book 10 with access to the secondary virtual bookstore 60 and its catalog of digital contents.
  • the information services system 20 can optionally include a notice board server 28 for sending messages from one of the virtual bookstores, primary or secondary, to a portable electronic book in the system.
  • the information services system 20 also includes a registration server 24 for keeping track of the portable electronic books that are considered active accounts in the system and for ensuring that each portable electronic book is associated with a primary virtual bookstore in the system.
  • the registration server 24 also allows each portable electronic book user to define his/her own notice board and document delivery address.
  • the information services system 20 preferably comprises a centralized bookshelf 30 associated with each portable electronic book 10 in the system.
  • Each centralized bookshelf 30 contains all digital contents requested and owned by the associated portable electronic book 10.
  • Each portable electronic book 10 user can permanently delete any of the owned digital contents from the associated centralized bookshelf 30. Since the centralized bookshelf 30 contains all the digital contents owned by the associated portable electronic book 10, these digital contents may have originated from different virtual bookstores.
  • the centralized bookshelf 30 is a storage extension for the portable electronic book 10. Such storage extension is needed since the portable electronic book 10 has limited non-volatile memory capacity.
  • the user of the portable electronic book 10 can add marks, such as bookmarks, inking, highlighting and underlining, and annotations on a digital content displayed on the screen of the portable electronic book, then stores this marked digital content in the nonvolatile memory of the electronic book 10.
  • the user can also upload this marked digital content to the information services system 20 to store it in the centralized bookshelf 30 associated with the portable electronic book 10, for later retrieval. It is noted that there is no need to upload any unmarked digital content, since it was already stored in the centralized bookshelf 30 at the time it was first requested by the portable electronic book 10.
  • the information services system 20 further includes an Internet Services Provider (ISP) 34 for providing Internet network access to each portable electronic book in the system.
  • ISP Internet Services Provider
  • Figure 1 further illustrates that the electronic books 10, 12, and 14 are used in the field.
  • the electronic book 10 has on-board storage devices to store encoded digital content 80 and an offset table 82.
  • the technique in the present invention can be used in any other receiving device.
  • FIG. 2 is a diagram illustrating an electronic book 10 according to one embodiment of the invention.
  • the electronic book 10 includes a processor 210, a program code 220, the encoded digital content 80, an offset table 82, and a decoded digital content 250.
  • the processor 210 is any processor that can execute programs to perform specified functions.
  • the processor 210 may be a general purpose microprocessor, a microcontroller, or a special-purpose processor such as a digital signal processor.
  • the program code 220 stores the program, code, functions, subroutines, subprograms, or code segments executed by the processor 210 to perform all or part of the techniques in the present invention.
  • the program code 220 may be implemented by read only memory (ROM) , programmble ROM, flash memory, or any other non-volatile memory.
  • the processor 210 performs decompression and/or decryption using several well known algorithms.
  • the encoded digital content 80 includes the data received or downloaded from the communication network in the compressed or encrypted form.
  • the encoded digital content 80 may also represent data encoded in any other method.
  • the encoded digital content 80 is implemented by random access memory (RAM) or any other convenient form of storage accessible to the processor 210.
  • the offset table 82 includes a table of offsets or pointers that maps between offsets in the uncompressed logical address space and the encoded address space.
  • the offset table 82 is downloaded or transmitted to the electronic book together with the encoded digital content 80.
  • the offset table 82 is stored in a RAM accessible to the processor 210.
  • the decoded digital content 250 includes the data decoded from the encoded digital content 80 using the offsets or pointers from the offset table 82.
  • the decoded digital content 250 may represent the decompressed and/or decrypted data corresponding to the compressed and/or encrypted data in the encoded digital content 80.
  • the decoded digital content 250 may be implemented in RAM or any other convenient form of storage accessible to the processor 210.
  • the decoded digital content 250 does not correspond to the entire digital content, but rather only a portion of the digital content that the user wants to retrieve. For example, the user may wish to view a particular page of the book whose digital content is encoded and stored in the electronic book.
  • Figure 3 is a diagram illustrating a logical mapping 300 between the compressed and decompressed data according to one embodiment of the invention.
  • the logical mapping 300 shows an address mapping of an encoded logical address space 310 and a decoded logical address space 320.
  • the encoded logical address space 310 includes five encoded blocks having the byte/bit offsets at addresses 0/0, 10352/3, 21768/5, 32113/1, and 39007/2. Each of these encoded blocks corresponds to a decoded block of known size. In this example, the size of each decoded block is 16KB (or 16384 bytes) .
  • the decoded logical address space 320 includes five decoded blocks having the offsets at addresses 0, 16384, 32768, 49152, and 65536, corresponding to the encoded byte/bit offsets 0/0, 10352/3, 21768/5, 32113/1, and 39007/2, respectively.
  • the byte offset of the block at address location 32768 in the unencoded address space corresponds to the byte offset of 21768 and the bit offset of 5 in the encoded address space.
  • a user wants to access a page of information at address location 50000 in the unencoded address space 320.
  • the closest boundary of the block in the unencoded address space 320 that contains the address location 50000 is 49152.
  • This is the fourth block in the address space. Therefore, the corresponding byte/bit offset in the encoded address space is the fourth item in the offset table. This corresponds to the byte/bit offset of 32113/1.
  • the block containing the encoded data having the byte/bit offset of 32113/1 is then decoded to provide the decoded block at address location 49152 in the unencoded address space. From this decoded block, the unnecessary decoded portion will be discarded. In this example, this unnecessary portion includes the 848 bytes between the address location 49152 to the address location 50000, which is above the desired page. Similarly, the unnecessary portion may also include the portion in the unencoded block below the desired page.
  • Figure 4 is a flowchart illustrating a process 400 for decompressing according to one embodiment of the invention.
  • the process 400 determines if the offset is different from the current logical position
  • Block 410 If no, the process 400 goes to block 455. If the offset is different from the current logical position, the process 400 finds the highest reset point before the requested offset (Block 415) . Then the process 400 sets the position to the absolute byte/bit position as obtained from the offset table (Block 420). The process 400 then resets the decompression dictionary
  • the process 400 reads the requested data for decompression from the current position (Block 430) . After reading the data, the process 400 performs decompression (Block 435) . Unnecessary data are then discarded (Block 4400 and the position is updated (Block 445) . Then the process 400 determines if the current position is less than the offset (Block 450) . If yes, the process 400 goes back to block 430.
  • the process 400 goes to block 455 to read the data needed for the compression at the current position. Then the process 400 decompresses the data (Block 460) and resets the compression dictionary when causing the block offsets (Block 465) and updates the current position (Block 470) . Then the process 400 determines if the remaining size is greater or equal to zero 9Block 475) . If no, the process 400 is terminated. If the remaining size is greater than or equal to zero, the process 400 returns to block 455.
  • Figure 5A is a flowchart illustrating a first part of a process 500 for decrypting according to one embodiment of the invention.
  • the process 500 determines if the stream of data is decrypted (Block 510) . If not, the process 500 is terminated. If the data are decrypted, the process 500 determines if the offset is different than the even multiple of the encryption block size (Block 515). If not, the process 500 goes to block 540. Otherwise, the process 500 reads an encryption block at the previous encryption block size multiple (Block 520) . The process 500 then decrypts the block (Block 525) . Then the process 500 copies the requested decrypted data to the result buffer. The process 500 next updates the remaining size and the position (Block 535) and sets the position to the offset (Block 540) . The process 500 then proceeds to connector A.
  • Figure 5B is a flowchart illustrating a second part of a process for decrypting according to one embodiment of the invention.
  • the process 500 determines if the remaining size is greater or equal to the encryption block size (Block 545) . If yes, the process 500 reads N blocks of data from the current position (Block 550) . The process 500 then decrypts the read N blocks (Block 555) and updates the remaining size (Block 560) . The process 500 then goes back to block 545.
  • the process 500 determines if the remaining size is greater than zero (Block 565) . If not, the process 500 is terminated. If the remaining size is greater than zero, the process 500 reads one block of data at the current position (Block 570) . The process 500 then decrypts- the read block (Block 575) , copies the requested decrypted data to the result buffer (Block 580) , and updates the current position (Block 585) . The process 500 is then terminated.
  • the present invention provides an efficient technique to decode digital content in a receiving device.
  • the technique uses an offset table to point to blocks of unencoded information.
  • the technique reduces on-board storage space and allows random access to the stored information.

Abstract

The present invention is a method and apparatus for storing and decoding a digital content in a storage device. The digital content is encoded based on a predetermined block size to generate an encoded digital content. An offset table is created to contain encoded offsets pointing to the digital content at predetermined block offsets. The encoded digital content and the offset table are stored in the storage device. A page of information in an encoded content is decoded. The encoded content is encoded from an original content. An original offset of an original block in the original content is obtained. The original block contains the page of information. An encoded offset which corresponds to the original offset is obtained. The encoded offset corresponds to an encoded block in the encoded content. The encoded block is decoded to generate a decoded block which corresponds to the original block.

Description

ON-DEMAND DECOMPRESSION AND DECRYPTION WITH RANDOM ACCESS TO INFORMATION
BACKGROUND
1. Field of the Invention
This invention relates to decompression and decryption. In particular, the invention relates to on- demand data decompression and decryption.
2. Description of Related Art
Thanks to advances in computer and communication technologies, on-line information retrieval has become popular. A device connected to a communication network such as the Internet can download a large amount of data from a server. Two fundamental requirements for network transmission for information retrieval are transmission efficiency and information security. Transmission efficiency refers to the speed of transmitting the data over the network. Information security refers to the confidentiality and integrity of the transmitted data.
Transmission efficiency can be achieved by compressing the data to reduce the amount of transmitted data. After receiving the compressed data, the receiving device can decompress the data to recover the original information. Information security can be achieved by using encryption/decryption techniques. Before transmission, the data, whether in compressed or uncompressed form, is encrypted with a secret key. When the receiving device receives the encrypted data, the receiving device decrypts the encrypted data to recover the original information. A transmission of information using both compression/decompression and encryption/decryption techniques can achieve both transmission efficiency and information security.
When the receiving device requests and downloads a large amount of compressed and/or encrypted data over the network, the time to decompress and/or decrypt may be high. This processing time may cause inconvenience to the user of the receiving device. The problem is even more significant when the user does not need to decompress and/or decrypt the entire received data for use. One particular example is the electronic book.
An electronic book is a viewing device that allows a user to download over a network electronic versions of copyrighted materials or on-line information for later viewing. The content of such materials is referred to as a digital content. When a user of an electronic book downloads the digital content of a book, he or she usually downloads the entire materials into his or her electronic book for later reading or retrieval . The user usually does not need to read the entire digital content at one time. Rather, the user prefers to have the flexibility of accessing the digital contents randomly, at any place in the digital content. If the amount of downloaded data is large, the user may have to wait for some time for decompression and/or decryption. In addition, the amount of on-board storage may be required to be excessively large in order to be able to hold the entire content of the book.
When viewing such digital content the user experience is optimally like that of reading a book, i.e., the user can select what "pages" to view and may "jump" from one page/section to another with ease. In order to achieve this experience, the content should be randomly accessible by the viewer software. The combination of compact storage (compression) , a secure encoding (encryption) and random access to the data presents serious implementation and performance problems .
Almost all competent lossless (compression followed by decompression will yield exactly the original data) compression algorithms (e.g. Z77, LZ78, LZSS, V.42bis) employ some sort of dictionary technique to achieve a compact data representation. The dictionary is usually built by analysis of previous data, thus allowing for more compact storage of subsequent data. A byte (8- bits) , or a sequence of bytes, is then encoded into a smaller number of bits than contained in the original data. Because these compression dictionaries are built on-the-fly (during compression and decompression) accessing byte "N" of a data stream involves starting at the first byte and reading forward "N" bytes (and building the compression dictionary) . From a performance perspective, it is not viable (when working with a large digital document) to read (and decompress) from the start of the document to access data near the end of the document .
Therefore there is a need in the technology to provide an efficient method to decompress and/or decrypt data in a random manner without requiring long processing time.
SUMMARY
The present invention is a method and apparatus for storing and decoding a digital content in a storage device. The digital content is encoded based on a predetermined block size to generate an encoded digital content. An offset table is created to contain encoded offsets pointing to the digital content at predetermined block offsets. The encoded digital content and the offset table are stored in the storage device.
A page of information in an encoded content is decoded. The encoded content is encoded from an original content. An original offset of an original block in the original content is obtained. The original block contains the page of information. An encoded offset which corresponds to the original offset is obtained. The encoded offset corresponds to an encoded block in the encoded content. The encoded block is decoded to generate a decoded block which corresponds to the original block.
BRIEF DESCRIPTION OF THE DRAWINGS
The features and advantages of the present invention will become apparent from the following detailed description of the present invention in which:
Figure 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced.
Figure 2 is a diagram illustrating an electronic book according to one embodiment of the invention.
Figure 3 is a diagram illustrating a logical mapping between the compressed and decompressed data according to one embodiment of the invention.
Figure 4 is a flowchart illustrating a process for decompressing according to one embodiment of the invention.
Figure 5A is a flowchart illustrating a first part of a process for decrypting according to one embodiment of the invention. Figure 5B is a flowchart illustrating a second part of a process for decrypting according to one embodiment of the invention.
DESCRIPTION
The present invention is a method and apparatus for decoding a digital content on demand and with random access. The technique stores the encoded data in the receiving device together with an offset table that contains pointers to starting of blocks of encoded data. When requested by the user, the encoded data are decoded using the offset table to locate the blocks that contain the requested data. The technique saves storage space in the receiving device and allows the user to randomly access the stored information.
In the following description, for purposes of explanation, numerous details are set forth in order to provide a thorough understanding of the present invention. However, it will be apparent to one skilled in the art that these specific details are not required in order to practice the present invention. In other instances, well-known electrical structures and circuits are shown in block diagram form in order not to obscure the present invention. The encoding process may include any encoding technique. Examples of the encoding process include compression and encryption. The decoding process may include any decoding technique corresponding to the encoding technique. Examples of the decoding technique include decompression and decryption.
Figure 1 is a diagram illustrating a system in which one embodiment of the invention can be practiced. Referring to Figure 1, the system 100 comprises: (a) at least one portable electronic book 10 operative to request a digital content from a catalog of distinct digital contents, to receive and display the requested digital content in readable form; (b) an information services system 20 which includes an authentication server 32 for authenticating the identity of the requesting portable electronic book 10 and a copyright protection server 22 for rendering the requested digital content sent to the requesting portable electronic book 10 readable only by the requesting portable electronic book 10; (c) at least one primary virtual bookstore 40 in electrical communication with the information services system 20, the primary virtual bookstore being a computer-based storefront accessible by the portable electronic book and including the catalog of distinct digital contents; and (d) a repository 50, in electrical communication with the primary virtual bookstore 40, for storing the distinct digital contents listed in the catalog.
The system 100 preferably includes more than one portable electronic book 10, to be commercially viable. This is illustrated in Figure 1 by including the portable electronic books 12 and 14. The system also preferably includes more than one primary virtual bookstore 40, each serving a different set of customers, each customer owning a portable electronic book.
In one embodiment of the invention, the system 100 further comprises a secondary virtual bookstore 60 in electrical communication with the information services system 20. In this case, the information services system 20 also includes a directory of virtual bookstores 26 in order to provide the portable electronic book 10 with access to the secondary virtual bookstore 60 and its catalog of digital contents.
The information services system 20 can optionally include a notice board server 28 for sending messages from one of the virtual bookstores, primary or secondary, to a portable electronic book in the system.
The information services system 20 also includes a registration server 24 for keeping track of the portable electronic books that are considered active accounts in the system and for ensuring that each portable electronic book is associated with a primary virtual bookstore in the system. In the case where the optional notice board server 28 is included in the information services system 20, the registration server 24 also allows each portable electronic book user to define his/her own notice board and document delivery address.
The information services system 20 preferably comprises a centralized bookshelf 30 associated with each portable electronic book 10 in the system. Each centralized bookshelf 30 contains all digital contents requested and owned by the associated portable electronic book 10. Each portable electronic book 10 user can permanently delete any of the owned digital contents from the associated centralized bookshelf 30. Since the centralized bookshelf 30 contains all the digital contents owned by the associated portable electronic book 10, these digital contents may have originated from different virtual bookstores. The centralized bookshelf 30 is a storage extension for the portable electronic book 10. Such storage extension is needed since the portable electronic book 10 has limited non-volatile memory capacity. The user of the portable electronic book 10 can add marks, such as bookmarks, inking, highlighting and underlining, and annotations on a digital content displayed on the screen of the portable electronic book, then stores this marked digital content in the nonvolatile memory of the electronic book 10. The user can also upload this marked digital content to the information services system 20 to store it in the centralized bookshelf 30 associated with the portable electronic book 10, for later retrieval. It is noted that there is no need to upload any unmarked digital content, since it was already stored in the centralized bookshelf 30 at the time it was first requested by the portable electronic book 10.
The information services system 20 further includes an Internet Services Provider (ISP) 34 for providing Internet network access to each portable electronic book in the system.
Figure 1 further illustrates that the electronic books 10, 12, and 14 are used in the field. The electronic book 10 has on-board storage devices to store encoded digital content 80 and an offset table 82. As is known by one skilled in the art, the technique in the present invention can be used in any other receiving device.
Figure 2 is a diagram illustrating an electronic book 10 according to one embodiment of the invention. The electronic book 10 includes a processor 210, a program code 220, the encoded digital content 80, an offset table 82, and a decoded digital content 250.
The processor 210 is any processor that can execute programs to perform specified functions. The processor 210 may be a general purpose microprocessor, a microcontroller, or a special-purpose processor such as a digital signal processor. The program code 220 stores the program, code, functions, subroutines, subprograms, or code segments executed by the processor 210 to perform all or part of the techniques in the present invention. The program code 220 may be implemented by read only memory (ROM) , programmble ROM, flash memory, or any other non-volatile memory. The processor 210 performs decompression and/or decryption using several well known algorithms.
The encoded digital content 80 includes the data received or downloaded from the communication network in the compressed or encrypted form. The encoded digital content 80 may also represent data encoded in any other method. The encoded digital content 80 is implemented by random access memory (RAM) or any other convenient form of storage accessible to the processor 210.
The offset table 82 includes a table of offsets or pointers that maps between offsets in the uncompressed logical address space and the encoded address space. The offset table 82 is downloaded or transmitted to the electronic book together with the encoded digital content 80. The offset table 82 is stored in a RAM accessible to the processor 210.
The decoded digital content 250 includes the data decoded from the encoded digital content 80 using the offsets or pointers from the offset table 82. The decoded digital content 250 may represent the decompressed and/or decrypted data corresponding to the compressed and/or encrypted data in the encoded digital content 80. The decoded digital content 250 may be implemented in RAM or any other convenient form of storage accessible to the processor 210. In one embodiment, the decoded digital content 250 does not correspond to the entire digital content, but rather only a portion of the digital content that the user wants to retrieve. For example, the user may wish to view a particular page of the book whose digital content is encoded and stored in the electronic book.
Figure 3 is a diagram illustrating a logical mapping 300 between the compressed and decompressed data according to one embodiment of the invention. The logical mapping 300 shows an address mapping of an encoded logical address space 310 and a decoded logical address space 320.
In the example illustrated in Figure 3, the encoded logical address space 310 includes five encoded blocks having the byte/bit offsets at addresses 0/0, 10352/3, 21768/5, 32113/1, and 39007/2. Each of these encoded blocks corresponds to a decoded block of known size. In this example, the size of each decoded block is 16KB (or 16384 bytes) . The decoded logical address space 320 includes five decoded blocks having the offsets at addresses 0, 16384, 32768, 49152, and 65536, corresponding to the encoded byte/bit offsets 0/0, 10352/3, 21768/5, 32113/1, and 39007/2, respectively. For example the byte offset of the block at address location 32768 in the unencoded address space corresponds to the byte offset of 21768 and the bit offset of 5 in the encoded address space.
Suppose a user wants to access a page of information at address location 50000 in the unencoded address space 320. The closest boundary of the block in the unencoded address space 320 that contains the address location 50000 is 49152. This is the fourth block in the address space. Therefore, the corresponding byte/bit offset in the encoded address space is the fourth item in the offset table. This corresponds to the byte/bit offset of 32113/1. The block containing the encoded data having the byte/bit offset of 32113/1 is then decoded to provide the decoded block at address location 49152 in the unencoded address space. From this decoded block, the unnecessary decoded portion will be discarded. In this example, this unnecessary portion includes the 848 bytes between the address location 49152 to the address location 50000, which is above the desired page. Similarly, the unnecessary portion may also include the portion in the unencoded block below the desired page.
Figure 4 is a flowchart illustrating a process 400 for decompressing according to one embodiment of the invention.
Upon START, the process 400 determines if the offset is different from the current logical position
(Block 410). If no, the process 400 goes to block 455. If the offset is different from the current logical position, the process 400 finds the highest reset point before the requested offset (Block 415) . Then the process 400 sets the position to the absolute byte/bit position as obtained from the offset table (Block 420). The process 400 then resets the decompression dictionary
(Block 425) . The process 400 reads the requested data for decompression from the current position (Block 430) . After reading the data, the process 400 performs decompression (Block 435) . Unnecessary data are then discarded (Block 4400 and the position is updated (Block 445) . Then the process 400 determines if the current position is less than the offset (Block 450) . If yes, the process 400 goes back to block 430.
If the current position is not less than the offset, the process 400 goes to block 455 to read the data needed for the compression at the current position. Then the process 400 decompresses the data (Block 460) and resets the compression dictionary when causing the block offsets (Block 465) and updates the current position (Block 470) . Then the process 400 determines if the remaining size is greater or equal to zero 9Block 475) . If no, the process 400 is terminated. If the remaining size is greater than or equal to zero, the process 400 returns to block 455.
Figure 5A is a flowchart illustrating a first part of a process 500 for decrypting according to one embodiment of the invention.
Upon START, the process 500 determines if the stream of data is decrypted (Block 510) . If not, the process 500 is terminated. If the data are decrypted, the process 500 determines if the offset is different than the even multiple of the encryption block size (Block 515). If not, the process 500 goes to block 540. Otherwise, the process 500 reads an encryption block at the previous encryption block size multiple (Block 520) . The process 500 then decrypts the block (Block 525) . Then the process 500 copies the requested decrypted data to the result buffer. The process 500 next updates the remaining size and the position (Block 535) and sets the position to the offset (Block 540) . The process 500 then proceeds to connector A.
Figure 5B is a flowchart illustrating a second part of a process for decrypting according to one embodiment of the invention.
From the connector A, the process 500 determines if the remaining size is greater or equal to the encryption block size (Block 545) . If yes, the process 500 reads N blocks of data from the current position (Block 550) . The process 500 then decrypts the read N blocks (Block 555) and updates the remaining size (Block 560) . The process 500 then goes back to block 545.
If the remaining size is not greater or equal to the encryption block size, the process 500 determines if the remaining size is greater than zero (Block 565) . If not, the process 500 is terminated. If the remaining size is greater than zero, the process 500 reads one block of data at the current position (Block 570) . The process 500 then decrypts- the read block (Block 575) , copies the requested decrypted data to the result buffer (Block 580) , and updates the current position (Block 585) . The process 500 is then terminated.
The present invention provides an efficient technique to decode digital content in a receiving device. The technique uses an offset table to point to blocks of unencoded information. The technique reduces on-board storage space and allows random access to the stored information.
While this invention has been described with reference to illustrative embodiments, this description is not intended to be construed in a limiting sense. Various modifications of the illustrative embodiments, as well as other embodiments of the invention, which are apparent to persons skilled in the art to which the invention pertains are deemed to lie within the spirit and scope of the invention.

Claims

CLAIMSWhat is claimed is:
1. A method for storing a digital content in a storage device, the method comprising:
(a) encoding the digital content based on a predetermined block size to generate an encoded digital content ;
(b) creating an offset table, the offset table containing mapping between predetermined block offsets in the decoded digital content encoded offsets pointing to the digital content at predetermined block offsets; and
(c) storing the encoded digital content and the offset table in the storage device.
2. The method of claim 1 wherein encoding includes compressing and encrypting.
3. The method of claim 1 wherein the digital content is transmitted over a communication network.
4. The method of claim 1 wherein the storage device is used in a viewing device.
5. The method of claim 4 wherein the viewing device is an electronic book.
6. A method of decoding a page of information in an encoded content, the encoded content being encoded from an original content, the method comprising: (a) obtaining an original offset of an original block in the original content, the original block containing the page of information;
(b) obtaining an encoded offset which corresponds to the original offset, the encoded offset corresponding to an encoded block in the encoded content; and
(c) decoding the encoded block to generate a decoded block, the decoded block corresponding to the original block.
7. The method of claim 6 further comprising:
(d) discarding a portion of the decoded block that does not correspond to the page of information.
8. The method of claim 7 further comprising: resetting a decoding dictionary at predetermined block offsets that is used in decoding.
. The method of claim 6 wherein decoding includes decompressing and decrypting.
10. An apparatus storing a digital content, the apparatus comprising:
(a) an encoded memory for storing an encoded digital content, the encoded digital content being encoded based on a predetermined block size; and
(b) an offset memory coupled to the encoded memory for storing an offset table, the offset table containing mapping between predetermined block offsets in the decoded digital content encoded offsets pointing to the digital content at predetermined block offsets.
11. The apparatus of claim 10 wherein the encoded digital content is one of a compressed content and an encrypted content.
12. The apparatus of claim 10 wherein the digital content is transmitted over a communication network.
13. The apparatus of claim 10 wherein the encoded and offset tables are used in a viewing device.
14. The apparatus of claim 10 wherein the viewing device is an electronic book.
15. The apparatus of claim 10 further comprising: a processor coupled to the encoded and offset memories for decoding a page of information in the digital content; and a decoded memory coupled to the processor for storing the decoded page of information.
16. The apparatus of claim 15 wherein the processor: obtains an original offset of an original block in the digital content, the original block containing the page of information; obtains an encoded offset which corresponds to the original offset, the encoded offset corresponding to an encoded block in the encoded content; and decodes the encoded block to generate a decoded block, the decoded block corresponding to the original block.
17. The method of claim 16 wherein the processor discards a portion of the decoded block that does not correspond to the page of information.
18. The apparatus of claim 17 wherein the processor resets a decoding dictionary during the processor decodes the page of information.
19. The apparatus of claim 15 wherein the decoded page is one of a decompressed page and a decrypted page.
PCT/US1999/023713 1998-10-16 1999-10-08 On-demand decompression and decryption with random access to information WO2000023914A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
AU13130/00A AU1313000A (en) 1998-10-16 1999-10-08 On-demand decompression and decryption with random access to information

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17408498A 1998-10-16 1998-10-16
US09/174,084 1998-10-16

Publications (1)

Publication Number Publication Date
WO2000023914A1 true WO2000023914A1 (en) 2000-04-27

Family

ID=22634762

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US1999/023713 WO2000023914A1 (en) 1998-10-16 1999-10-08 On-demand decompression and decryption with random access to information

Country Status (2)

Country Link
AU (1) AU1313000A (en)
WO (1) WO2000023914A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10334650B2 (en) 2014-01-29 2019-06-25 Yodel Code LLC Automatic peer selection in a field of common peers

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305295A (en) * 1992-06-29 1994-04-19 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
EP0810552A2 (en) * 1996-05-28 1997-12-03 Sharp Kabushiki Kaisha Image display device
US5737599A (en) * 1995-09-25 1998-04-07 Rowe; Edward R. Method and apparatus for downloading multi-page electronic documents with hint information

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5305295A (en) * 1992-06-29 1994-04-19 Apple Computer, Inc. Efficient method and apparatus for access and storage of compressed data
US5737599A (en) * 1995-09-25 1998-04-07 Rowe; Edward R. Method and apparatus for downloading multi-page electronic documents with hint information
EP0810552A2 (en) * 1996-05-28 1997-12-03 Sharp Kabushiki Kaisha Image display device

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10334650B2 (en) 2014-01-29 2019-06-25 Yodel Code LLC Automatic peer selection in a field of common peers

Also Published As

Publication number Publication date
AU1313000A (en) 2000-05-08

Similar Documents

Publication Publication Date Title
Deutsch GZIP file format specification version 4.3
US5892825A (en) Method of secure server control of local media via a trigger through a network for instant local access of encrypted data on local media
US9319489B2 (en) Nearstore compression of data in a storage system
US5937164A (en) Method and apparatus of secure server control of local media via a trigger through a network for instant local access of encrypted data on local media within a platform independent networking system
US7475258B2 (en) Exclusive encryption
EP1832971B1 (en) System and method for transmitting documents over network
Deutsch Rfc1952: Gzip file format specification version 4.3
US8300823B2 (en) Encryption and compression of data for storage
Korn et al. The VCDIFF generic differencing and compression data format
US20040049598A1 (en) Content distribution system
EP2056462B1 (en) Data processing system and method
US20090031424A1 (en) Incomplete data in a distributed environment
EP0862301A3 (en) An encryption communication system using an agent and a storage medium for storing that agent
US7925012B2 (en) Method and system for the secure distribution of compressed digital texts
CN1236450A (en) Method and device for viewing electronic reading materials
US20050219076A1 (en) Information management system
US8402282B2 (en) Method and device for encrypting and decrypting digital data
CN113014580A (en) File transmission method and device, electronic equipment and storage medium
US8677123B1 (en) Method for accelerating security and management operations on data segments
WO2000023914A1 (en) On-demand decompression and decryption with random access to information
JPH10187572A (en) Method for accessing information
CN114401101A (en) Data transmission method
KR100419500B1 (en) Method for transmitting and receiving software image
CN115374162A (en) Bit-based data storage and transmission control method and device and intelligent equipment
CN111600846A (en) Recovery method and recovery system of gateway equipment

Legal Events

Date Code Title Description
ENP Entry into the national phase

Ref country code: AU

Ref document number: 2000 13130

Kind code of ref document: A

Format of ref document f/p: F

AK Designated states

Kind code of ref document: A1

Designated state(s): AE AL AM AT AU AZ BA BB BG BR BY CA CH CN CR CU CZ DE DK DM EE ES FI GB GD GE GH GM HR HU ID IL IN IS JP KE KG KP KR KZ LC LK LR LS LT LU LV MA MD MG MK MN MW MX NO NZ PL PT RO RU SD SE SG SI SK SL TJ TM TR TT TZ UA UG UZ VN YU ZA

AL Designated countries for regional patents

Kind code of ref document: A1

Designated state(s): GH GM KE LS MW SD SL SZ TZ UG ZW AM AZ BY KG KZ MD RU TJ TM AT BE CH CY DE DK ES FI FR GB GR IE IT LU MC NL PT SE BF BJ CF CG CI CM GA GN GW ML MR NE SN TD TG

121 Ep: the epo has been informed by wipo that ep was designated in this application
DFPE Request for preliminary examination filed prior to expiration of 19th month from priority date (pct application filed before 20040101)
REG Reference to national code

Ref country code: DE

Ref legal event code: 8642

122 Ep: pct application non-entry in european phase