Modern media rendering devices have become popular in today's world and have allowed the ubiquitous proliferation of digital content. As part of viewing video content, users like to view the content in reverse. In other words, users request a rewind playback of the video at various speeds. Conventional media devices read spinning media, such as optical discs, in one direction. Therefore, rewind playback of the media requires continuous backward skipping.
The following presents a simplified summary of the disclosure in order to provide a basic understanding to the reader. This summary is not an extensive overview of the disclosure and it does not identify key/critical elements of the invention or delineate the scope of the invention. Its sole purpose is to present some concepts disclosed herein in a simplified form as a prelude to the more detailed description that is presented later.
Described herein are various techniques and technologies directed to communication of the high-level host device intentions to the media device. Various techniques of optimization of the media device internal operations based on the communicated high-level host intentions are also disclosed herein.
Many of the attendant features will be more readily appreciated as the same becomes better understood by reference to the following detailed description considered in connection with the accompanying drawings.
The present description will be better understood from the following detailed description read in light of the accompanying drawings, wherein:
Like reference numerals are used to designate like parts in the accompanying drawings.
The detailed description provided below in connection with the appended drawings is intended as a description of the present examples and is not intended to represent the only forms in which the present example may be constructed or utilized. The description sets forth the functions of the example and the sequence of steps for constructing and operating the example. However, the same or equivalent functions and sequences may be accomplished by different examples.
The system described is provided as an example and not a limitation. As those skilled in the art will appreciate, the present examples are suitable for application in a variety of different types of synchronization of postings.
Described herein are various techniques and technologies directed to a mechanism for optimized operations of content in a recording medium. The recording medium can be an optical disc, or any other type of recording medium now known or to become known. Optimized operations can include error correction, compression, rewind playback, and others. Operation of media content on optical discs, such a CD or DVD, requires special attention when accessing the spinning disc.
In conventional systems, the media device, such as a CD-ROM drive or DVD player, is only able to read the recording medium using a spiral movement on the media in one direction. The one direction is generally forward. Thus, to address the host device's request of reading the media backwards, the media device reads a contiguous incremental sequence of blocks, seek to the previous contiguous incremental sequence of blocks, read them, and seek again. The length of the contiguous incremental sequence of blocks is decided by the host device. However the host device is not aware of the physical properties of the media device such as media device data buffer size, revolutions per minute, seek time, data blocks per revolution, landing position of the head after a seek, and the like. Thus the read length decided by the host device is generally not optimal. As a result, the rewind playback and other operations suffer from jitter.
The systems and methods disclosed herein permit a smooth operation of the recording medium. In order to achieve this, the host device can be configured to communicate an intent to the media device of an operation to be performed. As used herein, an intent can include an expression of interest by the host device to request the performance of an operation at the host device. For instance, such operation can include localized compression of data, error correction, rewind playback, and others.
In the example of rewind playback, the media device can be configured to start reading before the requested address of a given data block. The media device can further be configured to buffer data that is not part of the requested data block, but that can be used later as part of another rewind request.
In another embodiment, the host device software and the media device can be configured to collaborate in such a way that the read lengths are optimal for the rewind speed selected by the user. Instead of the host device issuing burst of contiguous blocks read to the media device, the host device can be configured to select a rewind speed from a list of supported rewind speeds reported by the media device, set a start block address for the rewind read, and read decrementing address. As long as the host device is reading contiguously decrementing block aligned addresses, the media device can ensure to deliver data at the agreed rewind speed. If the host device issues a read command at a non-contiguous address, a seek delay is expected and permitted.
The media device can be configured to build a list of supported rewind speeds based advanced knowledge of its physical properties, and the physical properties of the media. In particular, the maximum rewind speed can use optimal timing for the time consuming seek between two burst of contiguous incremental read of sequence of blocks. Or, the media device may implement the physical capability to rotate the disc backward and rewind read the spiral physically.
The host device 102 can be configured to provide a user interface as well as to communicate with the media device 104 in order to send and receive media data. For instance, the host device 102 can be a personal computer, and the media device 104 can be a DVD player. Many other examples of a host device are contemplated, such as laptop computers, Smartphones, PDAs, and the like.
Thus, the host device 102 can be configured to send to the media device 104 a rewind playback command. Therefore, the rewind playback command can be an initial expression of intention of the host device 102 to carry out a rewind playback.
The host device 102 can be configured with one or more APIs that can be used by applications. For example, the host device 102 can be configured with video playback APIs for rewind playback, playback direction to rewind, select, increment or decrement speed of rewind, cache non-requested read data, and so on. A stop rewind read command can also be defined to resume normal incremental access. In a further embodiment, the host device 102 can be configured to play back the multiple data blocks received from the media device 104.
The host device 102 can further be configured with an application that can open a media device session and request information about storage device supported intents. Based on application interpretation of user needs, the host device 102 can explicitly communicate intent to the media device, which informs the media device how to interpret following data. Additionally, the host device 102 can be configured to organize, or request a local application to organize, the data stream according to earlier reported media device properties.
In another embodiment, the host device 102 can be configured to monitor user action patterns. The host device 102 can choose the type of monitoring based on the intents supported by the media device 104. For instance, if the media device 104 can optimize writes for bandwidth, user actions can be monitored to timing since the user prefers faster operation rather than power savings.
The media device 104 can be configured with data indicative of physical characteristics of the media device 104 and the recording medium. The firmware within the media device 104 can be configured to translate the data into an array of generalized properties, which can be reported to the host device 102 during media device 102 initialization. Such properties provided by the media device can include a table of playback speeds, optimal size of input/output operation, alignment properties, and others.
Therefore, there can be a set of general intents (such as optimization targets) which are well defined between host device 102 and the target device 104. Examples of such intents can include “maximize speed of write,” “optimize power consumption,” “optimize for reliable placement,” “optimize for rewind playback,” and the like. In one example, when the media device 104 is being initialized, the firmware in the media device reports a list of intents to the host device 104 for input/output operations.
In one embodiment, the media device 104 can be configured to receive a rewind playback command indicative of a rewind playback intent. The media device 104 can then prepare for the rewind playback. For instance, as part of preparing for the rewind, the media device 104 can be configured to provide the playback speeds available to the media device 104 depending on its resources and the type of media to be played. In another example, the media device 104 can be configured to start caching read data that has not been yet requested by the host device 102.
Upon receiving the rewind playback command from the host device 102, the media device 104 can configure various parameters and prepare for the playback. For instance, the media device 104 can send a list of speeds to the host device 102. In one example, the media device 104 can determine optimal data block sizes to send to the host device 102. In another example, the media device 104 receives optimal data block sizes and memory pointer from the host device 102.
The media device 104 can also read one or more data blocks. For example, the media device 104 can read a first data block from the recording medium, and send the first data block to the host device. The media device 104 can also be configured to start reading at a location in the recording medium having a location address that is less than a second data block starting address of a second data block. The second data block starting address can be less than the first data block starting address of the first data block.
Furthermore, the media device 104 can also be configured to read additional data from the recording medium. Such additional data can be read starting at the location address and continuing to the second data block starting address. In conventional systems, this data is ignored until the second data block starting address is reached. However, the media device 104 can be configured to read such additional data and store the data for future use. For instance, the media device 104 can access the stored additional data if subsequent commands to continue to perform rewind playback is received. In another embodiment, once the media device 104 receives a rewind playback command from the host device 102 the media device 104 can continuously cache the media data being read assuming that all the data being read may be used as part of the rewind playback.
Thus, in one example, the media device 104 can be configured to store additional data read from the recording in temporary memory. In another example, the media device 104 can be configured to send the temporary data to the host device upon receiving a subsequent read command to read at least a portion of the additional data.
In another example, the media device 104 can be configured to send a list of rewind playback speeds to the host device 102. The media device 104 can receive the playback rewind speed from the host device 102. The playback rewind speed can be a selection of speed from the list of rewind playback speeds.
In another embodiment, the media device 104 and the host device 102 can send back and forth a sequence of commands in order to prepare for the rewind playback, and during the rewind playback. For instance, one such sequence of commands can be the following sequence. The host device sends a rewind playback command to the media device 104. The media device 104 sends a list of rewind speeds with matching optimized read length to the host device 102. The host device 102 sends a selection of the speeds selected. The media device 102 reading data from a medium with the selected optimal length and selected speed. The host device 102 sends a stop command to resume forward playback to the media device.
In one embodiment, the host device 102 can be configured to send the rewind playback command to the media device 104. In conventional systems the host device generally sends a separate read command for each data block, such as an instruction for reading data block 212, then reading data block 208, then reading data block 204, and so on. On the contrary, the methods disclosed herein permit the host device to signal to the media device using the rewind playback command.
In a further embodiment, the media device can send back to the host device 102 data block by data block. The data within each data block is not inverted in order to preserve data coherency. In order to accomplish this, the host device 102 and the media device 104 may agree on the size of the data block (e.g., ECC block, sector, or other sizes). For instance, the host device software may be using fixed chunk of encoded video and ask the media device to provide this length of data or a multiple of the length of this data at a time. The host device software and target media device may agree to skip chunk of data for a faster rewind.
The media device can supply the host device a list of additional optimal backward playback speeds, which the target media device can have optimized based on the physical characteristics of the media and the media device itself. The host device software can be able to instruct the media device to select any given speed of this list, and can be able to instruct the media device to step one step faster or one speed slower in this list until the playback speed is satisfactory to the user.
At process block 304, a first data block is read from the recording medium, the first data block being at a first data block starting address in the recording medium. The process 300 continues at process block 306.
At process block 306, the first data block to the host device. The process 300 continues at process block 304. At process block 302, the process permits the media device to jump to a location in the recording medium having a location address that is less than a second data block starting address of a second data block. The second data block starting address being less than the first data block starting address of the first data block. The process 300 continues at process block 308.
At process block 308, additional data from the recording medium is read. The additional data being read starting at the location address to the second data block starting address. The process 300 continues at process block 310.
At process block 310, the second data block is read from the recording medium. The process 300 continues at process block 312. At process block 312, sending the second data block to the host device.
At process block 408, the selected playback rewind speed is sent from the host device to the media device. The playback rewind speed can be a selection of speed from the list of rewind playback speeds. The process 400 continues at process block 410.
At process block 410, a first data block is received from the media device. The first data block can be at a first data block starting address in the recording medium. The process 400 continues at process block 412. At process block 412, a second data block is received from the media device. The second data block starting address can be less than the first data block starting address of the first data block.
The computing device 500 can be any general or special purpose computer now known or to become known capable of performing the steps and/or performing the functions described herein, either in software, hardware, firmware, or a combination thereof.
In its most basic configuration, computing device 500 typically includes at least one central processing unit (CPU) 502 and memory 504. Depending on the exact configuration and type of computing device, memory 504 may be volatile (such as RAM), non-volatile (such as ROM, flash memory, etc.) or some combination of the two. Additionally, computing device 500 may also have additional features/functionality. For example, computing device 500 may include multiple CPU's. The described methods may be executed in any manner by any processing unit in computing device 500. For example, the described process may be executed by both multiple CPU's in parallel.
Computing device 500 may also include additional storage (removable and/or non-removable) including, but not limited to, magnetic or optical disks or tape. Such additional storage is illustrated in
Computing device 500 may also contain communications device(s) 512 that allow the device to communicate with other devices. Communications device(s) 512 is an example of communication media. Communication media typically embodies computer readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. The term computer-readable media as used herein includes both computer storage media and communication media. The described methods may be encoded in any computer-readable media in any form, such as data, computer-executable instructions, and the like.
Computing device 500 may also have input device(s) 510 such as keyboard, mouse, pen, voice input device, touch input device, etc. Output device(s) 508 such as a display, speakers, printer, etc. may also be included. All these devices are well known in the art and need not be discussed at length.
Those skilled in the art will realize that storage devices utilized to store program instructions can be distributed across a network. For example, a remote computer may store an example of the process described as software. A local or terminal computer may access the remote computer and download a part or all of the software to run the program. Alternatively, the local computer may download pieces of the software as needed, or execute some software instructions at the local terminal and some at the remote computer (or computer network). Those skilled in the art will also realize that by utilizing conventional techniques known to those skilled in the art that all, or a portion of the software instructions may be carried out by a dedicated circuit, such as a DSP, programmable logic array, or the like.