This application claims the benefit of the filing date and priority to Indian Application No. 2529/DEL/2007 filed on Dec. 3, 2007, which is incorporated herein by reference in its entirety.
Embodiments of the present invention relate generally to memory usage technology and, more particularly, relate to a method, apparatus and computer program product for providing improved memory usage such as by providing for a longer time of media playback, e.g., by providing improved memory usage by using a chained reservoir of relatively inexpensive MMC memory and a reduced amount of relatively expensive random access memory (RAM).
The modern communications era has brought about a tremendous expansion of wired and wireless networks. Computer networks, television networks, and telephony networks are experiencing an unprecedented technological expansion, fueled by consumer demand. Wireless and mobile networking technologies have addressed related consumer demands, while providing more flexibility and immediacy of information transfer.
Current and future networking technologies continue to facilitate ease of information transfer and convenience to users. One area in which there is a demand to increase ease of information transfer relates to the delivery of services to a user of a mobile terminal. The services may be in the form of a particular media or communication application desired by the user, such as a music player, a game player, an electronic book, short messages, email, etc. The services may also be in the form of interactive applications in which the user may respond to a network device in order to perform a task or achieve a goal. The services may be provided from a network server or other network device, or even from the mobile terminal such as, for example, a mobile telephone, a mobile television, a mobile gaming system, etc.
Services provided may include the provision of multimedia content for consumption at a mobile device. Moreover, given the ubiquitous nature of mobile devices such as cellular phones and other wireless communication devices, individual users are now able to produce, share and consume multimedia content while remaining mobile. In this regard, for example, individual users can create and/or consume audio and video content. Typically, when a user consumes multimedia content, the multimedia content may be downloaded to the user's device from a server or even directly from another user's device. The downloaded content may then be rendered at the user's device using a corresponding application.
Although such content may be created, downloaded and/or rendered at both mobile and fixed terminals, particularly in the context of mobile terminals, there may be limitations or restrictions placed on the amount or nature of resources available on the device (e.g., processing power, memory, display size limitations, etc.). In this regard, market demands often suggest that mobile terminals be limited in size and/or cost. RAM is one resource which may be more expensive (e.g., on a cost per megabyte (MB) basis) than some other memory alternatives such as, for example, flash memory or a hot-pluggable multimedia memory card (MMC). However, since RAM is desirable for use due to the speed at which information therein can be accessed, it may not always be practical to use other memory devices as a substitute for RAM.
Terminals capable of rendering multimedia content often include applications that provide feature capabilities like seeking/searching operations (e.g., fast forward, rewind, next, previous, etc.) and other operations (e.g., play, pause, stop, etc.). However, in order to accommodate pausing for a long period of time and/or seeking operations throughout the entirety of a particular media content item, an entirety of the particular media content item may need to be stored on the mobile device, for example, in the RAM of the device. Given the size of media content items such as, for example, videos like FlashVideo (FLV) by Adobe Inc., in order for videos of several minutes in length to be stored, very large and expensive RAM may be required. Moreover, other applications and even the application rendering the media content may also consume RAM.
Thus, given a particular RAM size and multimedia content of increasingly larger sizes, limits may be placed on the rendering capabilities of a device. For example, if a phone call is received during a download and rendering of media content and the rendering of the media content is paused during the call, the content rendering could be compromised if the incoming downloaded content is of a size larger than the RAM's storage capability. Additionally, download speeds may overtake content rendering and/or processing speeds so that RAM is consumed by downloaded data faster than the data is rendered until, for example, the RAM is filled and data must be released to make room for completion of the download. As such, content associated with the currently queued location may be deleted to make room for newly incoming content when the capacity limit of the RAM is reached. One mechanism for dealing with problems similar to those described above may be to store only as much data as required in a small window of time around the currently queued location and then releasing the data to enable storage of new data being downloaded. However, under this mechanism, if searching is desired within a media content item being rendered on a device in which the RAM is not sufficient to hold the entire media content item, portions of the media content item may be deleted to make room for incoming new data and thus, seeking operations may be limited.
Accordingly, it may be desirable to improve memory usage, such as by providing a memory management mechanism that may balance RAM usage with the usage of other low expense memory options in order to overcome at least some of the disadvantages described above.
A method, apparatus and computer program product are therefore provided that may provide improved memory usage by utilizing at least two different memory reservoirs with respect to storing downloaded multimedia content. In this regard, for example, one of the memory reservoirs may be RAM or another relatively higher cost memory device and another memory reservoir may be a lower cost memory device (e.g., a flash memory or MMC). Embodiments of the present invention may provide that, when downloading content, such content may be downloaded within the RAM or higher cost memory device until a particular threshold is reached, at which time further content may be downloaded to the other memory reservoir. In an exemplary embodiment, latest downloaded data may be stored in RAM and, when the particular threshold is reached, older data may be flushed out to the MMC. Accordingly, usage of the higher cost memory device may be managed (e.g., minimized) by utilizing (e.g., maximizing) less expensive memory in the other memory reservoir.
In one exemplary embodiment, a method for providing improved memory usage is provided. The method may include receiving media content data, directing storage of up to a predetermined amount of a most recently received portion of the media content data into a first memory reservoir, and, in response to storing the predetermined amount in the first memory reservoir, transferring older portions of the received media content from the first memory reservoir to a second memory reservoir to maintain the storage in the first memory reservoir at the predetermined amount.
In another exemplary embodiment, a computer program product for providing improved memory usage is provided, for example, for a mobile terminal. The computer program product includes at least one computer-readable storage medium having computer-readable program code portions stored therein. The computer-readable program code portions include first, second and third executable portions. The first executable portion is for receiving media content data. The second executable portion is for directing storage of up to a predetermined amount of a most recently received portion of the media content data into a first memory reservoir. The third executable portion is for transferring older portions of the received media content from the first memory reservoir to a second memory reservoir to maintain the storage in the first memory reservoir at the predetermined amount. The third executable portion may be executed in response to storing the predetermined amount in the first memory reservoir.
In another exemplary embodiment, an apparatus for providing improved memory usage is provided. The apparatus includes a processor configured to receive media content data, direct storage of up to a predetermined amount of a most recently received portion of the media content data into a first memory reservoir, and, in response to storing the predetermined amount in the first memory reservoir, transfer older portions of the received media content from the first memory reservoir to a second memory reservoir to maintain the storage in the first memory reservoir at the predetermined amount.
In another exemplary embodiment, an apparatus for providing improved memory usage is provided. The apparatus includes means for receiving media content data, means for directing storage of up to a predetermined amount of a most recently received portion of the media content data into a first memory reservoir, and means for, in response to storing the predetermined amount in the first memory reservoir, transferring older portions of the received media content from the first memory reservoir to a second memory reservoir to maintain the storage in the first memory reservoir at the predetermined amount.
Accordingly, embodiments of the present invention may provide a memory management mechanism that may enable advantageous balancing of the usage of memory resources, e.g., between expensive and inexpensive memory options. Accordingly, due to a reduction in RAM or higher cost memory usage, a smaller RAM may be utilized without suffering from reduced capabilities. Thus, bill of materials for devices such as mobile terminals may be reduced. Additionally, other exemplary embodiments of the invention address situations in which a computer program for seeking operations (e.g., fwd and backward), playback of multiple simultaneous media content, support for longer pause durations, etc., is provided.
Having thus described the invention in general terms, reference will now be made to the accompanying drawings, which are not necessarily drawn to scale, and wherein:
Embodiments of the present invention will now be described more fully hereinafter with reference to the accompanying drawings, in which some, but not all embodiments of the invention are shown. Indeed, the invention may be embodied in many different forms and should not be construed as limited to the embodiments set forth herein; rather, these embodiments are provided so that this disclosure will satisfy applicable legal requirements. Like reference numerals refer to like elements throughout.
In addition, while several embodiments of the method of embodiments of the present invention are performed or used by a mobile terminal 10, the method may be employed by other than a mobile terminal (e.g., a television, personal computer (PC) or other fixed terminals or devices). Moreover, the system and method of embodiments of the present invention will be primarily described in conjunction with mobile communications applications. It should be understood, however, that the system and method of embodiments of the present invention can be utilized in conjunction with a variety of other applications, both in the mobile communications industries and outside of the mobile communications industries.
The mobile terminal 10 includes an antenna 12 (or multiple antennae) in operable communication with a transmitter 14 and a receiver 16. The mobile terminal 10 may further include an apparatus, such as a controller 20 or other processing element, that provides signals to and receives signals from the transmitter 14 and receiver 16, respectively. The signals include signaling information in accordance with the air interface standard of the applicable cellular system, and also user speech, received data and/or user generated data. In this regard, the mobile terminal 10 is capable of operating with one or more air interface standards, communication protocols, modulation types, and access types. By way of illustration, the mobile terminal 10 is capable of operating in accordance with any of a number of first, second, third and/or fourth-generation communication protocols or the like. For example, the mobile terminal 10 may be capable of operating in accordance with second-generation (2G) wireless communication protocols IS-136 (time division multiple access (TDMA)), GSM (global system for mobile communication), and IS-95 (code division multiple access (CDMA)), or with third-generation (3G) wireless communication protocols, such as Universal Mobile Telecommunications System (UMTS), CDMA2000, wideband CDMA (WCDMA) and time division-synchronous CDMA (TD-SCDMA), with fourth-generation (4G) wireless communication protocols or the like. As an alternative (or additionally), the mobile terminal 10 may be capable of operating in accordance with non-cellular communication mechanisms. For example, the mobile terminal 10 may be capable of communication in a wireless local area network (WLAN) or other communication networks described below in connection with
It is understood that the apparatus, such as the controller 20, may include means such as a device or circuitry desirable for implementing audio and logic functions of the mobile terminal 10. For example, the controller 20 may be comprised of a digital signal processor device, a microprocessor device, and various analog to digital converters, digital to analog converters, and other support circuits. Control and signal processing functions of the mobile terminal 10 are allocated between these devices according to their respective capabilities. The controller 20 thus may also include the functionality to convolutionally encode and interleave message and data prior to modulation and transmission. The controller 20 can additionally include an internal voice coder, and may include an internal data modem. Further, the controller 20 may include functionality to operate one or more software programs, which may be stored in memory. For example, the controller 20 may be capable of operating a connectivity program, such as a conventional Web browser. The connectivity program may then allow the mobile terminal 10 to transmit and receive Web content, such as location-based content and/or other web page content, according to a Wireless Application Protocol (WAP), Hypertext Transfer Protocol (HTTP) and/or the like, for example.
The mobile terminal 10 may also comprise a user interface including an output device such as a conventional earphone or speaker 24, a ringer 22, a microphone 26, a display 28, and a user input interface, all of which are coupled to the controller 20. The user input interface, which allows the mobile terminal 10 to receive data, may include any of a number of devices allowing the mobile terminal 10 to receive data, such as a keypad 30, a touch display (not shown) or other input device. In embodiments including the keypad 30, the keypad 30 may include the conventional numeric (0-9) and related keys (#, *), and other hard and soft keys used for operating the mobile terminal 10. Alternatively, the keypad 30 may include a conventional QWERTY keypad arrangement. The keypad 30 may also include various soft keys with associated functions. In addition, or alternatively, the mobile terminal 10 may include an interface device such as a joystick or other user input interface. The mobile terminal 10 further includes a battery 34, such as a vibrating battery pack, for powering various circuits that are required to operate the mobile terminal 10, as well as optionally providing mechanical vibration as a detectable output. In addition, the mobile terminal 10 may include a positioning sensor 36. The positioning sensor 36 may include, for example, a global positioning system (GPS) sensor, an assisted global positioning system (Assisted-GPS) sensor, etc. However, in one exemplary embodiment, the positioning sensor 36 includes a pedometer or inertial sensor. In this regard, the positioning sensor 36 is capable of determining a location of the mobile terminal 10, such as, for example, longitudinal and latitudinal directions of the mobile terminal 10, or a position relative to a reference point such as a destination or start point. Information from the positioning sensor 36 may then be communicated to a memory of the mobile terminal 10 or to another memory device to be stored as position history or location information.
The mobile terminal 10 may further include a user identity module (UIM) 38. The UIM 38 is typically a memory device having a processor built in. The UIM 38 may include, for example, a subscriber identity module (SIM), a universal integrated circuit card (UICC), a universal subscriber identity module (USIM), a removable user identity module (R-UIM), etc. The UIM 38 typically stores information elements related to a mobile subscriber. In addition to the UIM 38, the mobile terminal 10 may be equipped with memory. For example, the mobile terminal 10 may include volatile memory 40, such as volatile Random Access Memory (RAM) including a cache area for the temporary storage of data. The mobile terminal 10 may also include other non-volatile memory 42, which can be embedded and/or may be removable. The non-volatile memory 42 can additionally or alternatively comprise an electrically erasable programmable read only memory (EEPROM), flash memory or the like, such as that available from the SanDisk Corporation of Sunnyvale, Calif., or Lexar Media Inc. of Fremont, Calif. The memories can store any of a number of pieces of information, and data, used by the mobile terminal 10 to implement the functions of the mobile terminal 10. For example, the memories can include an identifier, such as an international mobile equipment identification (IMEI) code, capable of uniquely identifying the mobile terminal 10. Furthermore, the memories may store instructions for determining cell id information. Specifically, the memories may store an application program for execution by the controller 20, which determines an identity of the current cell, i.e., cell id identity or cell id information, with which the mobile terminal 10 is in communication. In conjunction with the positioning sensor 36, the cell id information may be used to more accurately determine a location of the mobile terminal 10.
In an exemplary embodiment, the mobile terminal 10 may include a media capturing module, such as a camera, video and/or audio module, in communication with the controller 20. The media capturing module may be any means for capturing an image, video and/or audio for storage, display or transmission. For example, in an exemplary embodiment in which the media capturing module is a camera module 37, the camera module 37 may include a digital camera capable of forming a digital image file from a captured image, or a video file from a series of captured image frames with or without accompanying audio data. As such, the camera module 37 includes all hardware, such as a lens or other optical device, and software necessary for creating a digital image, video or audio file from captured image/audio data. Alternatively, the camera module 37 may include only the hardware needed to capture an image, while a memory device of the mobile terminal 10 stores instructions for execution by the controller 20 in the form of software necessary to create a digital image file from a captured image. In an exemplary embodiment, the camera module 37 may further include a processing element such as a co-processor which assists the controller 20 in processing image data and an encoder and/or decoder for compressing and/or decompressing image data. The encoder and/or decoder may encode and/or decode according to, for example, a joint photographic experts group (JPEG) standard or other format.
The MSC 46 can be coupled to a data network, such as a local area network (LAN), a metropolitan area network (MAN), and/or a wide area network (WAN). The MSC 46 can be directly coupled to the data network. In one typical embodiment, however, the MSC 46 is coupled to a gateway device (GTW) 48, and the GTW 48 is coupled to a WAN, such as the Internet 50. In turn, devices such as processing elements (e.g., personal computers, server computers or the like) can be coupled to the mobile terminal 10 via the Internet 50. For example, as explained below, the processing elements can include one or more processing elements associated with a computing system 52 (two shown in
The BS 44 can also be coupled to a serving GPRS (General Packet Radio Service) support node (SGSN) 56. As known to those skilled in the art, the SGSN 56 is typically capable of performing functions similar to the MSC 46 for packet switched services. The SGSN 56, like the MSC 46, can be coupled to a data network, such as the Internet 50. The SGSN 56 can be directly coupled to the data network. In a more typical embodiment, however, the SGSN 56 is coupled to a packet-switched core network, such as a GPRS core network 58. The packet-switched core network is then coupled to another GTW 48, such as a gateway GPRS support node (GGSN) 60, and the GGSN 60 is coupled to the Internet 50. In addition to the GGSN 60, the packet-switched core network can also be coupled to a GTW 48. Also, the GGSN 60 can be coupled to a messaging center. In this regard, the GGSN 60 and the SGSN 56, like the MSC 46, may be capable of controlling the forwarding of messages, such as MMS messages. The GGSN 60 and SGSN 56 may also be capable of controlling the forwarding of messages for the mobile terminal 10 to and from the messaging center.
In addition, by coupling the SGSN 56 to the GPRS core network 58 and the GGSN 60, devices such as a computing system 52 and/or origin server 54 may be coupled to the mobile terminal 10 via the Internet 50, SGSN 56 and GGSN 60. In this regard, devices such as the computing system 52 and/or origin server 54 may communicate with the mobile terminal 10 across the SGSN 56, GPRS core network 58 and the GGSN 60. By directly or indirectly connecting mobile terminals 10 and the other devices (e.g., computing system 52, origin server 54, etc.) to the Internet 50, the mobile terminals 10 may communicate with the other devices and with one another, such as according to the Hypertext Transfer Protocol (HTTP) and/or the like, to thereby carry out various functions of the mobile terminals 10.
Although not every element of every possible mobile network is shown and described herein, it should be appreciated that the mobile terminal 10 may be coupled to one or more of any of a number of different networks through the BS 44. In this regard, the network(s) may be capable of supporting communication in accordance with any one or more of a number of first-generation (1G), second-generation (2G), 2.5G, third-generation (3G), 3.9G, fourth-generation (4G) mobile communication protocols or the like. For example, one or more of the network(s) can be capable of supporting communication in accordance with 2G wireless communication protocols IS-136 (TDMA), GSM, and IS-95 (CDMA). Also, for example, one or more of the network(s) can be capable of supporting communication in accordance with 2.5G wireless communication protocols GPRS, Enhanced Data GSM Environment (EDGE), or the like. Further, for example, one or more of the network(s) can be capable of supporting communication in accordance with 3G wireless communication protocols such as a UMTS network employing WCDMA radio access technology. Some narrow-band analog mobile phone service (NAMPS), as well as total access communication system (TACS), network(s) may also benefit from embodiments of the present invention, as should dual or higher mode mobile stations (e.g., digital/analog or TDMA/CDMA/analog phones).
The mobile terminal 10 can further be coupled to one or more wireless access points (APs) 62. The APs 62 may comprise access points configured to communicate with the mobile terminal 10 in accordance with techniques such as, for example, radio frequency (RF), infrared (IrDA) or any of a number of different wireless networking techniques, including wireless LAN (WLAN) techniques such as IEEE 802.11 (e.g., 802.11a, 802.11b, 802.11g, 802.11n, etc.), world interoperability for microwave access (WiMAX) techniques such as IEEE 802.16, and/or wireless Personal Area Network (WPAN) techniques such as IEEE 802.15, BlueTooth (BT), ultra wideband (UWB) and/or the like. The APs 62 may be coupled to the Internet 50. Like with the MSC 46, the APs 62 can be directly coupled to the Internet 50. In one embodiment, however, the APs 62 are indirectly coupled to the Internet 50 via a GTW 48. Furthermore, in one embodiment, the BS 44 may be considered as another AP 62. As will be appreciated, by directly or indirectly connecting the mobile terminals 10 and the computing system 52, the origin server 54, and/or any of a number of other devices, to the Internet 50, the mobile terminals 10 can communicate with one another, the computing system, etc., to thereby carry out various functions of the mobile terminals 10, such as to transmit data, content or the like to, and/or receive content, data or the like from, the computing system 52. As used herein, the terms “data,” “content,” “information” and similar terms may be used interchangeably to refer to data capable of being transmitted, received and/or stored in accordance with embodiments of the present invention. Thus, use of any such terms should not be taken to limit the spirit and scope of embodiments of the present invention.
Although not shown in
In an exemplary embodiment, content or data may be downloaded or otherwise communicated over the system of
In an exemplary embodiment, the browser plug-in 70 may be embodied as a device or means, such as circuitry or a computer program, which may interact with a host application to provide a certain function “on demand”. In this regard, the browser plug-in 70 may provide a mechanism through which data such as streaming or other media content may be downloaded from a network device or other terminal (e.g., via the system of
The core player 74 may include any of a number of different devices configured to provide playback and/or rendering capabilities with respect to media content or files. For example, the core player 74 may include a television (TV) monitor, wireless monitor, game console, PC, stereo and home theater, video and imaging capture and/or playback device, multimedia mobile terminal, game console, etc. In some embodiments, the core player 74 may be embodied as a virtual machine or computer program for rendering or playing back multimedia files via the display and/or speaker of the mobile terminal 10. As such, for example, the core player 74 may be configured to render audio and/or video data such as in a particular audio or video file that may be downloaded to the mobile terminal 10 for rendering via the core player 74. One example of a core player may be a flash video player, however, numerous similar core players are also known in the art and could be embodied as the core player 74.
In some embodiments, the core player 74 may include a local buffer (e.g., a live data buffer) for temporary storage of data for rendering via the core player 74. As such, a user may request (e.g., via a request made by the user using a user interface of the mobile terminal 10) that data or a particular multimedia content file 80 corresponding to audio or video multimedia content be downloaded to the mobile terminal 10 for rendering via the core player 74. In such a scenario, the core player 74 may initiate the download of the particular multimedia content file 80 via the browser plug-in 70 (e.g., and ultimately via a browser). The data downloaded via the browser plug-in 70 may then be communicated to the platform adaptation engine 72, which may manage storage of the data downloaded (e.g., the particular multimedia content file 80) as described in greater detail below. The stored data may then be accessed by the core player 74 via the platform adaptation engine 72 for playback when desired.
The mobile terminal 10 may also include a first memory reservoir (e.g., RAM reservoir 76), which may, in some embodiments, be considered a portion of a relatively more expensive memory resource, and a second memory reservoir (e.g., MMC data reservoir 78), which may be considered a portion of a relatively less expensive resource than the first memory reservoir. An embodiment of the present invention will now be described in relation to the RAM reservoir 76 and the MMC data reservoir 78, which should be recognized as merely examples of the first and second memory reservoirs, respectively. In this regard, the RAM reservoir 76 may be a predefined portion of the volatile memory 40 of the mobile terminal 10 and the MMC data reservoir 78 may be a predefined portion of the non-volatile memory 42 of the mobile terminal 10. However, the data in the MMC data reservoir 78 may be deleted when corresponding content (e.g., a video instance) is deleted. The MMC data reservoir 78 may be, for example, a portion of a flash memory or pluggable memory card, which may be inserted into the mobile terminal 10 to add additional memory capability. However, the second memory reservoir need not necessarily be a portion of a removable memory device.
Generally, as described above, the platform adaptation engine 72 may be any means, such as a device or circuitry, embodied in either hardware, software, or a combination of hardware and software that is configured to perform the corresponding functions of the platform adaptation engine 72. However, in some embodiments, the platform adaptation engine 72 may be embodied as a virtual machine or computer program for managing memory usage of the mobile terminal 10 at least with respect to data downloads initiated by the core player 74. As such, the platform adaptation engine 72 may be embodied as a processing element (e.g., the controller 20) configured to execute instructions stored in a computer readable storage medium. Processing elements such as those described herein may be embodied in many ways. For example, the processing element may be embodied as a processor, a coprocessor, a controller or various other processing means or devices including integrated circuits such as, for example, an ASIC (application specific integrated circuit). The platform adaptation engine 72 may act as a host upon which the core player 74 runs. As such, the platform adaptation engine 72 may host applications that communicate for the purpose of rendering media content (e.g., playing a flash video) as described herein.
In an exemplary embodiment, the platform adaptation engine 72 may be configured to manage memory usage of the mobile terminal 10 by providing memory spillover functions to spill or transfer data ingress over from the RAM reservoir 76 to the MMC data reservoir 78 in certain situations in order to utilize the MMC data reservoir 78 to provide increased downloaded data storage capability, while reducing an amount of RAM reservoir 76 usage requirements with respect to any one particular multimedia content file, virtually regardless of the size of the file. As indicated above, the platform adaptation engine 72 may further provide for copying of downloaded data from the RAM reservoir 76 and/or the MMC data reservoir 78 to the buffer of the core player 74 for playback.
As shown in
Thus, in accordance with the embodiment of
In an exemplary embodiment, a value corresponding to the RAM high water mark 88 may be variable in order to ensure that an amount of resources allocated to any particular download of data may not be rigidly set to a value that results in an allocation of too many resources to the particular download of data. For example, the RAM high water mark 88 may not be defined as a specific value, but instead as a variable value based on providing a minimum amount of unutilized RAM memory space with respect to total RAM capacity. In other words, the RAM high water mark may be set to maintain a minimum of RAM unutilized space (e.g., 4 MB) or may be set as a fraction of the RAM space available to maintain the minimum of RAM unutilized space.
Accordingly, the platform adaptation engine 72 may define rules and/or procedures for memory management as defined herein. In various exemplary embodiments, the rules defined by the platform adaptation engine 72 may include provision of the various size allocations to be provided for the RAM reservoir 76 and/or the MMC data reservoir 78. Such size allocations may include values corresponding to high and/or low watermarks. Furthermore, the platform adaptation engine 72 may define whether the various size allocations are variable under certain circumstances. For example, if the MMC data reservoir 78 is not available the RAM high water mark may be defined, whereas the RAM high water mark may not be defined if the MMC data reservoir 78 is available. In other words, the platform adaptation engine 72 may provide for a particular amount of RAM space to be utilized if a chained or linked reservoir of memory space can be utilized to reduce reliance upon RAM, and a larger amount of RAM space may be provided for utilization for data download if the chained or linked reservoir of memory space is not available. Additionally, the sizes of the RAM and/or MMC data reservoirs may be set to a variable amount based on maintaining a minimum amount of unused RAM or MMC space for use by other applications.
It should also be noted that the platform adaptation engine 72 may perform the operations described above for each download or data transfer operation. Accordingly, for example, if multiple media content downloads are requested during a particular period of time, the platform adaptation engine 72 may define corresponding multiple RAM and/or MMC data reservoirs for each media content download operation. The platform adaptation engine 72 could also define different values at which the operations described above are performed based on the number of currently active downloading operations.
Accordingly, some embodiments may provide a reduced reliance upon RAM resources for storage, which may translate to lower bill of material costs. Additionally, since less RAM may be required for any particular media file, media files such as videos of longer lengths may be rendered with increased access to functionality such as long pause durations (and therefore possibly support for longer phone calls while a video is paused), a longer window over which seek operations may be performed, etc. Moreover, intricate operations, e.g., most frequently performed operations like write operations, can be done in RAM and the data may be committed to the MMC to improve performance. In an exemplary embodiment, data may be committed to the MMC only when the predetermined limit of the RAM reservoir is reached. Thus the frequency of these writes may be comparatively less.
Accordingly, blocks or steps of the flowcharts support combinations of means for performing the specified functions, combinations of steps for performing the specified functions and program instruction means for performing the specified functions. It will also be understood that one or more blocks or steps of the flowcharts, and combinations of blocks or steps in the flowcharts, can be implemented by special purpose hardware-based computer systems which perform the specified functions or steps, or combinations of special purpose hardware and computer instructions.
In this regard, one embodiment of a method for providing improved memory usage, as shown in
In an exemplary embodiment, the method may include several other optional operations as defined below and illustrated in
In an exemplary embodiment, operation 100 may include receiving more than one media content files and the directing and transferring operations (e.g., 110 and 120) may be performed with respect to a separate first and second memory reservoir for each of the more than one media content files (e.g., a first and second memory reservoir for a first media content file and a separate first and second memory reservoir for the second media content file). Operation 110 may include directing storage into a portion of RAM storage and operation 120 may include transferring data to a removable memory card. Operation 100 could alternatively include downloading streamed video data and thus, the method may further include determining whether a data offset is disposed in the first or second memory reservoir and accessing the streamed video data at a location corresponding to the data offset. In such an embodiment, the streamed video data proximate to the data offset may be copied to a core player.
Many modifications and other embodiments of the inventions set forth herein will come to mind to one skilled in the art to which these inventions pertain having the benefit of the teachings presented in the foregoing descriptions and the associated drawings. Therefore, it is to be understood that the inventions are not to be limited to the specific embodiments disclosed and that modifications and other embodiments are intended to be included within the scope of the appended claims. Although specific terms are employed herein, they are used in a generic and descriptive sense only and not for purposes of limitation.
Number | Date | Country | Kind |
---|---|---|---|
2529/DEL/2007 | Dec 2007 | IN | national |