Systems and methods for displaying a simplified version of a modification of a media content item on a mobile device are provided. The mobile device can receive, via a user interface presented on the mobile device, a request for a desired modification of an original media content item. The mobile device can perform a simplified version of the desired modification of the original media content item. The mobile device can present a preview of the modified media content item in the user interface. The mobile device can transmit, to another computing device, the original media content item with the request for the desired modification.
|
8. A mobile device comprising: a display device to present a user interface (ui) of an application running on the mobile device, the ui comprising a preview area, and an enhancement ui element presented alongside the preview area, wherein the preview area includes a media player to play an original video, and the enhancement ui element is selectable to view a plurality of modifications available for performing on the original video presented in the preview area of the ui, wherein the plurality of modifications available for performing on the original video are not displayed in the ui until the enhancement ui element is selected;
a memory; and
a processor, coupled with the display device and the memory, to:
responsive to a user selection of the enhancement ui element, display, in the ui of the application, the plurality of modifications available for performing on the original video presented in the preview area of the ui;
play, by the media player in the preview area of the ui, the original video;
receive, via the ui, a selection of a first desired modification from the plurality of modifications, the first desired modification to be performed on the original video on another computing device;
in response to receiving the selection and prior to transmitting a request for performing any of the plurality of modifications on the original video to the other computing device:
perform a simplified version of the first desired modification on the original video locally, wherein performing the simplified version of the first desired modification on the original video locally involves less computing resources than performing the desired modification of the original video on the other computing device;
play, by the media player in the preview area of the ui, the original video on which the simplified version of the first desired modification was performed, and receiving a selection of a second desired modification from the plurality of modifications while playing the original video on which the simplified version of the first desired modification was performed, the second desired modification to be performed on the original video on the other computing device; and
play, by the media player in the preview area of the ui, the original video on which the first and second simplified modifications were performed; and
transmit, to the other computing device, the original video with the request for the first or second desired modification to be performed on the original video.
1. A computer-implemented method, comprising:
displaying, on a screen of a mobile device, a user interface (ui) of an application running on the mobile device, the ui comprising a preview area and an enhancement ui element presented alongside the preview area, wherein the preview area includes a media player to play an original video, and the enhancement ui element is selectable to view a plurality of modifications available for performing on the original video presented in the preview area of the ui, wherein the plurality of modifications available for performing on the original video are not displayed in the ui until the enhancement ui element is selected;
responsive to a user selection of the enhancement ui element, displaying, in the ui of the application, the plurality of modifications available for performing on the original video presented in the preview area of the ui;
playing, by the media player in the preview area of the ui, the original video;
receiving, via the ui, a selection of a first desired modification from the plurality of modifications, the first desired modification to be performed on the original video on another computing device;
in response to receiving the selection and prior to transmitting a request for performing any of the plurality of modifications on the original video to the other computing device:
performing, by a processing device of the mobile device, a simplified version of the first desired modification on the original video locally, wherein performing the simplified version of the first desired modification on the original video locally involves less computing resources than performing the desired modification of the original video on the other computing device;
playing, by the media player in the preview area of the ui, the original video on which the simplified version of the first desired modification was performed, and receiving a selection of a second desired modification from the plurality of modifications while playing the original video on which the simplified version of the first desired modification was performed, the second desired modification to be performed on the original video on the other computing device; and
playing, by the media player in the preview area of the ui, the original video on which the first and second simplified modifications were performed; and
transmitting, to the other computing device, the original video with the request for the first or second desired modification to be performed on the original video.
15. A non-transitory computer readable storage medium encoding instructions thereon that, in response to execution by a processor, cause the processor to perform operations comprising:
displaying, on a screen of a mobile device, a user interface (ui) of an application running on the mobile device, the ui comprising a preview area and an enhancement ui element presented alongside the preview area, wherein the preview area includes a media player to play an original video, and the enhancement ui element is selectable to view a plurality of modifications available for performing on the original video presented in the preview area of the ui, wherein the plurality of modifications available for performing on the original video are not displayed in the ui until the enhancement ui element is selected;
responsive to a user selection of the enhancement ui element, displaying, in the ui of the application, the plurality of modifications available for performing on the original video presented in the preview area of the ui;
playing, by the media player in the preview area of the ui, the original video;
receiving, via the ui, a selection of a first desired modification from the plurality of modifications, the first desired modification to be performed on the original video on another computing device;
in response to receiving the selection and prior to transmitting a request for performing any of the plurality of modifications on the original video to the other computing device:
performing a simplified version of the first desired modification on the original video locally, wherein performing the simplified version of the first desired modification on the original video locally involves less computing resources than performing the desired modification of the original video on the other computing device;
playing, by the media player in the preview area of the ui, the original video on which the simplified version of the first desired modification was performed, and receiving a selection of a second desired modification from the plurality of modifications while playing the original video on which the simplified version of the first desired modification was performed, the second desired modification to be performed on the original video on the other computing device; and
playing, by the media player in the preview area of the ui, the original video on which the first and second simplified modifications were performed; and
transmitting, to the other computing device, the original video with the request for the first or second desired modification to be performed on the original video.
2. The method of
3. The method of
4. The method of
5. The method of
6. The method of
7. The method of
9. The mobile device of
10. The mobile device of
11. The mobile device of
12. The mobile device of
13. The mobile device of
14. The mobile device of
16. The non-transitory computer readable storage medium of
17. The non-transitory computer readable storage medium of
18. The non-transitory computer readable storage medium of
19. The non-transitory computer readable storage medium of
20. The non-transitory computer readable storage medium of
21. The non-transitory computer readable storage medium of
|
This application claims priority to U.S. Non-Provisional patent application Ser. No. 13/842,533, filed Mar. 15, 2013 which claims priority to U.S. Provisional Patent Application No. 61/720,929, filed Oct. 31, 2012, both of which are herein incorporated by reference.
Implementations of the present disclosure relate to a media content item editing system, and more specifically, to simulating a media content item enhancement on a mobile device.
Many people record video on their mobile devices and share those videos with others. In many cases, these videos could benefit from modifications that alter the appearance of the video or improve visual and aural qualities of the video. Editing video content, however, can require considerable computing power and current technologies do not allow for meaningful video enhancements to be performed on mobile devices. Therefore, many videos are uploaded from mobile devices to a content hosting service without any enhancements.
In some implementations, a computer-implemented method to present simulations of enhanced media content items on mobile devices is presented. The method includes receiving, via a user interface presented on a mobile device, a request for a desired modification of an original media content item. The method further includes performing, at the mobile device, a simplified version of the desired modification of the original media content item. The method also includes presenting a preview of a modified media content item in the user interface. The method also includes transmitting, to another computing device, the original media content item with the request for the desired modification.
In another implementation, the method includes performing the simplified version of the desired modification of the media content item at substantially the same time as the receipt of the request for the desired modification via the user interface.
In yet another implementation, the method includes receiving, via the user interface, a confirmation of the request for the desired modification of the original media content item.
In a further implementation, the method includes receiving the media content item with the desired modification from the another computing device and display the media content item with the desired modification in the user interface.
In some implementations, an apparatus includes means for receiving, via a user interface presented on a mobile device, a request for a desired modification of an original media content item. The apparatus also includes means for performing, at the mobile device, a simplified version of the desired modification of the original media content item. The apparatus further includes means for presenting a preview of a modified media content item in the user interface. The apparatus also includes means for transmitting, to another computing device, the original media content item with the request for the desired modification.
In another implementation, the apparatus includes means for receiving, via the user interface, a confirmation of the request for the desired modification of the original media content item.
In other implementations, an apparatus includes means for performing the simplified version of the desired modification of the media content item at substantially the same time as the receipt of the request for the desired modification via the user interface.
In another implementation, an apparatus includes means for receiving the media content item with the desired modification from the another computing device and means for displaying the media content item with the desired modification in the user interface.
In additional implementations, computing devices for performing the operations described above are also implemented. Further, in some implementations, a computer readable storage medium is provided to store instructions causing a processing device to perform the operations described above.
For illustrative purposes, the description below is applicable to video, but the systems, apparatuses and methods described herein can similarly be applicable to any type of media content item, including audio, images, video, or any combination thereof.
The present disclosure is illustrated by way of example, and not by way of limitation, and will become apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
Described herein is a mechanism for presenting simulations of enhanced videos on mobile devices. Conventionally, stationary computers perform video editing because they can have increased computing resources when compared to mobile devices. Such stationary computers can include desktop computers and servers. Users typically capture videos using mobile devices because they are more portable than stationary computers. Once users capture videos on their mobile devices, they transfer the captured videos from their mobile devices to stationary computers where the videos can then be viewed, edited and shared.
Some mobile devices can perform very basic video editing, but usually mobile devices have limited capabilities for enhancement. For instance, video stabilization modifications tend to yield better results when utilizing more powerful machines and processors that are not available on mobile devices. Even for mobile devices that may have sufficient computing resources to perform video enhancements, video edits typically consume computing resources and battery life at a high rate, thereby negatively impacting the performance and usability of the mobile devices. When video enhancements are performed over a network (e.g., on a cloud), a preview of the enhanced video on the mobile device is delayed due to time required for uploading the video to the cloud, waiting for the cloud to complete the enhancement operations, and downloading the modified video to the mobile device so it could be viewed as a preview before the user decides whether to keep the modification.
Implementations of the present disclosure address the above deficiencies of conventional systems by performing simplified enhancements of a video on a mobile device and presenting a preview of the resulting enhanced video on the mobile device. For example, a mobile device can receive a request for a desired enhancement of an original video. The mobile device can perform a simplified version of the desired enhancement of the original video, and present a preview of the resulting enhanced video in a user interface. The mobile device can then transmit, to a server, the video with the request for the desired enhancement.
Performing a simplified video enhancement can require less computing resources than performing a complete (non-simplified) video enhancement. For example, complete video enhancement can be a frame-by-frame color correction that includes applying filters over multiple passes, and simplified video enhancement can be a simple color oversaturation. The mobile device can modify the video using the simplified video enhancement almost immediately after receiving the request for the desired enhancement. Accordingly, the present disclosure provides an efficient and convenient mechanism that allows users to quickly see a simplified enhancement of a video and decide whether a complete enhancement of the video is desirable. In particular, implementations of the present disclosure enable users to quickly preview simplified enhancements to videos on their mobile devices while letting a more powerful machine perform the complete enhancements. This allows a user to take advantage of the ease of use and portability of a mobile device for requesting a desired enhancement without negatively impacting performance of the mobile device.
In the following description, numerous details are set forth. It will be apparent, however, to one skilled in the art, that the present disclosure may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present disclosure.
The term “video” is used herein for illustrative purposes only, and the present disclosure can also be applied to any type of media content item, such as audio, images, digital movies, digital photos, digital music, website content, social media updates, electronic books (ebooks), electronic magazines, digital newspapers, digital audio books, electronic journals, web blogs, real simple syndication (RSS) feeds, electronic comic books, software applications, or other media content.
The mobile device 101 can be a portable computing device, such as, and not limited to, cellular telephones, personal digital assistants (PDAs), portable media players, netbooks, laptop computers, an electronic book reader or a tablet computer (e.g., that includes a book reader application), and the like. The mobile device 101 can receive a media item, such as a digital video or a digital movie from the data store 107. The mobile device 101 can run an operating system (OS) that manages hardware and software of the mobile device 101.
The data store 107 can store media items, such as, and not limited to, digital video, digital movies, etc. Media items can be received from any source, including components of the mobile device 101, a server machine 115, another mobile device 101, etc. For example, the data store can store a digital video captured by a video camera of a mobile device 101. The data store 107 can be a persistent storage that is capable of storing data. A persistent storage unit can be a local storage unit or a remote storage unit. Persistent storage units can be a magnetic storage unit, optical storage unit, solid state storage unit, electronic storage units (main memory), or similar storage unit. Persistent storage units can be a monolithic device or a distributed set of devices. A ‘set’, as used herein, refers to any positive whole number of items. The data store 107 can be internal to the mobile device 101 or external to the mobile device 101 and accessible by the mobile device 101 via a network. As will be appreciated by those skilled in the art, in some implementations data store 107 may be a network-attached file server or a cloud-based file server, while in other implementations data store 107 might be some other type of persistent storage such as an object-oriented database, a relational database, and so forth.
Server machine 115 can be a rack mount server, a router computer, a personal computer, a portable digital assistant, a laptop computer, a desktop computer, a media center, a tablet, a stationary machine, or any other computing device capable of performing enhancements of videos.
In one implementation, the mobile device 101 uses a video preview module 103 to perform a simplified version of a desired video modification and present a preview of the resulting video. An example video preview module 103 is discussed in more detail below in conjunction with
In one implementation, the user can view the resulting video to decide whether to proceed with the complete (non-simplified) modification of the video and can submit a confirmation of the request for the desired modification. In this implementation, once the video preview module 103 receives the confirmation, the mobile device 101 can transmit the video to server machine 115, along with the request for the desired modification of the video.
The server machine 115 can receive the video and the request for the desired modification of the video. Server machine 115 can include video modifier 117 to perform the desired modification of the video that the user requested via the mobile device 101. Server machine 115 can include a content hosting service, for example, that can process or generate the modification of the video. Once the modification of the video is complete, server machine 115 can make the modified video available for viewing by others (e.g., on the content hosting service's website). Alternatively, the mobile device 101 can upload the video to a personal computer, laptop or other “non-cloud device” for performing the modification. Once the modification is performed, these devices can publish the video such that it is viewable at least to the mobile device via a wired or wireless protocol, such as a local network, Bluetooth, Wi-Fi, the internet, etc.
In an example, a user desires to enhance the color of a leopard in a video. The mobile device 101 can execute an algorithm to perform a simplified version of a color enhancement to the leopard, which can be a simple oversaturation filter that changes the colors of the video. Conversely, to perform the complete modification, the server machine 115 can use a much more detailed and complex algorithm to alter the colors of the leopard video. The server machine 117 can also use reference videos to identify the best color match for the leopard. The server machine 117, for example, can use a video hosting service to identify one or more reference videos of leopards and determine color characteristics of the leopards in the reference videos. To enhance the video, the server machine 117 can match the color of the leopard in the video with those in the reference videos.
The desired modification can be any alteration or enhancement to the video. The desired modification, for example, can be an operation intended to augment, alter, or modify the objective quality or subjective artistic value of the video. Any number of modifications can be available to a user. A modification can include filters that modify the appearance of the video. Filters can adjust or augment colors, saturation, contrast, brightness, tint, focus, and exposure and can also add effects such as framed borders, color overlay, blur, sepia, lens flares, etc. Other modifications can be spatial transformations, such as cropping or rotation that can alter a spatial property of the video, such as size, aspect ratio, height, width, rotation, angle, etc. Other modifications can be simulations of photographic processing techniques (e.g., cross process, High Dynamic Range (HDR), HDR-ish), simulation of particular cameras models (e.g., lomo, holga), or the styles of particular photographers/cinematographers (e.g., Orton, orton-ish). Examples of static modifications may include cross process, cinemascope, adding audio and a mix level for the audio, erasure of specific audio (e.g., removing a song from the video recording), or addition of sound effects, etc. Examples of dynamic modifications can include identifying filters and randomizing inputs (e.g. intensity of effect) over course of the video, filters using inferred depth map info (e.g., foreground color with background black & white, foreground in focus with background blur), speed up, slow down, tilt-shift simulation, adding a frame outside the video (e.g., video inside an old TV with moving dials), superimposing things on top of video (e.g. Ryan Gosling, James Van Der Beek), overlaying items on people's faces (e.g. hats, mustaches, etc) that can move with the people in the video, selective focus, miniature faking, tilted focus, adjusting for rotation, 2D to 3D conversion, etc. Other examples include modifications where the user provides little or no input other than clicking an “I'm feeling lucky,” “Magic enhancement” or “Magic adjustment” button.
In some implementations, the video preview module 103 can automatically perform a simplified version of the modification of the video. Once the user designates a desired modification in the user interface as being an automatic modification, video preview module 103 can automatically modify the video with no further action from the user. An automatic modification requires no additional input, settings or manual adjustment from the user. For example, the user can select a sepia tone filter as an automatic modification. Each subsequent video received by the mobile device 101 can have the sepia filter applied automatically.
In some implementations, the user can preview a video modified using a simplified modification algorithm, and may request that all subsequent videos be modified using a corresponding regular (non-simplified) modification algorithm. In those implementations, the above modification is designated as automatic, and all subsequent videos are automatically sent to the server with a request to perform the above modification. Alternatively, a simplified version of the above modification algorithm can be performed on each subsequent video and a preview of the resulting modified video can be presented to the user. The user can then request an additional modification, which can be performed using a simplified algorithm and provided as a preview or it can be sent to the server to be performed remotely. One example of such additional modification can be a trim operation that the user can request using a “trim” menu providing the user with an option to trim the size, aspect ratio, duration, etc. of the video.
In one implementation, mobile device 101 includes a video capture module (not shown) that can record, obtain, import, or otherwise capture video. The video capture module can be, for example, an image sensor, camera, video camera, or a combination thereof. Videos captured by video capture module can be modified, as described herein.
The video preview module 200 can be coupled to one or more data stores 107 that store online media items. Data store 107 can receive a media item from another module or component of the mobile device 101, such as from a video capture module or from a camera. In another implementation, data store 107 receives a media item from another mobile device 101 or from a remote storage, such as from a media hosting server.
The video preview module 200 can also be coupled to an enhancement module store 221 that can include algorithms for performing one or more simplified modifications to a video. Data store 107 and enhancement module store 221 can be persistent storage units, as described herein.
GUI 205 can be a user interface allowing a user to interact with a mobile device 101. GUI 205 can include one or more user interface tools. As the term is used herein, a user interface tool refers to any single graphical instrument or combination of graphics controls that permit a user to input information to a computer system. Common conventional user interface tools include visual output for one or more buttons, text boxes, scroll bars, pictures, spin dials, list boxes, search boxes, select options, etc.
GUI 205 can present videos to a user and can receive input from the user. Through GUI 205, video preview module 200 can receive a request for a desired modification of a video from the user. For example, the GUI 205 can present an option or menu for selecting a desired modification of the video. Using the option or menu, the user can request a desired modification of the video. The desired modification can include one or more enhancements to the video, such as color correction, stabilization, trim, and others as described herein.
In addition to providing interface tools, GUI 205 can also be configured to present a preview of the modified video that has been generated by the video modifier 210. By viewing the modified video, the user can decide whether to confirm the request for the desired modification of the video. GUI 205 can also be configured to receive a confirmation of the request for the desired modification of the video and can forward the confirmation to the video transmitter 215. Examples of other data that can be presented by GUI 205 are described in further detail in conjunction with
The video modifier 210 can use the request for the desired modification of the video to perform a simplified version of the modification of the video. The video modifier 210 can modify the video according to a simplified algorithm. The simplified algorithm can be optimized for mobile devices, such that executing the simplified algorithm consumes minimal resources (e.g. computing power, battery life, memory, etc.) of the mobile device. By performing the simplified algorithm, the video modifier 210 can generate an approximation of how the complete modification may alter or change the appearance of the video. For example, a complete modification can adjust the brightness of a video. To use less computing resources, a simplified modification can include adjusting portions of the video that are most likely to show a change in brightness. With the simplified modification, black portions of the video might not be modified because they can be less likely to show the change in brightness than in other colors.
In one implementation, the video modifier 210 can perform the simplified version of the desired modification of the video almost immediately after the GUI 205 receives the request. In this manner, the GUI 205 can present a preview of the resulting modified video to the user in real time. Similarly, GUI 205 can begin playing the modified video and can receive one or more requests for a desired modification from the user at substantially the same time. This enables a user to quickly preview different modifications to the video and decide which of these modifications are likely to produce the result desired by the user.
The video transmitter 215 can transmit the video to another device, such as a server, with the request for the desired modification. For example, when the user activates an “Upload” GUI button on the GUI 205, video transmitter 215 can transmit the video to a server or system of distributed servers (e.g. the “cloud”), or a content hosting service. The video transmitter 215 can also upload the video to a personal computer, a laptop, or other device with computing power sufficient to perform the actual video enhancement.
In one implementation, in order to expedite the complete modification of the video in anticipation of the user's conformation of the original modification request, the mobile device 101 can start uploading the video to the server in parallel with, or prior to, presenting the preview of the video modified with a simplified algorithm. For example, the video can be uploaded 99%, and the final 1% can be uploaded when the GUI 205 receives the user's conformation of the original modification request, such as through an “upload” button. This enables a better user experience because the user waits less time for the video to upload and for the complete modification to process.
Video preview area 320 can present a preview of the resulting video modified using a simplified enhancement algorithm. The preview can be in any format and in any aspect ratio. If the user is satisfied with the modifications to the video, the user can provide a confirmation of the request for the desired modification of the video, such as via upload button 350.
At block 405 of method 400, processing logic receives a video. Processing logic can receive the video from any source or device, and via any network. At block 410, processing logic receives, via a user interface presented on a mobile device, a request for a desired modification of a video. The modification can be any change to the visual or audio features of the video, as described herein. Using the modification request, at block 415 processing logic performs, at the mobile device, a simplified version of the desired modification of the video. At block 420, processing logic presents the modified video in the user interface. At block 425, processing logic can receive, via the user interface, a confirmation of the request for the desired modification of the video. Processing logic can transmit, to a server, the video with the request for the desired modification at block 430. In one implementation, processing logic transmits the video with the request for the desired modification to the server in response to the confirmation.
In another implementation, processing logic can receive the video with the desired modification at block 435. The desired modification can have been performed by another device or system. Processing logic can present the video with the desired modification in the user interface. For example, a user can record a video on a mobile device, select one or more enhancements to the video and upload the video to a video sharing website. Servers at the video sharing website can perform the enhancements and can store the modified or enhanced video. Once processing logic receives the video with the desired modification, it can present the modified video in the user interface.
The example computing system 500 includes a processing device 502, a main memory 504 (e.g., read-only memory (ROM), flash memory, dynamic random access memory (DRAM) (such as synchronous DRAM (SDRAM) or DRAM (RDRAM), etc.), a static memory 506 (e.g., flash memory, static random access memory (SRAM), etc.), and a data storage device 518, which communicate with each other via a bus 530.
Processing device 502 represents one or more general-purpose processing devices such as a microprocessor, central processing unit, or the like. More particularly, the processing device may be complex instruction set computing (CISC) microprocessor, reduced instruction set computer (RISC) microprocessor, very long instruction word (VLIW) microprocessor, or processor implementing other instruction sets, or processors implementing a combination of instruction sets. Processing device 502 may also be one or more special-purpose processing devices such as an application specific integrated circuit (ASIC), a field programmable gate array (FPGA), a digital signal processor (DSP), network processor, or the like. Processing device 502 can be configured to execute the video preview module 103 for performing the operations and steps discussed herein.
Computing system 500 may further include a network interface device 508. Computing system 500 also may include a video display unit 510 (e.g., a liquid crystal display (LCD) or a cathode ray tube (CRT)), an alphanumeric input device 512 (e.g., a keyboard), a cursor control device 514 (e.g., a mouse), a touch control device 515 (e.g., a touch sensitive device that can receive simple or multi-touch gestures) and a signal generation device 516 (e.g., a speaker).
Additionally, the machine may include an image sensing module, an image capture device, a hardware media encoder/decoder and/or a graphics processor (GPU). The image sensing module can include an image sensor. An image sensor is a device that converts an optical image or images into an electronic signal. The image sensor can be a camera, CMOS, CCD. The image sensor can capture still images or motion pictures (video).
Data storage device 518 may include a machine-readable storage medium (or more specifically a computer-readable storage medium) 520 having one or more sets of instructions (e.g., video preview module 103) embodying any one or more of the methodologies of functions described herein. The video preview module 103 may also reside, completely or at least partially, within main memory 504 and/or within processing device 502 during execution thereof by computing system 500; main memory 504 and processing device 502 also constituting machine-readable storage media.
Machine-readable storage medium 520 may also be used to store the device queue manager logic persistently. While machine-readable storage medium 520 is shown in an exemplary implementation to be a single medium, the term “machine-readable storage medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, and/or associated caches and servers) that store the one or more sets of instructions. The term “machine-readable storage medium” shall also be taken to include any medium that is capable of storing or encoding a set of instruction for execution by the machine and that causes the machine to perform any one or more of the methodologies of the present disclosure. The term “machine-readable storage medium” shall accordingly be taken to include, but not be limited to, solid-state memories, and optical and magnetic media.
The components and other features described herein can be implemented as discrete hardware components or integrated in the functionality of hardware components such as ASICs, FPGAs, DSPs or similar devices. In addition, these components can be implemented as firmware or functional circuitry within hardware devices. Further, these components can be implemented in any combination of hardware devices and software components.
Some portions of the detailed description have been presented in terms of algorithms and symbolic representations of operations on data bits within a computer memory. These algorithmic descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of steps leading to a desired result. The steps are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. Unless specifically stated otherwise as apparent from the following discussion, it is appreciated that throughout the description, discussions utilizing terms such as “capturing”, “performing”, “causing”, “encoding”, “storing,” “receiving,” “assigning,” “generating,” “presenting,” “transmitting,” “obtaining,” “displaying,” or the like, may refer to the actions and processes of a machine, a computer system, or similar electronic computing device, that manipulates and transforms data represented as physical (e.g., electronic) quantities within the machine's registers and memories into other data similarly represented as physical quantities within the machine memories or registers or other such information storage, transmission or display devices.
The words “example” or “exemplary” are used herein to mean serving as an example, instance, or illustration. Any aspect or design described herein as “example’ or “exemplary” is not necessarily to be construed as preferred or advantageous over other aspects or designs. Rather, use of the words “example” or “exemplary” is intended to present concepts in a concrete fashion. As used in this application, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or”. That is, unless specified otherwise, or clear from context, “X includes A or B” is intended to mean any of the natural inclusive permutations. That is, if X includes A; X includes B; or X includes both A and B, then “X includes A or B” is satisfied under any of the foregoing instances. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
For simplicity of explanation, the methods have been depicted and described as a series of acts. However, acts in accordance with this disclosure can occur in various orders and/or concurrently, and with other acts not presented and described herein. Furthermore, not all illustrated acts may be required to implement the methods in accordance with the disclosed subject matter. In addition, those skilled in the art will understand and appreciate that the methods could alternatively be represented as a series of interrelated states via a state diagram or events. Additionally, it should be appreciated that the methods disclosed in this specification are capable of being stored on an article of manufacture (e.g., a computer readable storage medium) to facilitate transporting and transferring such methods to computing devices. The term article of manufacture, as used herein, is intended to encompass a computer program accessible from any computer-readable device or storage media.
It is to be understood that the above description is intended to be illustrative, and not restrictive. Many other implementations will be apparent to those of skill in the art upon reading and understanding the above description. The scope of the invention should, therefore, be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled.
Although the operations of the methods herein are shown and described in a particular order, the order of the operations of each method may be altered so that certain operations may be performed in an inverse order or so that certain operation may be performed, at least in part, concurrently with other operations. In another implementation, instructions or sub-operations of distinct operations may be in an intermittent and/or alternating manner.
Reference throughout this disclosure to “one implementation,” or “an implementation” means that a particular feature, structure, or characteristic described in connection with the implementation or implementation is included in at least one implementation. Thus, the appearances of the phrase “in one implementation,” or “in an implementation” in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.
Implementations also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes or it may comprise a general purpose computer selectively activated or reconfigured by a computer program stored in the computer. Such a computer program may be stored in a computer readable storage medium, such as, but not limited to, any type of disk including floppy disks, optical disks, CD-ROMs and magnetic-optical disks, read-only memories (ROMs), random access memories (RAMs), EPROMs, EEPROMs, magnetic or optical cards, flash memory devices including universal serial bus (USB) storage devices (e.g., USB key devices) or any type of media suitable for storing electronic instructions, each of which may be coupled to a computing system bus.
The methods and systems described herein can be used in a wide variety of implementations, including as part of a mobile application (“app”), and can be part of photo or video-related software including a mobile operating system. Apps installed on the mobile device can access the systems and methods via one or more application programming interface (API).
The algorithms and displays presented herein are not inherently related to any particular computing system or other apparatus. Various general purpose systems may be used with programs in accordance with the teachings herein or it may prove convenient to construct more specialized apparatus to perform the required method steps. The required structure for a variety of these systems will be apparent from the description above. In addition, the present disclosure is not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the disclosure as described herein.
Gregg, John, Nix, Molly Castle, Kelly, Damien, Morse, Reed G A, Rhodes, Christopher Peter, Doshi, Rushabh Ashok, Toff, Jason, Tabak, Joshua Abraham
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
5682326, | Aug 03 1992 | AUTODESK, Inc | Desktop digital video processing system |
6043845, | Aug 29 1997 | LOGITECH EUROPE, S A | Video capture and compression system and method for composite video |
7974485, | Oct 27 2005 | Nvidia Corporation | Split-frame post-processing in a programmable video pipeline |
8768142, | Jan 26 2012 | Ambarella International LP | Video editing with connected high-resolution video camera and video cloud server |
20060263038, | |||
20080069458, | |||
20080304562, | |||
20090070675, | |||
20090100050, | |||
20100259645, | |||
20100295805, | |||
20100312833, | |||
20110161076, | |||
20110311199, | |||
20120001934, | |||
20120190388, | |||
20120215539, | |||
20120246114, | |||
20130002674, | |||
20130136379, | |||
20130286280, | |||
20140071045, | |||
CN101610395, | |||
CN102479032, | |||
JP2003199031, | |||
JP2004326534, | |||
WO146955, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Mar 18 2013 | TABAK, JOSHUA ABRAHAM | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 18 2013 | DOSHI, RUSHABH ASHOK | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 18 2013 | KELLY, DAMIEN | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 18 2013 | GREGG, JOHN | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 18 2013 | MORSE, REED | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 19 2013 | TOFF, JASON | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 19 2013 | NIX, MOLLY CASTLE | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Apr 03 2013 | RHODES, CHRISTOPHER PETER | Google Inc | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 041479 | /0073 | |
Mar 06 2017 | GOOGLE LLC | (assignment on the face of the patent) | / | |||
Sep 29 2017 | Google Inc | GOOGLE LLC | CHANGE OF NAME SEE DOCUMENT FOR DETAILS | 044129 | /0001 |
Date | Maintenance Fee Events |
Apr 22 2024 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Date | Maintenance Schedule |
Oct 20 2023 | 4 years fee payment window open |
Apr 20 2024 | 6 months grace period start (w surcharge) |
Oct 20 2024 | patent expiry (for year 4) |
Oct 20 2026 | 2 years to revive unintentionally abandoned end. (for year 4) |
Oct 20 2027 | 8 years fee payment window open |
Apr 20 2028 | 6 months grace period start (w surcharge) |
Oct 20 2028 | patent expiry (for year 8) |
Oct 20 2030 | 2 years to revive unintentionally abandoned end. (for year 8) |
Oct 20 2031 | 12 years fee payment window open |
Apr 20 2032 | 6 months grace period start (w surcharge) |
Oct 20 2032 | patent expiry (for year 12) |
Oct 20 2034 | 2 years to revive unintentionally abandoned end. (for year 12) |