The present invention relates generally to processing of media files, and more particularly to a device and methods for seamless playback of a plurality of media files.
Audio and video data can be stored in many formats and processed by a variety of devices. Media playback typically depends on the format of media and type of storage utilized. For example, conventional devices for processing audio data include devices which read data stored on data discs (e.g., compact disc “CD”), and devices configured to electronically store files (e.g., MP3 files). These conventional methods and devices generally allow for playback of one or more media files from a single source. One or more drawbacks of these conventional methods and devices is the ability to provide seamless playback of media. For many users there exists a desire to provide seamless and continuous playback of media data which has not been addressed by conventional methods and devices and/or fails to address one or more drawbacks of these devices and methods.
Disc based players are an example of a conventional type of audio player which is having limited ability for seamless and continuous playback. For example, although CD players are capable of continuous playback of media stored on a compact disc. Data may be stored on CDs a plurality of ways, including as audio data, and as compressed audio files. CDs formatted as an audio disc can be read to allow for transitioning between tracks with interruption in the output of audio as the audio stream is generally encoded as a single physical block of data (with markers indicating the timing positions of the tracks), and not separate files of potentially differing formats. For example,
Some CD players have carousels to allow for a plurality of discs to be read for playback, and to allow for random playback of a plurality of files. This approach however, introduces delay between the playback of tracks and thus, is not seamless. Further, this approach does not allow for playback of media according to varying types of data. Similar drawbacks are presented when using other disc based technologies such as digital video discs (DVD).
Another conventional approach to processing audio relies on the use of software products for playback of two user specified tracks. Referring now to
Thus, there is a desire to provide seamless playback for a plurality of media files of varying types, including music, audio and/or video that overcomes one or more of the aforementioned drawbacks.
Disclosed and claimed herein are a device and methods for seamless playback of media files by an application of a computing device. In one embodiment, a method includes detecting a user selection for playback of one or more media files by the application, initiating playback of a first media file by the application based on the user selection, wherein the first media file is output by the computing device, determining a time period to pre-load a second media file, during playback of the first media file, and pre-loading data for the second media file at the time period, wherein a buffer portion including data for an initial playback period of the second media file is pre-loaded. The method further includes initiating playback of the buffer portion following an endpoint of the first media file, wherein data for an initial playback period of the second media file is output by the computing device, and continuing playback of the second media file following the endpoint of the buffer portion, wherein the remaining portion of the second media file is output by the computing device.
Other aspects, features, and techniques of the invention will be apparent to one skilled in the relevant art in view of the following detailed description of the invention.
The features, objects, and advantages of the present invention will become more apparent from the detailed description set forth below when taken in conjunction with the drawings in which like reference characters identify correspondingly throughout and wherein:
One aspect of the present invention relates to seamless playback of one or more media files. In one embodiment, a method is provided for playback of one or more media files seamlessly including loading a portion of a second media file during playback of a first media file. The method may also allow for continuous playback for an extended period of time. One advantage of the invention includes playing media files of different types, and from different sources, by the media player application. In one embodiment, the method includes pre-loading data for a portion of a second or subsequent media file during playback of a first media file. In that fashion, one or more media files of the same or different types and associated with a plurality of sources may be played seamlessly and continuously.
As used herein, “playback” relates to processing and output of audio and/or visual or video data of a media file. Seamless playback relates to playback of a media file immediately following the endpoint of a current media file.
In another embodiment, a media player application is provided which may be performed by a computing device. The media player application may be configured to play one or more media files seamlessly and continuously based on a user selection. According to another embodiment, the media player application may additionally be configured to store user preferences for determining media files to subsequently load, and/or select one or more files based on type.
As used herein, the terms “a” or “an” shall mean one or more than one. The term “plurality” shall mean two or more than two. The term “another” is defined as a second or more. The terms “including” and/or “having” are open ended (e.g., comprising). The term “or” as used herein is to be interpreted as inclusive or meaning any one or any combination. Therefore, “A, B or C” means “any of the following: A; B; C; A and B; A and C; B and C; A, B and C”. An exception to this definition will occur only when a combination of elements, functions, steps or acts are in some way inherently mutually exclusive.
Reference throughout this document to “one embodiment,” “certain embodiments,” “an embodiment,” or similar term means that a particular feature, structure, or characteristic described in connection with the embodiment is included in at least one embodiment of the present invention. Thus, the appearances of such phrases in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner on one or more embodiments without limitation.
In accordance with the practices of persons skilled in the art of computer programming, the invention is described below with reference to operations that are performed by a computer system or a like electronic system. Such operations are sometimes referred to as being computer-executed. It will be appreciated that operations that are symbolically represented include the manipulation by a processor, such as a central processing unit, of electrical signals representing data bits and the maintenance of data bits at memory locations, such as in system memory, as well as other processing of signals. The memory locations where data bits are maintained are physical locations that have particular electrical, magnetic, optical, or organic properties corresponding to the data bits.
When implemented in software, the elements of the invention are essentially the code segments to perform the necessary tasks. The code segments can be stored in a processor readable medium, which may include any medium that can store or transfer information. Examples of the processor readable mediums include an electronic circuit, a semiconductor memory device, a read-only memory (ROM), a flash memory or other non-volatile memory, a floppy diskette, a CD-ROM, an optical disk, a hard disk, etc.
Referring now to the figures,
Based on a user selection of I/O interface 315, processor 305 may be configured to run and/or select a media player application for playback of one or more media files. For example, a user selection may initiate playback of one or more media files stored by memory 310 and/or stored by one or more devices coupled to device 300 via I/O interface 315. I/O interface 315 may include one or more buttons for user input, such as a numerical keypad, volume control, channel control, menu controls, pointing device, track ball, mode selection buttons, and playback functionality (e.g., play, stop, pause, forward, reverse, slow motion, etc). In that fashion, a user of computing device 300 can command one or more applications, including an application for seamless playback of one or more media files. Buttons of I/O interface 315 may include hard and soft buttons, wherein functionality of the soft buttons may be based on one or more applications running on computing device 300. I/O interface 315 may be configured to allow for one or more devices to communicate with computing device 300 via wired or wireless communication. In certain embodiments, I/O interface 315 may allow for coupling to an external display and output of audio data via one or more of terminals and speakers.
Display 320 may be employed to display one or more of a user interface of the media application player, menu functions, media tracking, media file identifiers, sources of media files, etc. Display 320 may further be configured to display data received from one or more devices, such as a peripheral device, and external memory.
As will be discussed in more detail below, one advantage of the invention may allow for seamless playback of one or more media files stored on the computing device and provided by one or more devices coupled to the computing device. Further, the media player application may be configured to provide data to allow for continuous output without any delay for conceivable periods of 29,000 years based on the ability to manage billions of media files. In that fashion, one or more media files may be played continuously.
Computing device 300 may be configured to interoperate with one or more external devices for playback of media files stored on the external devices (e.g., portable hard drives, removable memory, portable media players, etc.). In certain embodiments, device 300 may be configured to wirelessly receive one or more media files from a computing device via I/O interface 315. I/O interface 315 may include one or more ports for receiving media data, including ports for removable memory. In another embodiment, computing device 300 may include one or more optical drives, shown as optional optical drive 330, which may be configured to detect and decode one or more media files stored on a disc (e.g., CD, DVD™, Blu-ray™, etc.).
In yet another embodiment, computing device 300 may include optional cache memory 335 for storage of media data, including buffering media data during playback and for pre-loading media data. Although depicted separately, cache memory 335 may be provided by one of processor 305 and memory 310.
Referring now to
Following detection of a user selection at block 405, the computing device may then initiate playback of the user selection at block 410, wherein a first media file is played. Playback by the media player application may include output of audio and/or video data depending on the type of media. In one exemplary embodiment, playback may include a graphical display associated with output levels of audio data. In another embodiment, a visual display and associated audio data may be output based on video data.
In one embodiment, playback at block 410 may include loading a first media file, reading at least a portion of the media data in to a buffer, and turning the media player application on for playback at pre-described audio characteristics (e.g., bit depth, bit rate, etc.) Further, playback of block 410 may include converting and sending audio data to the media player application.
At block 415, the media player application may determine a time period for pre-loading a second media file during playback of the first media file. In one embodiment, the time period for pre-loading is based on the duration of the first media file. For example, the computing device may determine a time period, such as five seconds prior to the endpoint (e.g., termination) of the first media file. Alternatively, when a first media file is relatively short, or when a second media file to be played requires additional time for buffering, the time period may be adjusted. In certain embodiments, when the media file is less than five seconds, the entire media file may be pre-loaded. In addition, a subsequent media file would then be pre-loaded. In one embodiment, the time period may range between one and ten seconds prior to the endpoint. The computing device may determine this time period during loading of a media file and/or during playback of a media file. The time period for pre-loading may be heuristically determined based on one or more of computer speed, network speed, drive speed, etc.
Selection of a media file by the media player application may be based on one or more sources selected by the user and may further be selected based on one or more user preferences. The media player application may be configured to store user preferences for determining media files to subsequently load. Similarly, the media player application can select one or more media files based on media file type (e.g., audio, video, etc.).
At block 420, the application of the computing device may then load data for a second media file at the time period determined at block 405. This pre-loaded data may relate to only a portion of the second media file. In one embodiment, a buffer portion is pre-loaded, the buffer portion relating to only the initial period of the playback for the second media file. As will be discussed in more detail below with reference to
At block 425, the application can initiate playback of the second media file following termination of the first media file. By initiating data for the second media file, a seamless transition may be provided for playback wherein data from the second file is played immediately following the first media file without a delay between output of the media file data. In certain embodiments, initiating playback of the second media file at block 425 may be based on the media player application that is already on as described above with reference to block 410. Playback at block 425 may additionally include converting and sending media data to an already prepared media player application. The application can then continue playback of the second media file following termination of the buffer period at block 430. By way of example, the second media file may be loaded after the endpoint of the first media file and during playback of the previously decoded buffer portion. The remaining portion of the second media file may then be output seamlessly following the buffer portion. Accordingly, media files may be seamlessly output by the computing device.
One advantage of the invention over conventional methods may be that the media player application can continue process 400 without requiring user selection and placement of files to provide seamless playback. The media player application may be configured to play media files from different sources. Accordingly process 400 may include obtaining a first media file stored on the computing device, and a second media file stored on a second device separate and distinct from the computing device, such as devices via wide area network (WAN), a mobile device, etc. According to yet another embodiment, the first and second media files may relate to different types of file data. For example, the first media file can relate to audio data, and the second media file can relate to video data. Further, when media data is selected by the user, the media player can continue to select additional tracks from user specified locations until stopped by the user. According to another embodiment, media files may be randomly selected based on one or more libraries identified by the user.
Another advantage of the media player application may be conversion of media files to a standard file format by the application, wherein the first and second media files are associated with different file formats. For audio data, media files may be converted to a single audio format, such as 16 bit data at 44.1 kHz stereo by the media player application. This can facilitate providing continuous data and removing possible sources of delay during playback. In certain embodiment, it may be required to convert media files to a single output stream to allow for playback of an audio device. Although not shown in
Referring now to
As depicted in
Referring now to
Once playback of the first media file has completed, the media player may initiate playback of the buffer portion of the second media file as shown in
Although
Referring now to
Referring now to
Referring now to
Referring now to
Playback engine 810 may allow for buffering of subsequent media tracks, and output of sound to a device. In one embodiment playback engine 810 may be configured to request data from playback manager 805, and may further be configured to operate in linear time for loading one or more media files. Pre-load thread 815 may be configured to open media files to determine a format and type. Based on the format and type, pre-load thread 815 can also notify playback manager 805 when an open file is completed.
While this invention has been particularly shown and described with references to exemplary embodiments thereof, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the scope of the invention encompassed by the appended claims.