throbber
United States Patent [191
`Notarianni
`
`111111111111111111111111111111111111111111111111111111111111111111111111111
`US005404511A
`[tt] Patent Number:
`[45) Date of Patent:
`
`5,404,511
`Apr. 4, 1995
`
`[75]
`
`[54) COMPACT DISC PLAYER WITH
`FRAGMENT MEMORY MANAGEMENT
`Inventor: Benedetto A. Notarianni, Reigate,
`England
`[73) Assignee: U.S. Philips Corporation, New York,
`N.Y.
`[21] Appl. No.: 904,771
`Jun. 26, 1992
`[22] Filed:
`Int. C1.6 .............................................. G06F 15/20
`[51)
`[52] u.s. Cl •...................................... 395/600; 369/32;
`369/47
`[58] Field of Search ............... 395/425, 600, 325, 164;
`369/32,47,33,30,25,14
`References Cited
`U.S. PATENT DOCUMENTS
`4,912,629 3/1990 Shuler ................................. 395/600
`5,109,336 4/1992 Guenther ............................ 395/425
`5,148,527 9/1992 Basso ................................... 395/425
`
`[56]
`
`OTHER PUBLICATIONS
`Wilson, "Uniprocessor Garbage Collection Tech(cid:173)
`niques", Proceedings: Memory Management. Interna(cid:173)
`tional Workshop IWMM 92, pp. 1-42 (Springer Verlag
`Sep. 23, 1992).
`Edited by Philips International & published by Kluwer
`Technical Books, ISBN 90 201-21103, entitled: "CD-I:
`A Designer's Overview", Chapter 7 1987.
`P. Dibble, "OS-9 Insights: An Advanced Programmers
`
`Guide to OS-9/68000", Chapters 3 & 4, published by
`Microwave Systems Corporation,
`ISBN 0-9180-
`35-0105 1991.
`
`Primary Examiner-Thomas G. Black
`Assistant Examiner-Jennifer M. Orzech
`Attorney, Agent, or Finn-Anne E. Barschall
`
`ABSTRACT
`[57)
`An application module of a data processing apparatus
`requires various quantities of memory space for the
`buffering of data to be processed. In particular, image
`and audio files are to be read from a CD-ROM disc and
`decoded in real-time. The operating system provides a
`· memory manager to allocate buffer space from the
`available memory. To alleviate the problem of fragmen(cid:173)
`tation, a fragmented memory manager module secures
`at the outset an allocation of buffer space sufficient for
`all requirements of the application module, and parti(cid:173)
`tions the allocation into small units of buffer space (frag(cid:173)
`ments), which are linked into a list by respective list
`pointers. Any subsequent requirement for buffer space
`is met by the fragmented memory manager, by un-link(cid:173)
`ing the requisite number of fragments from the list of
`unallocated fragments. The application module
`is
`adapted to use fragmented buffer space where possible,
`while the allocation of buffer space in contiguous blocks
`is not excluded when necessary.
`
`FRAGM
`
`CD RTOS
`MEMORY
`MANAGER
`
`- f-- 210
`
`I
`
`I
`A
`B -,--~
`FMV
`-
`
`DECODE
`
`1
`I
`J----J
`I
`
`VDA~
`WB
`ADPCM FMV
`
`APPLICATION
`MODULE
`
`PCB
`--zoz
`
`FRA6 LISTS
`
`2)2
`
`zoo- ~ RAM
`
`3 Claims, 7 Drawing Sheets
`
`CD RTOS
`
`PLAY CONTROL
`MODULE
`
`,. ~zoe
`
`zo~
`'
`COP
`
`i<
`I
`
`206'-
`=:>
`
`Page 1 of 14
`
`ZTE Exhibit 1031
`
`

`
`U.S. Patent
`
`Apr. 4, 1995
`
`Sheet 1 of 7
`
`5,404,5Jl
`
`COP
`
`LSL
`
`LSR
`
`0
`
`MPU
`
`DMA
`
`NV RAM
`
`C/C
`
`CDRTDS
`
`YOU
`
`0
`
`VRGB
`
`RAM
`
`INP
`
`KB
`
`(PRIOR ART)
`FIG.1
`
`Page 2 of 14
`
`

`
`U.S. Patent
`
`Apr. 4, 1995
`
`Sheet 2 of 7
`
`5,404,511
`
`APPLI CAliON
`MODULE
`
`PCB
`
`•t- 202
`
`CD RTOS
`
`PLAY CONTROL
`MODULE
`
`.. ~zoe
`
`zoo- -RAM
`
`I
`;
`A B ,,.--=.1
`
`FRA6 LISTS
`
`2)2
`
`FRAGM
`
`FMV
`
`CD RTOS
`MEMORY
`MANAGER
`
`- f- 210
`
`(PRIOR ART)
`304
`
`~
`
`zo~
`COP
`
`DECODE
`
`206'-
`'
`1
`-v
`I
`VDA/
`I
`J----J
`WB
`ADPCM FMV
`
`· Fl G. Z
`
`302
`
`AUD.2
`
`~
`
`RAM
`
`Fl6.3
`
`Page 3 of 14
`
`

`
`U.S. Patent
`
`Apr. 4, 1995
`
`Sheet 3 of 7
`
`5,404,511
`
`_0
`
`300
`
`FRAILPREVP
`BUFFER
`2324 BYTES
`-
`
`-
`
`.,
`-~
`
`PCL+
`
`r'FRAG
`fPCL+
`
`.;
`
`/ / / /
`I
`r--
`,I
`[/
`
`I
`
`I
`
`I
`
`l t II llf f IIi~
` BUFFER, ,....,..._.
`I
`I
`I ,
`I
`
`/ v
`
`I
`
`PCL_CTRL
`PCl-SMODE
`PCL_TVPE
`. PCL_SIG
`PCL_NXT
`PCL_BUF
`PCL_BUFSZ
`PCL_ERROR
`PCL_CNT
`FRAG_PREV -
`
`I I I I
`-
`r-..
`t-- I I
`I
`I/
`
`.
`
`I
`
`I
`
`FIG.4
`
`FRAGM 212
`
`FR~E-A
`
`FRAG_INIT
`
`FRAG_GRAB
`
`FRAG-FREE
`
`FIG.5
`
`Page 4 of 14
`
`

`
`U.S. Patent
`
`Apr. 4, 1995
`
`Sheet 4 of 7
`
`5,404,511
`
`700
`
`APPLICATION MODULE
`
`702
`

`

`
`706
`
`FRAG_GRAB
`
`(NSECT)
`
`708
`
`DEFINE PCB, CIL
`
`710
`
`-PLAY (FILE, PCB)
`
`712
`
`FRAG_ FREE
`
`-©
`-®
`
`(IMZ)
`
`714
`
`FRAG _ SHUTDOWN
`
`716
`
`FIG.6
`
`Page 5 of 14
`
`

`
`U.S. Patent
`
`Apr. 4, 1995
`
`Sheet 5 of 7
`
`5,404,511
`
`800
`
`804
`
`806
`
`860
`
`862
`
`864
`
`RELEASE
`ALLOC.
`
`840
`
`842
`
`844
`
`846
`
`848
`
`850
`
`FIG.7
`
`Page 6 of 14
`
`

`
`300./":\
`
`-
`
`1,:::;.
`
`I
`
`-
`
`r
`II
`
`"~ -
`I
`
`I
`
`f:.
`
`-
`
`r
`II
`
`-
`
`r
`I I
`
`-
`
`r
`I I
`
`-
`
`r
`I I
`
`-
`
`-
`r
`._,
`~ r
`r
`if i l l t l
`
`PCL_NXT
`0
`FRAG-PREV
`
`i
`
`Cll UM2)
`r
`.
`..,_,
`I AUt3
`IIM2.1
`..,
`
`~·u· j
`
`~
`
`,-_'()'
`IIM2.2
`
`,
`\{
`IIM23I
`
`F3
`
`,,.·a l
`ro·
`r
`I'
`I
`IM2.4 I IM2.5 II F4
`
`I
`

`

`
`. ··--
`I Fl
`fAU1.2
`·o·~
`
`''
`

`
`I F6
`
`r,
`I AU1.2
`\
`
`1)-
`
`'
`AU1.1 I F2
`'
`CLI(AUl)
`.
`
`AUl.l
`
`F7
`"'
`·o·
`
`FREE
`·'
`,,
`
`Fl
`
`·o·
`
`rr·n·
`' r
`I AU1.3 I F2
`
`,,
`
`"'-·
`••
`
`FJ
`
`. I'
`IFB
`
`F4
`
`I FS
`I
`
`'0'
`II
`I
`
`F9
`
`.
`'
`
`...;
`
`FIG.8
`
`~ •
`rJ'1 •
`
`""d i
`
`t
`
`,_.,J;;I.
`
`1-l
`
`~
`
`r ~
`
`0\
`
`s,
`......:.
`
`...
`Ul
`~ = ~ ...
`....
`....
`
`Ul
`
`Page 7 of 14
`
`

`
`300
`2 -
`
`.
`
`'
`
`• •
`

`
`PCL NXT
`
`900
`FREE~
`
`FRAG_PREV
`
`'0'
`
`®- WAI Fer FZ u Fl u F4 u F5 n F6 0 F7 0 FB tl@djf@l F9tf
`rr - 'l
`f.-
`'
`PCL-NEXT
`® ~I
`BUFFER I ~~~~ II
`- - - - - - - - - PCL-BUFF
`FRAG-PREV
`PCLBUFSZ=6
`FRAG_PREV•'O'
`
`FIG.9
`
`~ • 00. •
`"'C a a
`~
`
`.. ~
`'"""' ~ (II
`
`00 =-
`m.
`-...l
`a,
`-...l
`
`(I)
`
`...
`~ .a;:..
`...
`
`(I)
`~
`~
`
`Page 8 of 14
`
`

`
`1
`
`5,404,511
`
`COMPACI' DISC PLAYER WITH FRAGMENT
`MEMORY MANAGEMENT
`
`2
`taining by means of said list pointers a linked list of
`unallocated fragments (the "free list");
`(b) in response to each subsequent request for alloca(cid:173)
`tion of a quantity buffer space, un-linking from the free
`The invention relates to dynamic allocation of buffer 5 list a list (the "allocated list") of fragments sufficient in
`number to contain the requested quantity of buffer
`space in the memory of a data processing apparatus.
`The invention has particular utility in so-called interac-
`space; and
`(c) in response to a subsequent request for release of
`tive systems, where audio, video and other data items
`are to be decoded and presented to a user in real-time.
`the allocated list of fragments re-linking the allocated
`In many data processing apparatuses, data is read 10 list of buffer fragments into the free list.
`By managing the memory from the outset as a set of
`from a database stored in some form of mass memory
`(for example a magnetic disc or Compact Disc read-
`many small fragments, any small fragment can be uti-
`only memory (CD-ROM) and transferred to local mem-
`lised to contribute to any allocation of buffer space,
`ory (RAM) for processing. Local memory is limited,
`large or small (minimum size: one fragment). Of course
`however, and it is generally unpredictable what items of 15 the allocated buffer may be the sum of many fragments
`data need to be loaded at any given time, and what is the
`dispersed randomly throughout the physical memory
`size of each. Therefore it is necessary to provide some
`space. This need not be a problem, however, because
`memory management function, which keeps track of
`the list pointers can be used by the apparatus in access-
`the available memory and allocates buffer space in re-
`ing the allocated buffer space. It will be appreciated that
`20 fragmentation no longer prevents allocation of a re-
`sponse to requests from application processes.
`quested quantity of buffer space.
`The Compact Disc-Interactive (CD-I) player, avail-
`able from Philips, is an example of a data processing
`In the CD-I apparatus, the CDRTOS play control
`apparatus in which memory management functions are
`function is already capable of using fragmented memory
`as buffer space by means of its play control structure.
`provided by a real-time operating system CDRTOS.
`CDRTOS is based on another real-time operating sys- 25 The invention is particularly valuable in such a case.
`Accordingly, a particular embodiment of the inven-
`tern OS-9/68000. The CD-I player operates under the
`control of an application program which is loaded from
`tion provides a real-time data processing apparatus
`a CD-ROM. Through some play control functions of
`comprising:
`CDRTOS, the application program can control access
`a database access means ("reader") for receiving from
`to a large database of images, sounds and other informa- 30
`a database data for processing in real-time;
`tion stored on the CD-ROM, under the interactive con-
`real-time data processing means ("decoder") for pro-
`trol of the user.
`cessing the data received from the database;
`A description of the CD-I player is provided in
`memory means coupled between the reader and the
`"CD-I: A Designer's Overview", edited by Philips In-
`decoder for providing buffer space for storing the
`ternational and published by Kluwer Technical Books, 35
`received data prior to processing by the decoder;
`ISBN 90-201-21103. This book is incorporated herein
`an application module for generating play commands
`by reference. The problems of memory management in
`to control the reader and decoder to process data in
`such systems are described for example in Chapter 3
`a desired sequence; and
`and 4 of the book "OS-9 INSIGHTS: An Advanced
`a play control module for receiving said commands
`Programmers Guide to OS-9/68000" by Peter Dibble, 40
`and for controlling the reader and decoder in real
`time so as to receive data from the database and
`published by Microware Systems Corporation, ISBN
`0-918035-0105.
`cause processing of said data in a real-time se-
`One particular problem highlighted in the Dibble
`quence defined by said commands,
`book is that of memory fragmentation. This occurs
`wherein each play command supplied to the play con-
`when, after a period of operation during which various 45 trol module includes (i) file information defining the
`location in the database of the data to be processed and
`parts of the memory have been allocated and de-
`allocated, the available (unallocated) memory at a given
`(ii) buffer information specifying the location in the
`time is made up of small areas dispersed effectively at memory of buffer space for storing said data, wherein
`random throughout the memory space. This fragmenta-
`the buffer information comprises at least one play con-
`tion might mean, for example, that a request for the 50 trol item containing fields for indicating the location of
`allocation of 60 kilobytes of buffer space cannot be
`a fust quantity of buffer space and a list pointer to an
`optional further play control item, wherein the play
`satisfied because there is no single unallocated block
`larger than 50 kilobytes. At the same time, adding up all
`control module is responsive to said play command to
`the small fragments, there may in fact be hundreds of
`cause the data defined by the file information to be
`kilobytes of unallocated memory.
`55 received from the database and stored in said first quan-
`The invention addresses the problem of providing
`tity of buffer space and in the event that said fust quan-
`tity of buffer space becomes full to use the list pointer in
`memory management in a data processing apparatus,
`for example to reduce the problem of fragmentation
`the at least one play control item to identify a further
`play control item indicating a further quantity of buffer
`described above.
`The invention provides a method of dynamically 60 space for storage of the required data, and wherein the
`total of available buffer space in the memory is divided
`allocating and releasing variable quantities of buffer
`space in a memory of a data processing apparatus hav-
`into a plurality of fragments, each fragment containing
`ing a fmite total amount of buffer space, the method
`a relatively small predetermined quantity of available
`comprising:
`buffer space and having an associated play control item
`(a) in an initialization step (i) partitioning the total 65 with a list pointer identifying a further fragment con-
`taining available buffer space, the apparatus yet further
`unallocated buffer space into a set of small buffer frag-
`ments, maintaining for each unallocated fragment a
`comprising a fragmented memory manager module for
`respective list pointer; and (ii) constructing and main-
`maintaining by means of the play control item list point-
`
`Page 9 of 14
`
`

`
`5,404,511
`
`4
`3
`book "Compact Disc-Interactive, A Designer's Over-
`ers a list of those of said fragments whose buffer space
`view" mentioned above.
`is not currently in use by the play control module (the
`In the CD-I player, the operating system CDRTOS
`"free list") and for responding to each request for allo-
`controls the operation of the various hardware elements
`cation of buffer space by un-linking from the free list a
`list of fragments (the "allocated list") and supplying to 5 in real-time, under the control of application programs
`the application module a pointer to the allocated list for
`loaded from the disc. The processing power of micro-
`use by the play control module in identifying buffer
`processor MPU is thus shared by application software
`modules and modules of CDRTOS, but in an asynchro-
`fragments for received data.
`In the case of CD-I, each fragment may conveniently
`no us manner such that each module can be regarded as
`contain enough buffer space for one sector of data from 10 an independent functional module of the player.
`FIG. 2 illustrates the interaction of various modules
`the CD-ROM, that is 2324 bytes. The memory con-
`sumed by storing so many list pointers will be only one
`in the CD-I player when implementing the present
`percent or so of the total memory space, which is trivial
`invention. Central to these functions is the memory
`compared to the amount of memory that can be wasted
`200. This
`comprises
`one megabyte
`(RAM)
`by fragmentation in a conventional memory manage- 15 (1024 x 1024 x 8 bits) of read-write memory, divided
`ment system.
`into two planes A and B. A third plane FMV is shown
`To illustrate ~he ab_ove and £u:fuer feature~ and ~d-
`dotted, which in future CD-I players will provide stor-
`v~tages of the m':ention, embodiments of the ~vent10n
`age for full motion video data.
`will now be descnbed, _by way ~f ex~ple,. wtth refer-
`An application module 202, defined by program data
`ence to the accompanymg drawmgs, m which:
`20 read from the disc player 204 (CDP), operates with
`FIG._1 shows the h~dware s~ructure o~ the d~ta
`assistance from CDRTOS to read audio, video and
`proc~ssln:g appara~ swtable for Implementing the m-
`program data from the disc into memory, and to cause
`vention, m the parttcul~ form of a CD-I player;
`the decoders 206 to read this data for the generation of
`FIG. 2 shows the logtcal structure of the apparatus of
`.
`.


`. all
`"th th .
`ti"
`25 desrred audto and vtdeo presentatiOns. Specific y,

`tin.
`dan
`FIG 1
`f
`.
`, opera g m accor
`ce w1
`e mven on;
`d VDA


`d
`d VDB
`da
`vtdeo eco ers
`an
`rece1ve
`ta rom re-
`f
`FIG 3 ill
`th
`ta
`f
`bl
`t
`t
`an ° . e memory, w . e t e au o
`hil h
`.
`us ra es

`A dB fth
`di
`e pro em o memory ragmen -
`1
`tion as it arises in the real-time control of the CD-I
`specttve Panes
`.
`.
`decoder ADPCM can recetve data from e1ther plane.
`player wtth conventional memory management;
`A
`.
`ti
`f CDRTOS · th
`all d
`f;
`. pnm~ ~c on ~.
`e S?-c ~
`FIG. 4 illustrates the partitioning of the memory into
`IS
`small fragments in the apparatus of FIGS. 1 and 2, and 30 playm~ of real time f~es . Such til~ can contain audto
`data, ~d~ data or ~ mterleaved miXture of the two, as
`shows the structure of one representative fragment;
`descnbed m the Philips/Kluwer tex~boo~. A pl~y co~-
`FIG. 5 shows the logical structure of a fragmented
`trol module 208 of CDRTOS recetves ms~ruct10ns. m
`memory manager module in the apparatus;
`the form of a file reference an~ play co_ntrol informat~on
`FIG. 6 is a flow chart representing the operation of
`an application module of the apparatus;
`35 an proceeds to. cause the reading, stonng and decoding
`of ~e ~ata wtthout further effort on the part of the
`FIG. 7 comprises four flow charts representing the
`operation of elements of the fragmented memory man-
`application module 202. A memory manager module
`ager of FIG. 6;
`210 of CDRTOS allows the _applicati_on module 202 to
`FIG. 8 illustrates the allocation of memory fragments
`reserve blocks of memory m a desrred plane of the
`at points (A), (B), (C) and (D) in the flow chart of FIG. 40 ~emory 2~0, which can _be used as buff~rs storing the
`7· and
`vtdeo/audto data for a gtven play operatiOn.
`~e elements of FICJ:. 2 as described so far are co~-
`'FIG. 9 illustrates the allocation of contiguous blocks
`of memory within the fragmented memory of the appa-
`ventional. In a conventional arrangement, as the appli-
`cation module progresses in its operation, controlled by
`ratus.
`FIG. 1 is a block schematic diagram of the Compact 45 interaction with the user of the CD-I player, the prob-
`.
`.
`Disc-Interactive (CD-I) player. It comprises a compact
`lem of "~emory fragmentation" arises.
`disc player CDP to which is connected a compact disc
`FIG. 3 illustrates the problem of fragmentatiOn m the
`digital audio controller decoder CDDA and a compact
`playing of real-time files in a CD-I player, according to
`disc control unit CDCU. The CDDA is connected to an
`conventional practice. Sections of one plane of RAM
`audio processing unit APU which feeds two loudspeak- 50 are shown, with an arrow 300 indicating the direction of
`ers LSL and LSR. The CD control unit CDCU is con-
`increasing memory address. Parts of the address space
`nected to a system bus SB along which various digital
`which are free (not allocated by CDRTOS memory
`signals are passed. Also connected to the system bus SB
`manager) are indicated by cross-hatching (302 etc.).
`are a microprocessor unit MPU, a DMA controller
`Parts presently allocated for unspecified purposes are
`DMA, a non-volatile random access memory NVRAM, 55 shown by simple hatching (304). Other blocks contain-
`a clock calendar unit C/C, a read-only memory contain-
`ing buffer spaces IM.1, IM.2, IM.3, AUD.1 and AUD.2
`ing the real-time operating system CD RTOS, a key-
`have been allocated as buffer areas for the purpose of
`board KB, a pointing device INP, and an access con-
`storing video and audio data read from the disc.
`troller AC. The access controller controls the reading
`A play control structure is also constructed in mem-
`from and writing to a random access memory RAM 60 ory by the application module 202. This comprises a
`Play Control Block (PCB), a Channel Index List (CIL)
`which is split into two banks A and B. The access con-
`treller is also connected to a video decoder VD which
`for video, a CIL for audio and a set of Play Control List
`in turn feeds a video generator VRGB, the output of
`items (PCLs). The application module 202 supplies the
`play control module 208 of CDRTOS with one or more
`which is connected to a video display unit VDU. Also
`connected to the system bus SB is an adaptive pulse 65 file references (pointers to data locations on the disc 24),
`code modulation decoder ADPCM which feeds the
`and a pointer to the PCB. From then on the reading,
`audio processing unit APU. A description of the CD-I
`storage and d~coding of the files is automatic, barring
`base case decoder as shown in FIG. 1 is given in the
`intervention by the application module.
`
`Page 10 of 14
`
`

`
`5,404,511
`
`6
`5
`image, for example. This first PCL item in turn points
`The PCB area contains various control and status
`(by field PCL-NXT) to a second PCL item, which
`fields, including channel identifiers and pointers to the
`describes the buffer area for data IM.2, perhaps a sec-
`two CILs. By changing the channel number, the partie-
`ond image. The second PCL points to a third PCL
`ular audio and/ or video data read from the disc can be
`selected to account for the language preference of the 5 describing the buffer for data IM.3. The third PCL
`user, as described in the Philips/Kluwer textbook. For
`points back to the first PCL 308, thereby defining a
`a given channel, each CIL has a pointer to a PCL item,
`continuously repeating series of three images.
`as shown. The PCL structure in particular is relevant to
`The CIL(AUDIO) 310 points to a list of two PCLs,
`an understanding of the present embodiment, and will
`describing the buffers for data AUD.1 an AUD.2 re-
`now be described.
`10 spectively. The second of these audio PCLs contains a
`Each PCL item points to an area of memory which is
`null pointer '0' in the field PCL-NXT, indicating no
`to be used as a buffer, and contains the following fields:
`further sound data to be played. As mentioned above,
`PCL-CTRL: This field is initialized to zero by the
`the application module can halt or modify the playback
`application module before the play command is issued.
`by altering various fields in the play control structure.
`It contains status flags for use by CDRTOS, in particu- 15 Now, in the course of the interactive operation of the
`lar to note when an error occurs in reading data into the
`player under control of the application module and the
`corresponding buffer, or when the buffer is full.
`user, buffers of different sizes are allocated and released
`PCL_SMODE: This field is updated by CDRTOS
`many times. This leads to the problem of memory frag-
`with the value contained in the submode byte of the
`mentation which can be seen in the status of the mem-
`subheader of the last sector read into this PCL.
`20 ory as illustrated in FIG. 3. The unallocated areas
`PCL_TYPE: This field is set by the CDRTOS and
`(cross-hatched) are small and scattered between the
`contains the coding information byte of the subheader
`allocated blocks. This means that a request to the
`of the last sector read into the buffer of this PCL. This
`CDRTOS memory manager 200 for a new allocation of
`field can be used by the application module for refer-
`a large buffer space cannot be satisfied, even though the
`25 total amount of unallocated memory may be sufficient.
`ence only.
`PCL_SIG: This field is initialised by the application
`The memory fragmentation problem can now be
`module and contains a signal number to be returned to
`addressed by operation of a Fragmented Memory Man-
`the application module when the buffer of the PCL is
`ager module 212 (FRAGM), shown in FIG. 2.
`full or an error has been detected in the data transferred
`FRAGM 212 actually partitions the memory into uni-
`30 form and small buffers ("fragments") and maintains a
`to the buffer.
`PCL-NXT: This is a pointer to a further PCL item.
`linked listing of all unallocated fragments to allow dy-
`A linked list of PCLs can be built by the application, but
`namic allocation of any total buffer size, regardless of
`need only contain one item. The list may be circular or
`the physical addresses of the individual fragments in the
`may be terminated by the entry of a null pointer in this
`memory 200. By making the links via PCL-like struc-
`field. The list of PCL's may be manipulated by the 35 tures, in this CD-I embodiment, the fragmentation be-
`comes effectively transparent to the play control mod-
`application module at any time during the execution of
`the Play.
`ule 208 of CDRTOS.
`PCL-BUF: This is a pointer to the buffer space in
`As shown in FIG. 4, a large area of memory is di-
`which the data from the disc is to be stored. It is the
`vided into data structures "FRAG". Each FRAG com-
`responsibility of the application module to make sure 40 prises a buffer large enough for one disc data sector
`(2324 bytes), followed by an augmented PCL structure
`that this points to an allocated data area large enough to
`hold all the data requested for this PCL. If this pointer
`(PCL+ ). The various fields of the PCL structure are
`is zero, the data is not transferred into memory and
`provided, with the meanings as described above. This is
`PCL-CNT (see below) is not incremented.
`augmented however by an additional pointer field
`PCL-BUFSZ: This field specifies the size, in sectors, 45 FRAG-PREV.
`FIG. 5 shows the logical structure of the fragmented
`of the buffer pointed to by PCL-BUF. This field is
`initialized by the application, and may be changed by
`memory manager module 212 (FRAGM) which in-
`the application at any time during the execution of the
`eludes
`functions FRAG-INT, FRAG-GRAB,
`play command. A sector, as read from the disc, contains
`FRAG--FREE and FRAG_SHUTDOWN. These are
`up to 2324 bytes of data (CD-ROM Mode 2, Form 2). 50 activated by the application module 202, for example by
`PCL-ERR: This field points to an error information
`respective software function calls. For each plane of
`structure. If this field contains a zero (No error informa-
`memory (A,B, FMV, etc) FRAGM maintains a pointer
`tion structure available) a "Data error" bit is set in
`variable FREE-A, FREE-B, etc. For the purpose of
`PCL-CTRL, otherwise information about the data in
`simplicity, the following description makes no distinc-
`error is also returned in the given buffers. These data 55 tion between planes, except as explicitly mentioned.
`The operation of the various modules 202-212 in
`can be used to conceal error in video sectors for in-
`accordance with the invention will now be described
`stance.
`PCL-CNT: This field contains the offset in bytes
`with reference to the flow charts of FIGS. 6 and 7. To
`into the buffer of the next position to copy data. It
`assist in an understanding of their operation, FIG. 8
`should be initialized to zero by the application before 60 shows the status of memory allocation at four points
`(A),(B),(C) and (D) in the operation, as marked with
`the start of a play command. This field is updated by the
`system, but it may be changed by the application at any
`circled letters in FIG. 6. It should be appreciated that
`time during the execution of the play command.
`while there are only shown twelve memory fragments,
`Returning to the example of FIG. 3, then, the CIL(V-
`in practice hundreds of fragments can be allocated in
`IDEO) 306 points to a first PCL item 308 which in turn 65 the memory, each fragment giving 2324 bytes of buffer
`storage.
`points to a buffer reserved for video data IM.1. The
`buffer conventionally will contain enough space for
`In FIG. 6, the application module begins operation at
`serveral tens of disc sectors; enough for one complete
`700 when, for example, the user inserts a disc and a
`
`Page 11 of 14
`
`

`
`5,404,511
`
`8
`7
`826: The linking pointers PCL_NXT are followed
`CD-I application program is automatically read from
`and counted up to NSECT to identify the flfth free
`the disc and executed. The application program resides
`in one or other of the planes of the memory 200, but the
`fragment, and the FREE pointer is updated to indicate
`this fragment as the fust free fragment. Thus the four
`bulk of memory remains unallocated, to be used for
`s allocated fragments Fl..to F4 are unlinked from the free
`video and audio data.
`list and fragments FS to F12 now become Fl to F8. Null
`Rather than request allocation of buffer memory
`from the CDR TIS memory manager 210 in the conven-
`pointers are written accordingly to complete the un-
`linking. Upon return to the application module, the
`tional manner, as and when buffers are required, the
`application module first finds at 702 the maximum
`variable POINTER can be used to address a list of four
`amount of memory it will require in each plane. This 10 fragments, containing the requested four sectors of
`will normally be calculated at the time of writing the
`buffer space.
`application stored as part of the program. At 704, this
`At 708, the variable POINTER is copied to a CIL
`maximum size, expressed as a number MAXN of sec-
`entry CIL(IMl) as part of a Play Control Structure
`tors, is passed as a parameter to FRAGM, the frag-
`being defmed by the application module. A Play Con-
`mented memory manager module 212, in a call to the 15 trol Block (PCB) contains a pointer to the CIL for
`function FRAG-INIT. For each plane, the operation
`video, and another for audio, as described above in
`FRAG_INIT is shown in FIG. 7 as follows.
`relation to the conventional memory management oper-
`800: FRAG_INIT is activated by the application, in
`ations of CDRTOS. The situation of FIG. 8(B) now
`respect of a specillc memory plane (A, B, FMV etc.).
`applies, with the four allocated sectors of buffer space
`802: The parameter MAXN specilles how many sec- 20 being labelled IMl.l to IM1.4.
`At 710 the application module activates the play
`tors of buffer space might be required by the application
`at any one time.
`control module 208 ofCDRTOS, passing to it the loca-
`804: FRAGM requests CDRTOS memory manager
`tion of the PCB and identillcation of the disc location of
`210 to allocate at once the memory space required for
`four sectors of image data to be displayed. The play
`MAXN fragments.
`25 control module begins to read the identified sectors
`806: Assuming such memory space is available, the
`from the disc, and by means of the pointer CIL(IMl)
`address of the allocated space is received from the
`locates the flrst PCL item. This in turn points to the
`CDRTOS memory manager 210.
`buffer space IMl.l which has been allocated to receive
`808: The allocated space is "formatted" to create a
`the data.
`linked list of empty FRAG structures, each containing 30 After reading the fust sector of the image flle, of
`a buffer of2324 bytes and an augmented PCL structure.
`course, the play control module fmds the buffer IMl.l
`This format is shown at (A) in FIG. 8, with MAXN = 12
`full. Automatically it looks to the fleld PCL_NXT to
`leading to just twelve FRAG structures. The free buffer
`fmd a pointer to a further PCL, which in turn points to
`areas of these fragments are marked Fl to F12 in FIG.
`further buffer space IM1.2. By this process, all four
`35 sectors of the image flle are eventually loaded into the
`8(A).
`FRAGM creates a pointer variable 900 (FREE) for
`buffer sectors IMl.l to IM1.4. As described in the Phi-
`the plane, which pointer contains the address of the
`·lips/Kluwer textbook, the video decoder of the CD-I
`start of the PCL structure of the first free fragment Fl.
`player can be configured by means of entries in a Line
`The pointer PCL-NXT of each fragment is then set to
`Control Table to decode data from any memory loca-
`point to the PCL of the next free fragment in turn, until 40 tion in order to generate a given line of displayed image.
`The application module needs in any case to set up the
`all fragments have been linked. The last free fragment
`F12 has a null pointer '0' in its fleld PCL_NXT. The
`LCT to account for the location of the image buffer,
`extra fleld FRAG-PREV is used to link every free
`and this can now be done to account for the location of
`fragment in the reverse order (F12 to Fl). In each part
`each data segment in its respective fragment. Depend-
`of FIG. 8, the pointers PCL_NXT are represented by 45 ing on the image coding employed, each sector can
`define only a few lines of a full screen image, so that in
`arrows above the fragments, while the reverse pointers
`FRAG-PREV are represented by arrows below the
`a practical embodiment, some tens of sectors are likely
`to be used for one image flle.
`fragments.
`810: Control returns to the application module, which
`Now, for the sample state of the memory reached so
`makes no direct calls to the CDRTOS memory man- SO far at point (B) in the flow chart of FIG. 6, the partition-
`formatting with
`regular
`ing of memory and
`ager 210 thereafter.
`The operation of the application module continues
`PCL+structures might appear to cause excessive com-
`until a point where it is desired to play (for example) a
`plication compared with the conventional memory
`real-time flle containing four sectors of image data. At management operations. However, as more and more
`706 the application module calls function FRAG_ ss flles are read an discarded or kept after playing, the
`problem of memory fragmentation which besets con-
`GRAB of the fragmented memory manager FRAGM,
`ventional systems will never materialise.
`passing the number of sector buffers required as a pa-
`rameter NSECT=4. FRAGM allocates the fust four
`Consider the situation at point (C) in FIGS. 6 and 8,
`free fragments Fl to F4 simply by manipulation of the
`after many real-time ftles have been played and dis-
`pointers as follows, in accordance with the steps 60 carded. At this point, four sectors Fl to

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket