U.S. patent application number 13/361932 was filed with the patent office on 2013-05-16 for reference clips in a media-editing application.
The applicant listed for this patent is Giovanni Agnoli, Kenneth M. Carson, Brian Meaney, Colleen Pendergast, Shaun M. Poole. Invention is credited to Giovanni Agnoli, Kenneth M. Carson, Brian Meaney, Colleen Pendergast, Shaun M. Poole.
Application Number | 20130124999 13/361932 |
Document ID | / |
Family ID | 48280753 |
Filed Date | 2013-05-16 |
United States Patent
Application |
20130124999 |
Kind Code |
A1 |
Agnoli; Giovanni ; et
al. |
May 16, 2013 |
REFERENCE CLIPS IN A MEDIA-EDITING APPLICATION
Abstract
Some embodiments provide a media-editing application. The
application defines a reference clip data structure for a media
clip that represents one or more media files imported into the
media-editing application. The application receives a command to
add the media clip into a composite media presentation. The
application defines a clip instance data structure as part of the
composite media presentation. The clip instance data structure
inherits properties of the reference clip data structure and
subsequent modifications to the reference clip data structure
affect the clip instance data structure.
Inventors: |
Agnoli; Giovanni; (San
Mateo, CA) ; Poole; Shaun M.; (Palo Alto, CA)
; Carson; Kenneth M.; (Mill Valley, CA) ;
Pendergast; Colleen; (Livermore, CA) ; Meaney;
Brian; (Livermore, CA) |
|
Applicant: |
Name |
City |
State |
Country |
Type |
Agnoli; Giovanni
Poole; Shaun M.
Carson; Kenneth M.
Pendergast; Colleen
Meaney; Brian |
San Mateo
Palo Alto
Mill Valley
Livermore
Livermore |
CA
CA
CA
CA
CA |
US
US
US
US
US |
|
|
Family ID: |
48280753 |
Appl. No.: |
13/361932 |
Filed: |
January 30, 2012 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
61559710 |
Nov 14, 2011 |
|
|
|
Current U.S.
Class: |
715/723 |
Current CPC
Class: |
G11B 27/034 20130101;
H04N 21/47205 20130101; G11B 27/031 20130101; H04N 21/2743
20130101; H04N 5/262 20130101; H04N 21/8549 20130101; H04N 21/21805
20130101; G11B 27/34 20130101; H04N 7/17336 20130101; G11B 27/10
20130101; G11B 27/28 20130101 |
Class at
Publication: |
715/723 |
International
Class: |
G06F 17/24 20060101
G06F017/24; G06F 3/01 20060101 G06F003/01 |
Claims
1. A computer readable medium storing a media-editing application
for execution by at least one processing unit, the media-editing
application comprising sets of instructions for: defining a
reference clip data structure for a media clip that represents one
or more media files imported into the media-editing application;
receiving a command to add the media clip into a composite media
presentation; and defining a clip instance data structure as part
of the composite media presentation, wherein the clip instance data
structure inherits properties of the reference clip data structure
and subsequent modifications to the reference clip data structure
affect the clip instance data structure.
2. The computer readable medium of claim 1, wherein the reference
clip data structure comprises a plurality of clip structures that
each comprises an ordered sequence of media clips.
3. The computer readable medium of claim 2, wherein the clip
instance data structure comprises a variable identifying one of the
ordered sequences of media clips in the reference clip data
structure.
4. The computer readable medium of claim 3, wherein the
media-editing application further comprises a set of instructions
for rendering the composite media presentation by using the
identified ordered sequence of media clips.
5. The computer readable medium of claim 2, wherein each of the
plurality of clip structures in the reference clip data structure
is anchored to a gap clip in the reference clip data structure.
6. The computer readable medium of claim 5, wherein the gap clip
has a duration of a longest of the plurality of ordered
sequences.
7. The computer readable medium of claim 1, wherein subsequent
modifications to the clip instance data structure do not affect the
reference clip data structure.
8. A computer readable medium storing a media-editing application
for execution by at least one processing unit, the media-editing
application comprising sets of instructions for: receiving a
request to generate a particular image corresponding to a
particular time in a media clip of a composite media presentation;
retrieving a source image corresponding to the particular time in
the media clip; applying, to the source image, a first set of
effects specified by a reference clip to which the media clip
refers; and after applying the first set of effects, applying a
second set of effects specified by the media clip to the source
image.
9. The computer readable medium of claim 8, wherein the particular
image is for playback in a display area of the media-editing
application.
10. The computer readable medium of claim 8, wherein the first set
of effects are stored on a particular media clip contained in the
reference clip.
11. The computer readable medium of claim 8, wherein the first set
of effects comprises a spatial conform effect but not a rate
conform effect.
12. The computer readable medium of claim 8, wherein the second set
of effects comprises a spatial conform effect and a rate conform
effect.
13. The computer readable medium of claim 8, wherein the second set
of effects are stored on the media clip for application to a
particular group of media clips contained in the reference
clip.
14. A method for defining a data structure for a multi-camera media
clip created from a plurality of different media clips, the method
comprising: defining a gap clip having a variable duration, the gap
clip contained by the multi-camera media clip; defining a plurality
of ordered sequences anchored to the gap clip, each of the ordered
sequences comprising one or more clips ordered based on timing data
of the clips.
15. The method of claim 14, wherein the ordered sequences comprise
additional gap clips for spacing out the clips in the
sequences.
16. The method of claim 15, wherein the additional gap clips have
durations defined based on the timing data of the clips.
17. The method of claim 14, wherein the duration of the gap clip is
based on the ordered sequence with the longest duration.
18. The method of claim 14, wherein each of the ordered sequences
is defined as a media clip that comprises an array of media
clips.
19. A computer readable medium storing a media-editing application
for execution by at least one processing unit, the media-editing
application comprising sets of instructions for: receiving a
request to generate an image for a particular time in a composite
presentation that is occupied by a multi-camera media clip
instance, wherein the multi-camera media clip instance comprises
(i) a reference to a multi-camera media clip reference and (ii) a
variable indicating a particular ordered sequence within the
multi-camera media clip reference, the particular time in the
composite presentation corresponding to a particular time within
the particular ordered sequence; defining a render graph for the
multi-camera media clip instance, the set of instructions for
defining the render graph comprising sets of instructions for:
defining a node for each effect stored on a particular media clip
in the ordered sequence that corresponds to the particular time in
the ordered sequence; and defining a node for each effect stored in
a particular effect stack on the multi-camera media clip instance,
the particular effect stack corresponding to the particular ordered
sequence; and executing the render graph on a source image in order
to generate the requested image.
20. The computer readable medium of claim 19, wherein the
media-editing application further comprises sets of instructions
for retrieving and decoding the source image.
21. The computer readable medium of claim 20, wherein the
particular media clip refers to an asset data structure, the asset
data structure indicating a location of the source image.
22. The computer readable medium of claim 19, wherein the set of
instructions for defining the render graph further comprises a set
of instructions for combining a first node and a second node into a
single node in the render graph before executing the render
graph.
23. The computer readable medium of claim 22, wherein the first
node is a user-defined transform effect and the second node is an
automatically-defined spatial conform effect.
Description
CLAIM OF BENEFIT TO PRIOR APPLICATIONS
[0001] This application claims the benefit of U.S. Provisional
Application 61/559,710, entitled "Multi-Camera Media Clips", filed
Nov. 14, 2011. U.S. Application 61/559,710 is incorporated herein
by reference.
BACKGROUND
[0002] Digital graphic design, image editing, audio editing, and
video editing applications (i.e., media-editing applications)
provide graphical designers, media artists, movie and television
directors, and other users with the necessary tools to create a
variety of media content. Examples of such applications include
Final Cut Pro.RTM. and iMovie.RTM., both sold by Apple, Inc. These
applications give users the ability to edit, combine, transition,
overlay, and piece together different media content in a variety of
manners to create a resulting media project. The resulting media
project specifies a particular sequenced composition of any number
of text, audio, image, and/or video content elements that is used
to create a media presentation.
[0003] Various media editing applications facilitate such
composition through electronic means. Specifically, a computer or
other electronic device with a processor and computer readable
storage medium executes the media editing application. In so doing,
the computer generates a graphical interface whereby designers
digitally manipulate graphical representations of the media content
to produce a desired result.
[0004] In some cases, a director, editor, etc. may film a single
scene from multiple different angles using multiple different
cameras. Manually editing numerous media clips into a timeline,
trying to figure out how the clips should be aligned and trimmed,
and where to switch between the different cameras can be a
difficult and time-intensive process. Furthermore, if the editor
has gone through this process in multiple locations in a timeline
or in multiple different media projects, the editor will be
hesitant to make any changes, as this will require making the same
correction in multiple places.
BRIEF SUMMARY
[0005] Some embodiments of the invention provide a media-editing
application that allows a user to create a multi-camera media clip
that includes several media clips captured by multiple different
media capture devices (e.g., several cameras recording a scene
simultaneously from different angles). When a user specifies for
the media-editing application to create a multi-camera media clip
using a particular set of media clips, the application uses
metadata of the media clips to automatically assign the media clips
in the set to different groups (e.g., one group for each different
camera), order and space out the clips in each group (e.g., in time
order with gaps between the clips), and synchronize the clips
across the groups (e.g., align the capture times of the clips in a
first group with the capture times of the clips in a second group).
When a user adds such a multi-camera clip to a composite
presentation, the media-editing application creates a new clip
instance in the presentation that refers to the already-created
multi-camera clip such that modifications to the multi-camera clip
will affect the clip instance in the composite presentation. The
media-editing application provides various user interface tools for
editing the multi-camera clip as well as the instance of the clip
in the composite presentation.
[0006] In some embodiments, a user specifies several different
media clips (e.g., video clips, audio clips, still images, etc.)
from which to generate a multi-camera clip. The media-editing
application automatically sorts the specified media clips into
groups (sometimes referred to herein as "angles" or "camera
angles"). Some embodiments use metadata of the media clips, such as
user-entered angle or camera names or automatically-generated
camera information, to sort the media clips into the groups (e.g.,
creating a group for each camera used to capture the different
media clips). With the clips sorted, the application automatically
generates an ordered sequence of the clips for each of the
different groups. In some embodiments, the application utilizes
clip metadata to perform this ordering (e.g., timing data generated
by the capture device used to capture the media clips), so long as
the metadata fits particular criteria indicating that it matches a
correct ordering. In addition to ordering the clips, the
media-editing application spaces the clips within the sequence,
inserting gaps for time when the capture device was not capturing
media (e.g., the time when a camera was shut off in between
shots).
[0007] After generating the sequences for each of the groups, the
media-editing application synchronizes the sequences across the
different groups. That is, the application aligns the sequences
such that content captured by a first capture device at a
particular time is aligned with content captured by a second
capture device at the same time. Some embodiments use the same
timing metadata used for sequencing one or more of the groups to
synchronize the different groups. When information indicating a
time at which a clip was captured by a first device has the same
format as corresponding information from a second device (e.g.,
timecode data or time of day information), the application uses
this information to align the clips so long as the timing
information meets certain criteria indicating that the information
should be compared between devices. In some embodiments, after
performing this preliminary synchronization of the groups using
clip metadata, the media-editing application fine tunes the
synchronization using audio data captured by multiple devices. That
is, the application identifies similar audio captured by multiple
devices (e.g., microphones of different cameras) and aligns this
audio. Because the audio and video from a particular camera are
tied to each other, this has the effect of also aligning the video
from the different devices.
[0008] When creating a multi-camera media clip from several
different media clips, the media-editing application of some
embodiments generates a reference data structure for the
multi-camera media clip. This reference data structure, in some
embodiments, stores information about each of the groups to which
clips are assigned. The application stores the reference data
structure as a series of nested clip structures, with each group
stored in a separate clip structure within the reference clip
structure. The clip structure for a particular group then stores an
ordered set of clip structures for the clips assigned to the group,
using gap structures to indicate the spacing between the clips in
some embodiments. In addition, the reference clip structure stores
information to indicate the synchronization between the different
groups.
[0009] The media-editing application provides a graphical user
interface (GUI) with an editing display area for editing the
reference multi-camera media clip. In some embodiments, this
editing display area is a composite display area also used for
creating and editing a composite media presentation (also called a
"media project" or "composite media project") as a sequence of
media clips (e.g., as a sequence of clips arranged along a
timeline). Within this editing display area, a user can name the
groups of clips in the multi-camera media clip, add or delete
groups, add or remove clips from the groups, move the individual
media clips within a sequence (e.g., to perform additional
alignment of the groups), change the order of the groups within the
multi-camera clip, apply effects (e.g., transforms, pixel
modifications, etc.) to individual clips or groups of clips in the
multi-camera clip, etc. In some embodiments, the composite display
area is a trackless display area for editing composite
presentations, while providing the appearance of tracks for the
different groups of a multi-camera clip.
[0010] As mentioned, the composite display area of some embodiments
is used to create media projects as sequences of media clips
arranged by a user. The user of the media-editing application can
add a multi-camera media clip to a media project. The media-editing
application then adds to its definition of the media project a clip
instance of the multi-camera clip that refers to the reference
clip. The clip instance indicates one of the ordered groups of the
multi-camera clip as an active group (in some embodiments, the
instance indicates both an active audio group and an active video
group). When rendering the composite presentation for a location
(e.g., time) in the composite display area occupied by the
multi-camera clip instance, the media-editing application retrieves
source content that corresponds to the clips of the active
group.
[0011] In some embodiments, the clip instance inherits properties
of the reference multi-camera clip, as well as properties of the
active group for the clip instance. The clip instance also can have
properties of its own applied. For example, the multi-camera clip
reference of some embodiments will have its own format and frame
rate, which are inherited by the clip instance. The active group
will have its sequence in the clip reference, and a user may have
applied effects to the clips in the active group. A user can then
apply additional effects to the active group in the clip instance,
which will not affect other instances (even those with the same
active group). Furthermore, the user may place retiming effects,
markers, or keywords on the clip instance that stay with the clip
instance regardless of which group is active for the instance.
While these reference clips are described for multi-camera media
clips, some embodiments also include reference clips for individual
media clips or compound media clips. When the media-editing
application renders a clip instance, the application first applies
properties (e.g., effects) of the reference clip and then applies
properties of the clip instance.
[0012] When added to a composite presentation, a multi-camera media
clip instance can be edited much like other media clips in the
presentation. However, in some embodiments the media-editing
application provides additional or different editing
functionalities for such multi-camera media clips. For example, the
media-editing application of some embodiments provides multiple
different ways for a user to modify which group is active for a
clip instance in a composite presentation. The user may select the
clip instance to produce a drop-down menu of the different groups
or a display area that allows the user to cycle through video or
images from the different groups.
[0013] In addition, some embodiments provide a multi-camera clip
viewer (or "angle viewer") in the GUI. The multi-camera clip viewer
allows a user to simultaneously view content (e.g., video images)
from multiple different groups of a single multi-camera media clip.
The user can use the viewer to switch the active group of a clip
instance or to break a clip instance into two separate instances
with different active groups. Some embodiments provide GUI items
that allow the user to determine whether selecting a particular
group in the viewer will switch (or split and switch) audio, video,
or both audio and video for a clip instance to the particular
selected group. In some embodiments, the GUI items have different
colors (or other indicators, such as patterns, symbols, etc.) for
different types of content (e.g., for audio, video, or both) and
these colors are reflected in highlights surrounding the active
group's content (e.g., video images being played back) in the
viewer, as well as in banks of groups shown in the viewer. When
there are more groups in a multi-camera clip than there are
available displays in the viewer, some embodiments display
selectable banks of groups that a user can select in order to
rotate through different sets of the groups.
[0014] The preceding Summary is intended to serve as a brief
introduction to some embodiments of the invention. It is not meant
to be an introduction or overview of all inventive subject matter
disclosed in this document. The Detailed Description that follows
and the Drawings that are referred to in the Detailed Description
will further describe the embodiments described in the Summary as
well as other embodiments. Accordingly, to understand all the
embodiments described by this document, a full review of the
Summary, Detailed Description and the Drawings is needed. Moreover,
the claimed subject matters are not to be limited by the
illustrative details in the Summary, Detailed Description and the
Drawings, but rather are to be defined by the appended claims,
because the claimed subject matters can be embodied in other
specific forms without departing from the spirit of the subject
matters.
BRIEF DESCRIPTION OF THE DRAWINGS
[0015] The novel features of the invention are set forth in the
appended claims. However, for purpose of explanation, several
embodiments of the invention are set forth in the following
figures.
[0016] FIG. 1 illustrates a graphical user interface ("GUI") of a
media-editing application with the ability to create and use
multi-camera media clips.
[0017] FIG. 2 illustrates a user adding an instance of the
multi-camera clip to the composite presentation being created in
the composite display area of FIG. 1.
[0018] FIG. 3 illustrates a GUI of a media-editing application of
some embodiments.
[0019] FIG. 4 illustrates the creation of a new project in the GUI
of a media-editing application of some embodiments.
[0020] FIG. 5 conceptually illustrates an asset data structure for
a media asset, as well as an event data structure for an event that
contains the media asset.
[0021] FIG. 6 conceptually illustrates a nested sequence of clip
objects created by the media-editing application of some
embodiments for an imported media file.
[0022] FIG. 7 illustrates a timeline with a project title "New
Project" that includes four clips.
[0023] FIG. 8 conceptually illustrates a subset of the data
structures for the project illustrated in FIG. 7.
[0024] FIG. 9 conceptually illustrates the objects of FIG. 8 nested
in a conceptual timeline.
[0025] FIG. 10 conceptually illustrates a process of some
embodiments for generating a multi-camera media clip from a set of
media clips.
[0026] FIG. 11 illustrates user input for creating a multi-camera
media clip.
[0027] FIG. 12 conceptually illustrates a process for assigning
clips to different angles of a multi-camera media clip.
[0028] FIG. 13 conceptually illustrates the assignment of a set of
nine clips to three different angles for a multi-camera media
clip.
[0029] FIG. 14 conceptually illustrates a process of some
embodiments for generating a sequence of ordered clips for the
various angles of a multi-camera media clip.
[0030] FIG. 15 illustrates the sequencing of the clips from FIG.
13.
[0031] FIG. 16 conceptually illustrates a process of some
embodiments for performing the initial synchronization of a
multi-camera media clip utilizing timing metadata.
[0032] FIG. 17 illustrates the alignment of the sequences from FIG.
15 using the metadata for clips shown in FIG. 13.
[0033] FIG. 18 conceptually illustrates a process of some
embodiments for synchronizing media clips across a set of angles
within a multi-camera media clip.
[0034] FIG. 19 illustrates the audio synchronization of the angles
from FIG. 17.
[0035] FIG. 20 conceptually illustrates a subset of the data
structures of a multi-camera media clip created in an event of the
media-editing application of some embodiments.
[0036] FIG. 21 illustrates the opening of an angle editor display
area in a graphical user interface ("GUI") of some embodiments.
[0037] FIG. 22 illustrates a GUI over three stages in which a
multi-camera preview display area is opened and options for the
display area are accessed.
[0038] FIG. 23 illustrates the manual alignment of a media clip in
a first angle track with a clip in a second angle track by moving
the clip along its track.
[0039] FIG. 24 illustrates a user changing the monitoring angle for
a multi-camera media clip according to some embodiments.
[0040] FIG. 25 illustrates a user enabling and disabling the audio
for various angles of the multi-camera reference clip.
[0041] FIG. 26 conceptually illustrates a process of some
embodiments for playing back (or skimming) a multi-camera media
clip open in the angle editor.
[0042] FIG. 27 illustrates the use of a function to automatically
synchronize a selected clip to a clip in a different angle in an
angle editor.
[0043] FIG. 28 illustrates the use of a frame matching technique
for synchronizing clips in an angle editor.
[0044] FIG. 29 illustrates a user adding an angle to a multi-camera
media clip in a GUI.
[0045] FIG. 30 illustrates a user renaming an angle of a
multi-camera media clip in the GUI of FIG. 29.
[0046] FIG. 31 illustrates a user deleting an angle of a
multi-camera media clip in the GUI of FIG. 29.
[0047] FIG. 32 illustrates a user reordering the angles of a
multi-camera media clip in the GUI of FIG. 29.
[0048] FIG. 33 illustrates applying a black and white effect from
an effects display area to a clip in an angle editor.
[0049] FIG. 34 illustrates a user adding a multi-camera media clip
to a media project.
[0050] FIG. 35 conceptually illustrates a subset of the data
structures that define a media project that includes a multi-camera
clip instance.
[0051] FIG. 36 illustrates an example of a user adding multi-camera
clip to a media project.
[0052] FIG. 37 illustrates a user opening the angle editor for a
multi-camera clip in a composite display area.
[0053] FIGS. 38-41 illustrate a selected clip as well as different
tabs of the inspector display area with the clip selected.
[0054] FIG. 42 illustrates a user switching the active video angle
for a selected clip instance in the inspector.
[0055] FIG. 43 illustrates an angle viewer of some embodiments, as
displayed while a user is editing a media project in a composite
display area.
[0056] FIG. 44A-D illustrates various examples using the angle
viewer to edit a multi-camera clip in a media project.
[0057] FIG. 45 conceptually illustrates a process of some
embodiments for modifying the data structures for a media project
when a user blades a clip instance using the angle viewer.
[0058] FIG. 46 illustrates the effect of changing the size of an
angle viewer when the viewer is displaying four angle preview
displays.
[0059] FIG. 47 illustrates the use of a menu to switch the video
angle of a selected multi-camera clip instance in a composite
display area.
[0060] FIG. 48 illustrates a different manner of switching video
angles in a composite display area of some embodiments.
[0061] FIG. 49 illustrates the use of a menu to switch the active
audio angle of a selected multi-camera clip instance in a composite
display area.
[0062] FIG. 50 illustrates the deletion of a through edit in a
composite display area in order to combine two multi-camera clip
instances into a single instance.
[0063] FIG. 51 illustrates a user modifying the volume level of two
clip instances that are separated by a through edit.
[0064] FIG. 52 illustrates a user applying a video effect to a pair
of clip instances and in a composite display area.
[0065] FIGS. 53 and 54 illustrate the difference in default trim
edits applied at the edit point between two standard media clips
and two multi-camera clip references in which the edit point is a
through edit.
[0066] FIG. 55 conceptually illustrates a process of some
embodiments for rendering images from a multi-camera clip instance
in a media project.
[0067] FIG. 56 conceptually illustrates a timeline of a media clip
that includes various media clips, including a multi-camera clip
instance.
[0068] FIG. 57 conceptually illustrates a render graph for a
particular image of the media project from FIG. 56.
[0069] FIG. 58 conceptually illustrates the software architecture
of a media-editing application of some embodiments.
[0070] FIG. 59 conceptually illustrates an electronic system with
which some embodiments of the invention are implemented.
DETAILED DESCRIPTION
[0071] In the following description, numerous details, examples and
embodiments are set forth for purpose of explanation. However, one
of ordinary skill in the art will realize that the invention is not
limited to the embodiments set forth and that the invention may be
practiced without some of the specific details and examples
discussed. In other instances, well-known structures and devices
are shown in block diagram form in order not to obscure the
description of the invention with unnecessary detail.
[0072] Some embodiments of the invention provide a media-editing
application that allows a user to create a multi-camera media clip
that includes several media clips captured by multiple different
media capture devices (e.g., several cameras recording a scene
simultaneously from different angles). When a user specifies for
the media-editing application to create a multi-camera media clip
using a particular set of media clips, the application uses
metadata of the media clips to automatically assign the media clips
in the set to different groups (e.g., one group for each different
camera), order and space out the clips in each group (e.g., in time
order with gaps between the clips), and synchronize the clips
across the groups (e.g., align the capture times of the clips in a
first group with the capture times of the clips in a second group).
When a user adds such a multi-camera clip to a composite
presentation, the media-editing application creates a new clip
instance in the presentation that refers to the already-created
multi-camera clip such that modifications to the multi-camera clip
will affect the clip instance in the composite presentation. The
media-editing application provides various user interface tools for
editing the multi-camera clip as well as the instance of the clip
in the composite presentation.
[0073] A media clip, in some embodiments, is a data structure
representing a piece of source media (e.g., the video contained in
a video file, the audio contained in an audio file or video file, a
still image, etc.). The media-editing application provides
graphical representations of these clips to the user, who uses the
clips to create a composite media presentation (also referred to as
a media project) by editing the clips together in a composite
display area. A multi-camera media clip of some embodiments is a
specific type of media clip that amalgamates media clips from
multiple different capture devices and aligns these media clips
within the clip structure.
[0074] For some embodiments of the invention, FIG. 1 illustrates a
graphical user interface ("GUI") 100 of a media-editing application
with the ability to create and use multi-camera media clips.
Specifically, this figure illustrates the GUI 100 at two stages 110
and 120. The GUI 100 includes a media library 105, a project
display area 115, and a preview display area 125. The media library
105 displays representations of a set of media clips available to
the user for creating a media project. The media clips may be
displayed different in different embodiments. For instance, the
media clips 106-108 in the media library 105 display one thumbnail
image from the video that they represent, and display both the clip
name and camera metadata below the thumbnail. Other embodiments may
display the clip names. The media clips 106 and 108 ("Clip A" and
"Clip C" respectively) are both from "Camera 1" while media clip
107 ("Clip B") is from "Camera 2". This camera name metadata may be
automatically generated from the source video (e.g., at time of
import into the media-editing application) or may be
user-entered.
[0075] The project display area 115 (also referred to as a
composite display area) provides a visual representation of a media
project being created by the user of the media-editing application.
Specifically, it displays one or more media clip representations
along a timeline that represent the media clips added to the media
project. In some embodiments, as shown here, the representations
for the video clips in the timeline display one or more images from
each video clip. The user can select clips in the media library 105
and add the clips to the project being created in the project
display area 115.
[0076] The preview display area 125 displays preview images from
media clips in the media library 105 or the project in the project
display area 115. Both video clips and the media project represent
sequences of images, and the media-editing application plays these
images in the preview display area according to user input. In some
embodiments, the user views the media project by moving a playhead
135 over the project in the timeline. In stage 110 of FIG. 1, the
playhead 135 is at approximately the 2.5 second mark of the
project, and the application displays an image corresponding to
this time in the project in the preview display area 125.
[0077] As shown in stage 110, the user has selected all three of
the clips 106-108 in the media library 105 and has activated a menu
130 that includes a "Create Multi-Camera Clip" option. While this
operation is shown as a selection operation being performed by a
cursor, one of ordinary skill in the art will recognize that
similar operations may be performed by using touchscreen
operations, and furthermore that additional operations (e.g.,
dragging and dropping items, using a hotkey, etc.) may be performed
in the GUI of some embodiments in order to achieve this same
result. In fact, this application shows many such operations as
being performed in a particular manner (e.g., with a cursor), and
one of ordinary skill will recognize that these operations may be
performed in a variety of different ways through a variety of
different input devices in various different embodiments.
[0078] In some embodiments, this initiates a multi-camera clip
creation process using the selected clips. The media-editing
application automatically sorts the specified media clips into
groups (sometimes referred to herein as "angles" or "camera
angles"). Some embodiments use metadata of the clips, such as
user-entered angle or camera names, or automatically-generated
camera information, to sort the media clips into the different
groups (e.g., creating a group for each camera used to capture the
different media clips). In this case, the three selected clips
96-108 include metadata indicating that they are from either
"Camera 1" or "Camera 2". The media-editing application utilizes
this metadata to sort the clips into two groups (one for each of
the cameras).
[0079] With the clips sorted into groups, the application
automatically generates an ordered sequence of the clips for each
of the different groups. Some embodiments utilize clip metadata to
perform this ordering (e.g., timing data generated by the capture
device used to capture the media clips), so long as the metadata
fits particular criteria indicating that it matches a correct
ordering.
[0080] In addition to ordering the clips, the media-editing
application spaces the clips within the sequence, inserting gaps
for times when the capture device was not capturing media (e.g.,
the time when a camera was shut off in between shots). In the
example shown in FIG. 1, the application examines metadata of media
clips 106 and 108 to determine the order in which the clips were
captured and the time between the end of the first clip and the
start of the second.
[0081] After generating the sequences for each of the groups, the
media-editing application synchronizes the sequences across the
different groups. That is, the application aligns the sequences
such that content captured by a first capture device at a
particular time is aligned with content captured by a second
capture device at the same time. Some embodiments use the same
timing metadata used for sequencing one or more of the groups to
synchronize the different groups. When information indicating a
time at which a clip was captured by a first device has the same
format as corresponding information from a second device (e.g.,
timecode data or time of day information), and the timing
information meets certain criteria that indicate that the
information should be compared between devices, then the
application uses this information to align the clips. In some
embodiments, after performing this preliminary synchronization of
the groups using clip metadata, the media-editing application
verifies that the groups are synchronized properly and fine tunes
the synchronization using audio data captured by multiple devices.
That is, the application identifies similar audio captured by
multiple devices (e.g., microphones of different cameras) and
aligns this audio. Because the audio and video from a particular
camera are tied to each other, this has the effect of also aligning
the video from the different devices. The media-editing application
whose GUI is shown in FIG. 1 automatically synchronizes the timing
of clip 107 (the clip from "Camera 2") with that of clips 106 and
108 (the clips from "Camera 1").
[0082] Stage 120 of FIG. 1 illustrates the GUI 100 after the
media-editing application has created a multi-camera media clip
represented by clip representation 109. In addition to displaying
the selected clip representation 109 in the media library 105, the
GUI 100 includes additional features of some embodiments for
interacting with the multi-camera media clip. Specifically, the GUI
100 displays the multi-camera media clip for editing in the
composite display area 115, and displays a multi-camera clip viewer
(or "angle viewer") 140.
[0083] The multi-camera media clip editing display in the composite
display area 115 displays the two groups of media clips in
multi-camera clip 109. These two groups are labeled as "Camera 1"
and "Camera 2" and show the clips of each group laid out along a
single timeline. While in some embodiments the composite display
area is a trackless display area for editing composite
presentations, the application provides the appearance of separate
tracks for each of the groups in the multi-camera media clip. The
first group includes "Clip A" and "Clip C"--as shown, "Clip A" is
approximately six seconds long (running from a time of zero seconds
to a time of six seconds), while "Clip C" is a bit shorter (running
from approximately 8.5 seconds to 12.5 seconds). "Clip B", assigned
to the "Camera 2" group, is slightly longer than either of the
other two clips, and runs from approximately 1.5 seconds to nine
seconds in the timeline. The clips of the second group do not start
at time zero because the media-editing application has
automatically aligned the clips of the two groups with each other
using timing metadata stored with the source video as well as the
audio of the clips, as described above.
[0084] Within this editing display area, a user can name the groups
of clips in the multi-camera media clip, add or delete groups, add
or remove clips from the groups, move the individual media clips
within a sequence (e.g., to perform additional alignment of the
groups), change the order of the groups within the multi-camera
clip, apply effects (e.g., transforms, pixel modifications, etc.)
to individual clips or groups of clips in the multi-camera clip,
etc.
[0085] The multi-camera clip viewer 140 allows a user to
simultaneously view content (e.g., video images) from multiple
different groups of a single multi-camera media clip. When the
tracks for the different groups are shown in the composite display
area, the viewer shows preview images for each of the groups
corresponding to a location of the playhead 135 in some
embodiments. The preview display area 125 displays preview images
for one of the groups. In some embodiments, a particular group is
selected (e.g., by a user) for playback in the preview display
area. However, when a user moves a cursor (or similar location
indicator) over a particular clip in the composite display area,
the application displays images from the particular clip in the
preview display area rather than from the selected group at the
same time. In this case, "Camera 1" is the selected group, and thus
the media-editing application displays the video image from this
group corresponding to the time of the playhead 135 in the preview
display area 125. In addition, the viewer provides functionalities
when editing a multi-camera clip in a composite presentation, which
will be described below by reference to FIG. 2.
[0086] When creating a multi-camera media clip from several
different media clips (e.g., the multi-camera media clip 109), the
media-editing application of some embodiments generates a reference
data structure for the multi-camera media clip. This reference data
structure, in some embodiments, stores information about each of
the groups to which clips are assigned. The application stores the
reference data structure as a series of nested clip structures,
with each group stored in a separate clip structure within the
reference clip structure. The clip structure for a particular group
then stores an ordered set of clip structures for the clips
assigned to the group, using gap structures to indicate the spacing
between the clips in some embodiments. In addition, the reference
clip structure stores information to indicate the synchronization
between the different groups.
[0087] With a multi-camera media clip created, a user can add a
multi-camera media clip to a media project. The media-editing
application then adds to the media project a clip instance of the
multi-camera clip that refers to the reference clip. The clip
instance indicates one of the ordered groups of the multi-camera
clip as an active group (in some embodiments, the instance
indicates both an active audio group and an active video group).
When rendering the composite presentation for a location (e.g.,
time) in the composite display area occupied by the multi-camera
clip instance, the media-editing application retrieves source
content that corresponds to the clips of the active group.
[0088] In some embodiments, the clip instance inherits properties
of the reference multi-camera clip, as well as properties of the
active group for the clip instance. The clip instance also can have
properties of its own applied. For example, the multi-camera clip
reference of some embodiments will have its own format and frame
rate, which are inherited by the clip instance. The active group
will have its sequence in the clip reference, and the clips in the
active group may have effects applied. A user can then apply
additional effects to the active group in the clip instance, which
will not affect other instances (even those with the same active
group). Furthermore, the user may place retiming effects, markers,
or keywords on the clip instance that stay with the clip instance
regardless of which group is active for the instance. While these
reference clips are described for multi-camera media clips, some
embodiments also include reference clips for individual media clips
or compound media clips. When the media-editing application renders
a clip instance, the application first applies properties (e.g.,
effects) of the reference clip and then applies properties of the
clip instance.
[0089] FIG. 2 illustrates a user adding an instance of the
multi-camera clip 109 to the composite presentation being created
in the composite display area 115 over two stages 210 and 220. In
the first stage, the user has selected the clip 109 and dragged
this clip into the composite display area 115. By performing this
drag-and-drop operation, the user edits an instance of the
multi-camera clip 109 into the presentation. In some embodiments,
the user adds a clip to a timeline through user interface buttons,
hotkeys, selecting a menu option, etc., rather than through a
drag-and-drop operation.
[0090] The second stage 220 illustrates that the composite
presentation now includes an instance of the multi-camera clip. In
addition, the clip representation shown in the composite display
area 115 includes information indicating the active video and audio
groups for the clip instance. In this case, the active video group
is Camera 2 and the active audio group is Camera 1. As is the case
in this example, in some embodiments the clip instances can have
different active groups for video and audio. In this case, the
application renders the presentation using clips from one group for
the audio and clips from a different group for the video.
[0091] When added to a composite presentation, a multi-camera media
clip instance can be edited much like other media clips in the
presentation. However, in some embodiments the media-editing
application provides additional or different editing
functionalities for such multi-camera media clips. For example, the
media-editing application of some embodiments provides multiple
different ways for a user to switch which group is active for a
clip instance in a composite presentation. The user may select the
clip instance to produce a drop-down menu of the different groups
or a display area that allows the user to cycle through video or
images from the different groups.
[0092] The GUI 100 also includes the multi-camera clip viewer 140,
which displays images for multiple different groups in a
multi-camera clip corresponding to a particular time in the clip.
When the playhead 135 is located over a particular time in a
multi-camera clip instance in the composite display area 115, the
video images shown in the viewer 140 correspond to the images at
that particular time of the multi-camera clip. As indicated above,
the multi-camera viewer 140 may be used for editing multi-camera
clip instances in the composite display area.
[0093] For instance, the user can use the viewer to switch the
active group of a clip instance or to break a clip instance into
two separate instances with different active groups. The GUI items
240 allow the user to determine whether selecting a particular
group in the viewer will switch (or split and switch) the active
audio and/or video group for a clip instance to the particular
selected group. In some embodiments, the GUI items have different
colors (or other indicators, such as patterns, symbols, etc.) for
different types of content (e.g., for audio, video, or both) and
these colors are reflected in highlights surrounding the active
group's content (e.g., video images being played back) in the
viewer, as well as in banks of groups shown in the viewer. In this
case, the buttons indicate A, V, and A/V, and these symbols ("A"
and "V") are illustrated in the group previews shown in the viewer
as well as in the bank 245. When there are more groups in a
multi-camera clip than there are available displays in the viewer,
some embodiments display selectable banks of groups. A user can
select one of the banks in order to rotate through different sets
of the groups. In this case, as there are only two groups, there is
no need for a user to switch between different sets.
[0094] FIGS. 1 and 2 illustrate examples of the creation and use of
multi-camera clips in the media-editing application of some
embodiments. Several more detailed embodiments are described below.
Section I describes the graphical user interface of a media-editing
application of some embodiments. Section II describes the data
structures used by the media-editing application of some
embodiments. Next, Section III describes the creation of
multi-camera media clips. Section IV then describes editing
multi-camera reference clips, while Section V describes editing
multi-camera clip instances in a media project. Section VI
describes how the media-editing application of some embodiments
renders multi-camera media clips. Section VII then describes the
software architecture of the media-editing application of some
embodiments. Finally, Section VIII describes an electronic system
with which some embodiments of the invention are implemented.
I. Media-Editing Application Graphical User Interface
[0095] The above figures illustrated a simplified graphical user
interface ("GUI") for a media-editing application. FIG. 3
illustrates a GUI 300 of a media-editing application of some
embodiments with additional features as compared to those described
above. One of ordinary skill will recognize that the graphical user
interface 300 is only one of many possible GUIs for such a
media-editing application. In fact, the GUI 300 includes several
display areas which may be adjusted in size, opened or closed,
replaced with other display areas (e.g., an angle viewer as shown
in FIGS. 1 and 2), etc. The GUI 300 includes a clip library 305, a
clip browser 310, a timeline 315, a preview display area 320, an
inspector display area 325, an additional media display area 330,
and a toolbar 335.
[0096] The clip library 305 includes a set of folders through which
a user accesses media clips that have been imported into the
media-editing application. In some embodiments, the user can import
media files into the application, at which time media clips are
created for the imported files. These files may be imported from a
camera, an external drive (e.g., an external hard drive, a flash
memory drive, a network drive, etc.), or a drive internal to the
device on which the media-editing application operates. The
creation of clip data structures upon import will be described in
further detail below in Section II.
[0097] Some embodiments organize the media clips in the clip
library 305 according to the device (e.g., physical storage device
such as an internal or external hard drive, virtual storage device
such as a hard drive partition, etc.) on which the imported media
files represented by the clips are stored. Some embodiments also
enable the user to organize the media clips based on the date the
media represented by the clips was created (e.g., recorded by a
camera). As shown, the clip library 305 includes media clips from
2009 that are stored on the hard disk (in this case, the boot disk
of the device on which the media-editing application runs).
[0098] Within a storage device and/or date, users may group the
media clips into "events", or organized folders of media clips. For
instance, a user might give the events descriptive names that
indicate what media is stored in the event (e.g., the "Vacation"
event shown in clip library 305 might include video footage from a
vacation). In some embodiments, the media files corresponding to
these clips are stored in a file storage structure that mirrors the
folders shown in the clip library.
[0099] Within the clip library, some embodiments enable a user to
perform various clip management actions. These clip management
actions may include moving clips between events, creating new
events, merging two events together, duplicating events (which, in
some embodiments, creates a duplicate copy of the media to which
the clips in the event correspond), deleting events, etc. In
addition, some embodiments allow a user to create sub-folders of an
event. These sub-folders may include media clips filtered based on
tags (e.g., keyword tags). For instance, in the vacation event, all
media clips showing statues are tagged by the user with a "statue"
keyword, and underneath the "Vacation" folder is a keyword item for
this tag.
[0100] The clip browser 310 allows the user to view clips from a
selected folder (e.g., an event) of the clip library 305. As shown
in this example, the event folder "Vacation" is selected in the
clip library 305, and the clips belonging to that event are
displayed in the clip browser 310. In some embodiments, the user
can create multi-camera clips in the clip browser 310 by selecting
several clips in the browser and then selecting a multi-camera clip
creation option. This creation process will be described in detail
below in Section III.
[0101] Some embodiments display the clips as thumbnail filmstrips,
as shown in this example. By moving a cursor (or a finger on a
touchscreen) over one of the thumbnails (e.g., with a mouse, a
touchpad, a touchscreen, etc.), the user can skim through the clip.
That is, when the user places the cursor at a particular horizontal
location within the thumbnail filmstrip, the media-editing
application associates that horizontal location with a time in the
associated media file, and displays the image from the media file
for that time. Furthermore, the user can command the application to
play back the media file in the thumbnail filmstrip in some
embodiments.
[0102] In addition, the thumbnails for the clips in the browser
display an audio waveform underneath the clip that represents the
audio of the media file. In some embodiments, as a user skims
through or plays back the thumbnail filmstrip, the audio plays as
well.
[0103] Many of the features of the clip browser are
user-modifiable. For instance, in some embodiments, the user can
modify one or more of the displayed thumbnail size, the percentage
of the thumbnail occupied by the audio waveform, whether audio
plays back when the user skims through the media files, etc. In
addition, some embodiments enable the user to view the clips in the
clip browser in a list view instead of the filmstrip view. In this
view, the clips are presented as a list (e.g., with clip name,
duration, etc.). Some embodiments also display a selected clip from
the list in a filmstrip view in the browser (e.g., above the list)
so that the user can skim through or playback the selected
clip.
[0104] The timeline 315 (also called a composite display area or
project display area) provides a visual representation of a media
project being created by the user of the media-editing application.
Specifically, it displays one or more geometric shapes that
represent one or more media clips that are part of the composite
presentation. The timeline 315 of some embodiments includes a
primary lane 350 (also called a "spine", "primary compositing
lane", or "central compositing lane") as well as one or more
secondary lanes 355-365 (also called "anchor lanes"). The spine 350
represents a primary sequence of media which, in some embodiments,
does not have any gaps. The clips in the anchor lanes are anchored
to a particular position along the spine (or along a different
anchor lane). Anchor lanes may be used for compositing (e.g.,
combining pixels of one image with pixels of a different image, as
done in green-screening), B-roll cuts (i.e., cutting away from the
primary video to a different video whose clip is in the anchor
lane), audio clips, or other composite presentation techniques.
[0105] The user can add media clips from the clip browser 310 into
the timeline 315 in order to add the clip to a project represented
in the timeline. Within the timeline, the user can perform further
edits to the media clips (e.g., move the clips around, split the
clips, trim the clips, apply effects to the clips, etc.). As
described above, when a multi-camera clip is added to the timeline,
this clip in the timeline refers to the reference clip in the clip
browser. Some embodiments implement such reference clips for other
clips in addition to the multi-camera clips (e.g., for compound
clips, individual clips, etc.).
[0106] The length (i.e., horizontal expanse) of a clip in the
timeline is a function of the length of media represented by the
clip. As the timeline is broken into increments of time, a media
clip occupies a particular length of time in the timeline. As
shown, in some embodiments the clips within the timeline are shown
as a series of images. The number of images displayed for a clip
varies depending on the length of the clip in the timeline, as well
as the size of the clips (as the aspect ratio of each image will
stay constant).
[0107] As with the clips in the clip browser, the user can skim
through the timeline or play back the timeline (either a portion of
the timeline or the entire timeline). In some embodiments, the
playback (or skimming) is not shown in the timeline clips, but
rather in the preview display area 320.
[0108] The preview display area 320 (also referred to as a
"viewer") displays images from media files that the user is
skimming through, playing back, or editing. These images may be
from a project in the timeline 315 or from a media clip in the clip
browser 310. In this example, the user has been skimming through
the project in the timeline 315, and therefore the application
displays an image corresponding to the time of the playhead 340 in
the preview display area 320. As shown, some embodiments display
the images as large as possible within the display area while
maintaining the aspect ratio of the image.
[0109] The preview display area 320 also includes video editing and
playback tools in some embodiments. Selectable items are included
for rewinding, fast forwarding, playing/pausing, etc. In addition,
some embodiments include a set of tools 370 for editing the size
and shape of images (e.g., video images) that have been added to a
media project. In this example, these tools 370 include a transform
tool, a crop tool, and a distortion tool. When the transform
selectable item is selected, a user can modify the height and width
of the source images within the output images. When the crop
selectable item is selected, the user can select the portion of the
source images that are displayed in the output images. When the
distortion tool is selected, the user can distort the shape of the
source images in the output images.
[0110] The inspector display area 325 displays detailed properties
about a selected item and allows a user to modify some or all of
those properties. The selected item might be a clip, a composite
presentation, an effect, etc. In this case, the clip 345 in the
clip browser 310 is selected, and thus the inspector displays
information about this media clip. This information includes the
clip name, file format, resolution (1920.times.1080), frame rate
(29.97 fps), date created, audio information, etc. for the selected
clip. In some embodiments, different information is displayed
depending on the type of item selected (e.g., video clip, audio
clip, still image, multi-camera clip, media project, etc.). Some
embodiments may include different tabs in the inspector (e.g.,
video, audio, and info tabs).
[0111] The additional media display area 330 displays various types
of additional media, such as video effects, transitions, still
images, titles, audio effects, standard audio clips, etc. In some
embodiments, the set of effects is represented by a set of
selectable GUI items, with each selectable GUI item representing a
particular effect. In some embodiments, each selectable GUI item
also includes a thumbnail image with the particular effect applied.
The display area 330 is currently displaying video effects that a
user can apply to a clip.
[0112] The toolbar 335 includes various selectable items for
editing a project, modifying what the application displays in one
or more display areas, etc. The right side of the toolbar includes
various selectable items for modifying the type of media displayed
in the additional media display area 330. The illustrated toolbar
335 includes items for video effects (currently selected), visual
transitions between media clips, photos, titles, generators and
backgrounds, etc. In addition, the toolbar 335 includes an
inspector selectable item that toggles the display of the inspector
display area 325 as well as items for applying retiming operations
to a clip, adjusting color, and other functions.
[0113] The left side of the toolbar 335 includes selectable items
for media management and editing. Selectable items are provided for
adding clips from the clip browser 310 to the timeline 315. In some
embodiments, different selectable items may be used to add a clip
to the end of the spine, add a clip at a selected point in the
spine (e.g., the location of a playhead), add an anchored clip at
the selected point, perform various trim operations on the media
clips in the timeline, etc. The media management tools of some
embodiments allow a user to mark selected clips as favorites and
add keyword tags to clips in the clip browser, among other
options.
[0114] In some embodiments, the timeline 315 can be toggled with
other display areas. In some embodiments, a timeline specific to
editing a selected multi-camera reference clip is displayed in this
display area. Although the timeline 315 is a trackless display area
with a primary lane and several anchor lanes, some embodiments
display the multi-camera reference clip as a set of tracks, with
one track for each group (or angle) of the reference clip.
[0115] In addition, the GUI 300 also includes a project library
toggle item 375 which, when selected, replaces the timeline 315
with a project library in the GUI. The project library of some
embodiments displays a list of current projects that a user can
select and edit. In some embodiments, selecting one of the projects
in the project library causes the timeline 315 to replace the
project library with a representation of the selected project. In
addition, some embodiments allow users to create a new media
project through the project library.
[0116] FIG. 4 illustrates the creation of a new project in the GUI
of a media-editing application of some embodiments using the
project library 400 in three stages 410-430. Specifically, the
stages illustrate the opening of a project creation dialog box 405
and the user of that dialog box to create the new project.
[0117] The first stage 410 illustrates the project library 400,
which as mentioned may occupy the same portion of the media-editing
application GUI as the timeline 315. The GUI includes a project
library/timeline toggle item 415 (similar to the toggle item 375
shown in FIG. 3) that allows a user to toggle between the timeline
and the project library in this section of the GUI, as well as a
new project GUI item 425 the selection of which begins the process
for creating a new project. Some embodiments provide these options
as different types of selectable items, as menu selections, as
hotkey selections, or a combination thereof.
[0118] The project library 400 displays a list of projects on its
left side. In this case, there are two projects that have been
previously created. With the name of the project, the library 400
also displays information about the project. In this case, the
information includes the date the project was created, the length
of the project, and the frame rate of the project. Other
embodiments may display other information, such as the last time
the project was edited, the output format, output resolution, etc.
For each project, the library displays a filmstrip as a set of
images for the project. In some embodiments, these images represent
frames from the composite presentation that are evenly spaced
throughout the project. As shown at stage 410, the user has placed
a cursor over the new project user interface item 425 and selected
this item in order to create a new project.
[0119] The second stage 420 illustrates a dialog box 405 that
appears when the user selects the new project item 425. This dialog
box allows the user to enter information about a new project. The
user can enter a name for the project (in this case, "Proj 2"),
select a default event for the project, and set video properties,
render properties, and audio properties. The default event, in some
embodiments, is the event to which the project automatically
imports a media file when a user edits the media file into the
project from a source other than an event. For instance, a user
might drag and drop a video or audio file (e.g., from their desktop
or other folder) into the timeline for a project. Doing so, in some
embodiments, will cause the application to automatically import the
file as an asset of the default event.
[0120] As shown, the user can also either select to use the video
properties of the first clip added to the project as the video
properties for the project, or select custom properties for the
project. In the case shown in FIG. 4, the user has chosen to set
custom properties. The format field lets the user choose a format
(e.g., 1080 p, 1080 i, 720 p, various standard definition formats,
etc.) for the project. The options presented in the resolution and
rate fields are dependent on the selected format in some
embodiments, so as to ensure settings that match up with a
regularly-used video format. For the selected 1080 p HD, for
example, the resolution options are 1920.times.1080,
1440.times.1080, and 1280.times.1080, while the frame rates are
23.98, 24, 25, 29.97, 30, 50, 59.94, and 60 frames per second.
Other formats are more restrictive: for instance, if the user
selects NTSC SD, then only frame rates of 23.98 and 29.97 frames
per second are available as options. The user may instead choose to
set the properties for the media project automatically based on the
first video clip added to the project.
[0121] The audio and render properties include a render format (in
this case, the user has chosen Apple ProRes 422, though other
options are available). The render format, in some embodiments, is
the encoding format used for cache files that are prepared to
simplify playback (i.e., prepared ahead of time and used during
playback). The audio properties include an audio sample rate, and
the choice between surround and stereo for audio channels. The user
can also select to use default settings (in this case, the options
currently selected). Some embodiments provide an option to use
settings from the most recently created or edited project.
[0122] The third stage 430 illustrates the result of the user
selecting the OK item in the dialog box 405 in order to create the
new project "Proj 2" with the properties shown in the dialog box.
The project library now shows a third project, the newly created
"Proj 2". At this point, the user has not yet added any media clips
to the project, so its filmstrip is blank. With the new project
created, the user can add media clips to the project, and the
media-editing application of some embodiments will apply the
spatial and temporal conform effects to these clips as
necessary.
II. Media-Editing Application Data Structures
[0123] The above section describes various items in the user
interface of the media-editing application of some embodiments,
including events, media clips, and projects. Events contain media
clips, which can be added to projects. In some embodiments, the
media-editing application creates and stores various data
structures to represent these different items. The following
section describes data structures for defining media clips and
projects according to some embodiments; one of ordinary skill will
recognize that various different data structures for media clips,
media projects, etc. may be used in different embodiments of the
media-editing application.
[0124] Some embodiments create an initial set of data structures
for each media file upon import of the file into the media-editing
application. When a set of media files are imported together, the
media-editing application of some embodiments generates media clips
and prompts the user as to whether to add the clips to an existing
event or create a new event for the clips. The import process of
some embodiments is described in further detail in the U.S. patent
application Ser. No. 13/111,912, filed May 19, 2011 and entitled
"Data Structures for a Media-Editing Application", which is
incorporated herein by reference.
[0125] For each imported media file, the application creates a
series of data structures. In some embodiments, the application
creates an asset data structure for each file in the event to which
the files are added. The asset stores a reference to the file and
any additional files created upon import (e.g., transcoded versions
of the media file, analysis data about the media file, etc.). The
application also creates a component clip data structure that
stores a reference to the asset and the event containing the asset.
When the imported file contains both audio and video data, some
embodiments create component clips for the video and the audio,
each of which refer to the same asset. When this is the case, the
application creates another clip data structure that contains the
component clips.
[0126] FIG. 5 conceptually illustrates an asset data structure for
a media asset 500, as well as an event data structure 505 for an
event that contains the media asset. In this example, the media
file referenced by the asset is a video file with audio channels
(e.g., a ".mov" file). The event data structure 505 includes an
event ID, a list of assets, and a list of clips. The event data
structure may include additional fields in some embodiments, such
as the event name, event date (which may be derived from asset
information), etc. The event data structure 505 may be a CoreData
(SQLite) database file that includes the assets and clips as
objects defined with the file, an XML file that includes the assets
and clips as objects defined with the file, etc.
[0127] The media asset 500 includes an asset ID 510, source file
metadata 515, and references to various files. These files include
an original imported media file 530, any transcoded versions of the
media file (e.g., a high resolution version 535 and a low
resolution version 540), and any analysis data about the media file
(e.g., a person detection data file 545 that identifies images in
the source video with people in them, a color correction file 550
that stores automatic color balancing data, a shake correction file
555 that identifies and corrects camera shake in the video, audio
correction files, etc.).
[0128] The metadata is information about the source file and its
stored media in some embodiments. As shown, the source file
metadata 515 includes the file type (e.g., audio, video, movie,
still image, etc.), the file format (e.g., ".mov", ".avi", etc.),
the source device (i.e., the device that created the media, such as
the particular type of camera on which a movie file was captured),
the file creation date (e.g., the date a video was captured), a
UUID (a unique identifier generated by a media creation device such
as a camera), a set of video properties 520, a set of audio
properties 525, timecode, and additional metadata. Different types
(or manufacturers) of cameras create different UUIDs differently.
These may be hashes of various data in some embodiments, such as a
camera ID, record time (e.g., the time a user of the camera started
recording), the duration of the recording, etc., so long as all
UUIDs are unique. In addition, different devices generate timecode
differently. Some cameras use a running timecode in which each
recorded video starts one frame after the previous video left off,
while other cameras use a timecode that parallels actual time
(i.e., leaves gaps between timecodes to reflect the time the camera
was off). Still other cameras reset the timecode to zero for each
recorded video.
[0129] The video properties 520 of some embodiments include such
properties as a sample rate, a frame rate, the dimensions (or
resolution) of the image (i.e., the number of pixels horizontally
and number of rows of pixels), the pixel aspect ratio (i.e., the
shape of the pixels, which may be square (HD video) or rectangular
(e.g., NTSC 4:3 video has a ratio of 10:11)), a pixel transform
(described in detail in U.S. patent application Ser. No.
13/111,912, incorporated by reference above), and the colorspace in
which pixel values of the image are defined (e.g., ITU-R BT.709 for
HD, ITU-R BT.601 for SD, etc.).
[0130] The audio properties 525 of some embodiments include a
sample rate (i.e., the number of audio samples per second, often 48
kHz), the number of audio tracks stored in the underlying media
file, and the number of audio channels stored in the underlying
media file. In some embodiments, the asset may additionally store
override data that modifies one or more of the video or audio
properties. For instance, a user might enter that a media file
actually has a frame rate of 24 frames per second, even though the
file's metadata, stored in the asset, indicates that the video's
frame rate is 23.98 frames per second. When presented to the user,
or used within the application, the override will be used and the
media file will be treated as having a frame rate of 24 fps.
[0131] As stated, when the media-editing application imports a
media file, some embodiments create a nested set of data
structures. FIG. 6 conceptually illustrates a nested sequence of
clip objects created by the media-editing application of some
embodiments for an imported media file. In some embodiments, each
of the clip objects shown in this figure is a member of the same
class, though the objects may be of different sub-classes. The
media file the clip structure of which is illustrated in FIG. 6 is
a movie file that stores both audio and video information.
[0132] The figure illustrates a sequence 605, a collection 610, and
two components 615 and 620. As mentioned, in some embodiments the
sequence 605, collection 610 and components 615 and 620 are
sub-classes of clip objects (or anchored objects). Some embodiments
create a sequence (which may be another clip object or a different
class of object) within the event object for each media file
imported into the event. The sequence 605 stores a sequence ID, a
set of sequence attributes, and the collection object 610. The
sequence ID is a unique identifier for the sequence object. The
sequence attributes, in some embodiments, include the resolution,
frame rate, and other video and audio properties for the sequence.
For event clips, these attributes are generally based on the
underlying media (i.e., the information stored in the asset that is
linked to through the collection and component clips).
[0133] The collection object 610 is an ordered array of clip
objects. In the case of a clip imported into an event, as is the
case with the object 610, the collection stores one or more
component clips in the array. Often, the collection stores the
video component clip in the array, as shown here; any additional
components (generally one or more audio components) are then
anchored to that video component. In addition, the collection
object 610 stores a collection ID, a total range, and a trimmed
range. The collection ID is a unique identifier for the collection
object. The total range of a clip object indicates the maximum
range for the object based on the objects it contains, while the
trimmed range indicates the actual range of the object in its
parent object according to user edits. In some embodiments, the
collection object stores a value for the total range because the
total range is a variable assigned to all types of clip objects,
but this range is not actually used by the application. Instead,
the application dynamically calculates the total range based on the
objects contained by the collection (as opposed to updating the
range value every time a clip is added to the collection). Some
embodiments, on the other hand, do update the total range in the
collection object. The array of the collection object 610 contains
the media component 615. Collection objects, in some embodiments,
can contain both component clip objects and additional collections
in their arrays.
[0134] In the above paragraph and elsewhere in this document, a
first object (e.g., the collection object 610) is described as
containing a second object (e.g., a media component 615 in the
array of collection object 610). In some embodiments, a first
object contains a second object by storing a reference to the
object (e.g., a pointer). This reference is stored as a strong
pointer in some embodiments.
[0135] The media components shown include a video component 615 and
an audio component 620. Each of the components stores a component
ID, a source media range (i.e., total range), a trimmed range, an
asset reference (that refers to an asset such as the asset 500 and
the event containing the asset), and a roles setting. The roles
setting is a setting for a clip and is stored on the video and
audio components (i.e., at the component level). Some embodiments
provide a set of roles options (e.g., music, dialogue, and effects
for audio components; video and titles for video components) as
well as allowing the user to input custom roles options (e.g.,
French, English, etc.). The user can then export a composite
presentation that excludes clips with certain roles (e.g., removing
all of the French audio).
[0136] For a component clip that refers to a media asset, the total
range is the duration of the source media. The trimmed range is the
range selected by a user through various user edits (e.g., trim
edits) and indicates both the start time within the total range and
the duration, in some embodiments. The trimmed range is generally a
subset of the total range (i.e., does not include time outside the
total range). However, in some embodiments, the application may use
a range extender to extend the trimmed range past the total range
(e.g., when needed for part of a transition, or if aligned audio
runs slightly longer than video). Some embodiments will generate
video images using, e.g., the first and last images of the video
file, to fill in the needed extra range. When a clip is initially
imported into the application, the total range and trimmed range
will generally be equal as the user will not have edited the clip
at all yet.
[0137] The video component 615 includes an anchored item set that
contains the audio component 620. As described above by reference
to the timeline 315 in the user interface 300 of FIG. 3, clips can
be anchored to other clips in some embodiments. When a particular
clip is moved in the timeline, any clips anchored to the particular
clip are moved along with it. Each clip can have numerous anchored
clips, and can be anchored to a single clip. In the case of a media
clip with audio and video components, some embodiments anchor the
audio component to the video component. Thus the video component
object 615 contains the audio component in its set of anchored
items (and could include numerous such items if there were
additional audio components), while the audio component object 620
includes a parent item reference to the video component to which it
is anchored. In addition, the child (anchored) object stores an
anchor offset that indicates two values. The first value is the
position in the parent object to which the child object is
anchored, and the second value is the offset of the anchor within
the child object. In the case of an imported media file, the audio
and video components will start at the same time, and thus both
anchor offset values are zero. However, this can be modified if,
for example, there is a slight offset in the recordings of the two
components and the user has to adjust the audio relative to the
video.
[0138] The above FIGS. 5 and 6 illustrate the data structures for
an object imported into an event in the media-editing application.
When media clips are added to a media project, nested within
compound clips, etc., the data structures created by the
media-editing application may be more complicated.
[0139] FIG. 7 illustrates a timeline 700 with a project title "New
Project" that includes four clips 705-720. The clips 705-715 are in
the primary compositing lane of the project's sequence, while the
clip 720 is anchored to clip 710 at approximately 26 seconds into
clip 710. The clip 710 is a compound clip that itself includes two
clips.
[0140] FIG. 8 conceptually illustrates a subset of the data
structures for the project illustrated in FIG. 7. In some
embodiments, the data structures of FIG. 8 are all contained within
a project data structure that contains a single sequence 800. In
some embodiments, the project data structure for a project in the
timeline is a sub-class of the same class that includes event data
structures. While the event data structures can contain multiple
sequences (i.e., one sequence for each clip in the event), the
project data structure only contains a single sequence.
[0141] The sequence 800 includes a primary collection data
structure 803, which itself stores an array containing three
collections 805-815 that correspond to the clips 705-715 in the
timeline 700. In addition, the fourth clip 720 is contained within
the collection 810 as an anchored item of the collection. For
simplicity, the component objects are not shown in this figure. The
sequence 800 includes a sequence ID, sequence attributes 835, and a
primary collection 803. These sequence attributes 835 include the
video properties set for the project, such as the resolution, frame
rate, and other additional properties (e.g., format, render
properties, audio properties, etc.). As shown in the previous
Section I, in some embodiments a user sets these properties when
creating the project.
[0142] The primary collection 803 includes a collection ID, ranges
(i.e., the total and trimmed ranges described above), an effects
stack (which, in some embodiments, represents a video effects stack
and an audio effects stack), and the array of media clips. In some
embodiments, the array is ordered based on the location in the
timeline and only includes media clips in the primary lane of the
collection. The media-editing application assumes that there is no
gap between these items, and thus no timing data is needed between
the items. As shown, each of these clips is represented as a
collection. When a clip stored in an event (e.g., the clip shown in
FIG. 6) is added to a project in a timeline, some embodiments
remove the sequence container data structure (e.g., structure 605)
and copy the rest of the structure (i.e., the collection and its
components) into the timeline collection. The effects stack stores
a set of effects applied to the media clip. These effects may
include automatically applied rate and spatial conform effects,
user-initiated transform, crop, and distortion effects,
user-applied pixel-manipulation effects (i.e., effects that modify
pixel values of the images of the clip according to different
algorithms, etc.).
[0143] The clips 805, 815, and 820 are individual clips that have
been added to the timeline from the clip browser, and thus do not
themselves include collections. Similar to the collection 610,
these objects include an ID, ranges, an effects stack, and an array
of media components (e.g., a video component with one or more audio
components anchored to the video component).
[0144] The clip 810 is a compound clip that includes multiple clips
in its array, in addition to the collection ID, ranges, and effects
stack. Specifically, the clip 810 includes two media clips 825 and
830. Within the compound clip, the clips are both in the primary
lane of the collection, and thus one follows the next. These clip
objects are not shown in this figure, but each of the clips is
similar to the clip 805 in that the clips each include an array of
media components. In addition, the clip object 810 includes a set
of anchored items (in this case only the one item, clip 820). Some
embodiments include a set of anchored items for each collection,
which are empty for the other objects shown in FIG. 8. The anchor
offset stored in clip 820 indicates that it is anchored 26 seconds
into the clip 810, and that the anchor is at the start of the clip
820. These times refer to the trimmed ranges of the clips in some
embodiments.
[0145] FIG. 9 conceptually illustrates the objects 800-830 nested
in a conceptual timeline. As shown, the collection objects 825 and
830 are nested inside the collection 810, which is nested inside
the primary collection object 803 along with the other collection
objects 805, 815, and 820. The sequence's primary collection object
803 is itself nested inside the sequence object 800.
[0146] The figure illustrates the anchoring relationships between
the various clips as well as the durations (ranges) of the clips.
The lowest level collections 805, 815, 825, and 830 each have an
audio component anchored to a video component. While not shown,
collection 820 could also have the same video/audio setup, or could
be just a video component (or just an audio component). While each
of the objects shown has a single audio component, one of ordinary
skill will recognize that some embodiments will have multiple audio
components (e.g., if a camera records several audio tracks as
separate files and imports the files with a video file as part of a
single clip).
[0147] The figure also illustrates the anchoring of clip 820 to
clip 810. In some cases, multiple clips will be anchored to the
same primary lane clip, and the multiple anchored clips may overlap
in time. In this case, multiple secondary lanes may be used. Some
embodiments assign lane numbers to each clip object that indicates
the clip object's lane within a collection.
[0148] All of the primary lane objects are assigned a lane number
of zero in some embodiments, with lanes above the primary lane
getting increasing numbers and lanes below the primary lane getting
decreasing (negative) numbers. For instance, a separate audio clip
might be anchored to a clip in the primary lane and displayed below
the primary lane. In this case, within the primary collection 803,
the anchored clip 820 has a lane number of 1. The lane numbers
indicate compositing order for video in some embodiments. Whereas
two audio files can be combined fairly easily (mixed), images from
two video files cannot be displayed at the same time. Thus, some
embodiments composite higher lane number clips on top of lower lane
number clips. If no compositing effect is defined between two clips
at the same time, then the clip in the higher lane will be
displayed. However, various compositing modes and effects may be
used to combine the pictures (e.g., compositing modes such as
subtract, darken, multiply, etc. that combine pixel information of
two images, as well as effects such as scaling the top image to get
a picture-in-picture, applying a color mask to the top image,
etc.).
[0149] The items in a lower-level nested collection will also have
lane numbers that refer to their lane order within that collection.
For example, the collection object 810 has two clips 825 and 830,
that each has a lane number of zero. However, this collection
object could have anchored clips in multiple lanes. For the purpose
of compositing at time of rendering, the items within the
collection 810 would be composited initially according to the
ordering within the collection, then the output of that would be
composited within the primary collection according to the ordering
of the primary collection. Similarly, for each of the lowest-level
collections (e.g., collection 805), the video components are all
assigned to lane zero and the audio components are assigned to lane
-1.
[0150] FIG. 9 also illustrates the ranges (e.g., durations) of the
various clip objects. For the lowest level collections and their
components (e.g., collections 805, 815, 825, 830, and 820), the
total range is the full length of the media to which the components
refer, whereas the trimmed range is a subset of this range based on
user edits (e.g., trim edits). In this case, collections 815 and
825 are not trimmed at all, whereas collection 805 is trimmed on
both sides and the start of collection 830 is trimmed.
[0151] For collection 810, the total range is the sum of the
trimmed ranges of its primary lane clips, which in this case are
collections 825 and 830. Thus, the variable Total Range 2=Trimmed
Range A+Trimmed Range B. In this case, the collection 810 is not
separately trimmed, such that its trimmed range equals its total
range. This means that, although there is more media within clip
830, while editing the primary collection 803 the media-editing
application will not allow a user to increase the duration of clip
810 beyond that of Total Range 2. However, a user could open up the
clip 810 in the timeline and apply trim edits to either of clip 825
and 830. Modifications to the trimmed range of these clips will
affect the total range of the clip 810. In addition, within the
primary collection 803, a user can modify the trimmed range of clip
810 to shorten the clip. Trimming from the beginning would result
in less of the media of collection 825 being used in the component
presentation, while trimming from the end would result in less of
the media of collection 830 being used in the composite
presentation.
[0152] The above figures illustrated various properties of certain
types of clip objects. One of ordinary skill in the art will
recognize that some embodiments may use additional different
subclasses of clip objects. For instance, some embodiments store
reference clips in the event data structures. Rather than copying
these clips when a user adds the clip to a media project, the
media-editing application creates a clip instance in the collection
for the media project. This clip instance is similar to a
collection clip, but does not contain clips of its own. Instead,
the clip instance refers to the reference clip in the event. Any
edits to the reference clip are then reflected in all instances of
the clip in the media project (or other media projects). The
reference clips will be described below in detail for multi-camera
clips, but some embodiments include reference clips for additional
types of clips (e.g., individual video clips, compound clips,
etc.).
[0153] Furthermore, some embodiments store generators (effects that
create their own video images rather than modifying existing video
images), transitions between clips, audition stacks (sets of clips
that can be swapped out for each other), markers, and keywords as
clip objects. The above-described data structures (e.g., the clip
objects, asset objects, event objects, project objects, etc.) are
used by some embodiments of the media-editing application for
displaying information in the GUI of the application and rendering
a project, as well as for determining whether to apply a spatial or
temporal conform effect to a clip.
III. Multi-Camera Clip Creation
[0154] The previous sections described the user interface of a
media-editing application of some embodiments as well as the data
structures used by the application to store information about
certain media clips, media projects, etc. Such a media-editing
application may have the capability to generate and use
multi-camera media clips, and may include features specific to such
clips.
[0155] As described above, some embodiments generate multi-camera
media clips that include several media clips captured by multiple
different media capture devices. The media-editing application
automatically generates these multi-camera clips from the
individual media clips using metadata stored with the media clips.
In some embodiments, the generation process uses either a default
multi-camera clip generation algorithm or adapts the algorithm
based on preference settings input by a user.
[0156] FIG. 10 conceptually illustrates a process 1000 of some
embodiments for generating a multi-camera media clip from a set of
media clips. The process 1000 is performed by the media-editing
application of some embodiments in response to user input
indicating a set of clips from which to generate the multi-camera
clip. This process will be described by reference to FIG. 11, which
illustrates user input for creating such a multi-camera media clip
over five stages 1110-1150.
[0157] As shown, the process 1000 begins by receiving (at 1005) a
set of clips for a multi-camera clip. In some embodiments, these
clips may be any clips stored in an event (e.g., video clips, still
images, audio clips, etc.), including compound clips or
previously-generated multi-camera clips. Some embodiments require
all of the clips to be stored in the same event, while other
embodiments allow a user to combine clips from multiple events into
a single multi-camera clip. Some embodiments restrict the type of
clips used to generate a multi-camera clip to prevent the use of
compound clips or multi-camera clips, which may themselves have
content captured by multiple different devices.
[0158] The first stage 1110 of FIG. 11 illustrates a clip browser
1105 showing several media clips. The user has selected these clips
and opened a drop-down (e.g., via a right-click, two-finger tap, or
other such selection input). As shown, the user has located a
cursor over the menu option for "New MultiCam Clip". As a result of
selecting this menu option, the second stage 1120 illustrates a
dialog box 1115 that provides the user with several options for the
multi-camera clip. The user can title the clip, input a starting
timecode, set video properties, and set audio and render
properties. The video properties, in some embodiments, includes the
format (e.g., 720 p HD), the dimensions (e.g., 1280.times.720), and
the frame rate (e.g., 30 p). The user can either set these
properties based on common clip properties (e.g., the properties
most common among the selected clips, the properties of a
particular clip, etc.) or provide custom settings (e.g., as shown
in FIG. 4 for a new project).
[0159] The dialog box 1115 also allows the user to choose whether
the application will use its default settings to create the
multi-camera clip or whether the application should prefer certain
metadata for assigning the selected clips to angles, ordering the
clips within the angles, and synchronizing the angles. In addition,
the dialog box provides an option for determining whether the
application should perform a second level of synchronization using
audio data. As shown in stage 1120, the user is selecting the
custom option in order to view these various choices.
[0160] Returning to FIG. 10, the process 1000 next assigns (at
1010) each of the clips in the set to a particular angle using clip
metadata. This operation will be described in detail below by
reference to FIG. 12. The angles, in some embodiments, are groups
of clips the content of which was captured by the same device. For
instance, a director might shoot a scene with four cameras
simultaneously in order to capture four different angles of the
scene (e.g., straight on, close up, overhead, etc.).
[0161] As shown at stage 1130 of FIG. 11, in some embodiments the
metadata used includes the camera angle (e.g., user-provided
metadata for the clip) and/or camera name (e.g., information
automatically generated by the media-editing application for the
clip upon import of the clip's content). In addition, the
application allows the user to choose to have each clip placed in
its own angle.
[0162] Next, the process generates (at 1015) a sequence of the
assigned clips for each angle. That is, the process determines an
order for the clips in the angle (e.g., using time of day or
timecode metadata), then spaces these clips out over time according
to this metadata. This operation will be described in detail below
by reference to FIG. 14. As shown at stage 1140 of FIG. 11, in some
embodiments the metadata used may include the timecode and the time
of day (or creation date, as described above in Section II) of the
clips. Various different algorithms may be used by different
embodiments to translate this metadata into a sequenced angle.
[0163] The process 1000 then synchronizes (at 1020) the sequences
of the different angles in the multi-camera clip. The
synchronization operation aims to have content that was
simultaneously recorded be aligned in time within the multi-angle
clip. Thus, an overhead shot and a close-up shot of the same action
should ideally be lined up in the clip such that at a particular
time within the clip the video images for each angle show the same
time in the action. As shown at the fifth stage 1150 of FIG. 11,
the application can use time of day or timecode metadata for
synchronization, as well as lining up the start of the first clip
in each angle or the first marker in the clips of the angles. As
with the sequencing, various different algorithms may be used by
different embodiments to translate the timing metadata into aligned
angles. In addition to synchronizing by metadata, some embodiments
perform a second level of synchronization using audio data. These
embodiments compare audio portions of clips located near to each
other in time (after the initial metadata synchronization) from
different angles to identify matching audio, then align the clips
further using any matching audio. The synchronization operations
will be described in detail below by reference to FIGS. 16 and
18.
[0164] A. Assigning Clips to Angles
[0165] As stated, when a user selects several clips from which to
generate a multi-camera media clip, the media-editing application
first assigns the several clips to one or more angles based on
camera metadata. FIG. 12 conceptually illustrates a process 1200
for such assignment of clips to different angles of a multi-camera
media clip. The process 1200 will be described by reference to FIG.
13, which conceptually illustrates the assignment of a set of nine
clips 1305-1345 to three different angles for a multi-camera media
clip.
[0166] The process 1200 begins by receiving (at 1205) a set of
clips to assign to different angles for a multi-camera media clip.
These may be a set of clips selected by a user, and the content of
the clips may have been captured by several different devices or a
single device. In some embodiments, the media clips might be video
clips, audio clips, still images, or other content. For example, a
set of media clips could include video (with accompanying audio)
taken by one or two different cameras, still images taken by yet
another different camera, as well as audio-only clips recorded by a
microphone separate from any of the cameras.
[0167] The clips, in some cases, will store metadata about their
represented content. This metadata may include information about
the device that captured the content and when the content was
captured (in addition to other data, such as the video or audio
properties). FIG. 13 conceptually illustrates nine clips 1305-1345
with their metadata. These clips include five video clips 1305-1325
and four still images 1330-1345. The video clips include angle IDs
("Wide Shot" and "Close-up"), which are user-entered metadata. In
some embodiments, a user can select a media clip (e.g., in the clip
browser) and enter an angle ID (or camera ID) for the clip through
the inspector display area. In addition, the video clips include
starting and ending timecode information and start time of day
information. The still images include a camera ID ("10101") and
Exif (Exchangeable image file format) date, which is data
indicating the date and time an image was captured.
[0168] Returning to FIG. 12, the process 1200 selects (at 1210) an
unassigned clip from the set of received media clips. Some
embodiments select the clips in the order they are stored in their
event, in alphabetical order by clip name, in some other order, or
in a random order. Initially, of course, all of the clips are
unassigned.
[0169] The process then identifies (at 1215) an angle for the
selected clip using clip metadata. In some embodiments, the
media-editing application may use a variety of different metadata
to identify the angle for a particular clip. In the absence of a
preference input by a user, some embodiments prefer a user-entered
angle ID, then a user-entered camera name (specified at time of
import in some embodiments), then a camera ID automatically
generated at time of import among data stored with the clip data
structure, then look to other metadata stored with the source file
if none of the previous data is available (e.g., a manufacturer ID
or device name). If none of this metadata is available, then the
application assigns the clip to its own angle. In the case of the
clips shown in FIG. 13, the video clips 1305-1325 each have an
angle ID, while the still images 1330-1345 each have a camera ID.
In this case, the video clip angle IDs are user-entered
information, whereas the camera ID for the still images is
automatically-generated data.
[0170] The process then determines (at 1220) whether a set has
already been created for the angle in the multi-camera clip. In
some embodiments, the process checks each available piece of
metadata for the clip to determine whether the clip could be
assigned to an existing angle. For instance, if a first clip has a
camera ID but no angle ID and a second clip has an angle ID as well
as the same camera ID as the first clip, then the application will
assign the second clip based on its camera ID rather than only
examining the angle ID and assigning the second clip to a new angle
because no angle yet exists for that angle ID. On the other hand,
some embodiments will always use the first piece of information for
which the clip has a value. Thus, in the case just mentioned, such
embodiments would assign the second clip to a new angle based on
its angle ID. If the clip does not have any sort of angle
identification metadata, then the clip will be assigned to its own
angle.
[0171] When a set has already been created for the angle, the
process adds (at 1225) the selected clip to the set of clips
associated with the identified angle. On the other hand, when there
is no set yet created for the angle, the process creates (at 1230)
a set for the identified angle and adds the selected clip to the
set. In some embodiments, the media-editing application temporarily
stores these sets of clips in volatile memory (e.g., RAM) while
performing additional operations of the multi-camera clip creation
process (i.e., ordering and synchronization). In some such
embodiments, media-editing application data structures are not
actually created for the sets of clips until the sets are ordered,
at which point the application generates the angles of the
multi-camera clip in a data structure for the multi-camera clip.
The structure of such a multi-camera clip is described in detail
below.
[0172] The process 1200 then determines (at 1235) whether
additional clips remain to be assigned to the different angles.
When additional clips remain, the process returns to 1210 to select
another unassigned clip for assignment to an angle. Once all of the
clips have been assigned, the process 1200 ends.
[0173] In addition to illustrating the different clips with their
respective metadata, FIG. 13 also illustrates the assignment of the
clips to three different angles. Assuming the clips 1305-1345 are
assigned in order from "Clip 1" to "Clip 9", the media-editing
application first selects clip 1305, creates an angle "Wide Shot"
1350, and assigns the clip 1305 to this angle 1350. Next, the
application assigns the clip 1310 to a new angle "Close-up" 1355
based on this clip's angle ID. For the third clip 1315, no new
angle is needed, as this clip also has the angle ID "Wide Shot" and
is thus assigned to the already-existing angle 1350. The video
clips are assigned to these two angles 1350 and 1355 as shown, and
then the application gets to the still images.
[0174] The application identifies the camera ID as "10101" for the
clip 1330, determines that this is the only metadata for this clip
useful for angle assignment and creates a new angle 1360 with this
name. In some embodiments, camera IDs, camera names, or even clip
names may be used to name angles, while other embodiments create
generic angle names such as "Angle 3" when no angle ID metadata
exists for the clips assigned to that angle. As shown, the four
still image clips 1330-1345 all have the same camera ID, and thus
the application assigns these four clips to the angle 1360.
[0175] As mentioned, in some embodiments, these angles exist in
volatile memory at this point in the clip creation process. Other
embodiments create a multi-camera clip structure (described below
by reference to FIG. 20) during the angle assignment process and
create angles within this clip structure as the angles are created
by process 1200 (or a similar angle assignment process.
[0176] B. Angle Sequencing
[0177] After assigning clips selected for a multi-camera clip to
different groups (angles) of the multi-camera clip, the
media-editing application of some embodiments orders and sequences
the clips within the groups. FIG. 14 conceptually illustrates a
process 1400 of some embodiments for generating a sequence of
ordered clips for the various angles of a multi-camera media clip.
The process 1400 will be described by reference to FIG. 15, which
illustrates the sequencing of the clips 1305-1345 from FIG. 13.
[0178] The process 1400 begins by receiving (at 1405) sets of clips
assigned to different angles for a multi-camera clip. In some
embodiments, these clips have been assigned to the angles by the
media-editing application using the process 1200 or a similar
process. These may be clips that have an extended duration (e.g.,
video and audio clips) or may only have an instantaneous time
(e.g., still images, which consist of a single frame).
[0179] As shown in FIG. 13, the media clips may store timing
metadata about the source video to which they refer. For instance,
the video clips 1305-1325 include both timecode ("TC") information
and time of day ("ToD") information. For example, the metadata for
Clip 1 1305 indicates that the timecode starts at 01:00:00:00
(given in hours:minutes:seconds:frames) and ends at 01:10:00:00,
for a duration of exactly ten minutes. The time of day information
indicates that filming for this clip started at 5:35 PM on May 25,
2011. In some embodiments, as shown, cameras will record time of
day down to the nearest second. However, time of day information
will generally not take into account frames, whereas timecode
stores information at the frame level (i.e., fractions of a second)
and is thus more precise. Furthermore, this example shows only a
starting time of day. Many cameras only record starting or ending
times, but not both. To record the duration of the clip, the camera
records starting and ending timecode information (duration could
also be determined based on the frame rate and number of frames).
Thus, the media-editing application would use the time of day to
identify start times for the clips and timecode to derive the
duration.
[0180] The process 1400 next selects (at 1410) a set of clips
associated with a particular angle. As described above, in some
embodiments the information associating the clips with the
different angles is stored in volatile memory at this point, in
which case the application retrieves this information from the
memory in order to evaluate the clips. The process may evaluate the
angles in a particular order such as the order in which they were
created, or a random order. Some embodiments might also evaluate
the angles in parallel, performing operations 1415-1425 at the same
time for multiple angles.
[0181] The process identifies (at 1415) a useable set of timing
metadata for the selected set of clips. For video (or audio) clips,
some embodiments first identify whether the clips in the selected
angle can be sequenced using timecode. In order to do so, different
embodiments of the media-editing application apply different
criteria to the timecode of the media clips. For instance, the
first test the application applies in some embodiments is whether
the timecode of any of the clips overlaps. In the case of the angle
1355 ("Close-up") of FIG. 13, these clips both start at a timecode
of 00:00:00:00, so the timecode does not provide any useful
ordering information. If there is no overlap, then the application
determines whether the total span of the timecode of all of the
clips is greater than a threshold duration (e.g., one hour, one
day, three days, etc.). For example, if the clips are 100 hours
apart in timecode, then they will probably not form a useful
multi-camera clip sequence with this information.
[0182] In addition, some embodiments will not use timecode if all
of the clips start one frame after the end of another clip in the
set (or, in some embodiments, within a second of the end of the
previous clip). This is generally indicative of a camera that uses
continuous timecode but which does not roll through timecode when
not recording, and thus will not correspond to actual time (common
with digital tape-based recording). However, in this case, the
media-editing application of some embodiments will use the ordering
(i.e., that a first clip should come before a second clip) from the
timecode, as this will most likely be reliable. For spacing the
clips when this is the case, the application will attempt to use
time of day information.
[0183] If the timecode information cannot be used, the application
will attempt to use the time of day information. The time of day,
as mentioned, is not as precise as timecode because it does not
generally record time at the frame level. In the case of the clips
in angle 1355 ("Close-up"), the timecode information starts at 0
for both clips, so the application would use the time of day
information for ordering and spacing purposes (while using the
timecode to determine duration). The clip 1310 starts at 5:36:00 PM
and has a duration of exactly seven minutes, while the clip 1320
starts at 5:55:00 PM and has a duration of eighteen minutes and
nineteen frames, so no overlap exists in the time of day
information. Some embodiments apply a threshold duration test to
the time of day as well, mandating that the duration from the start
of the first clip to the end of the last clip not span more than a
threshold duration (e.g., one hour, one day, three days, etc.). For
instance, a clip might be marked as having been filmed in 1990
while another clip is from 2011, but it is unlikely the user would
actually want a multi-camera clip with a length of 21 years.
[0184] If neither the timecode nor the time of day is determined
suitable, the application will nevertheless attempt to at least use
the information to put the clips in order, even if the information
may not work for properly spacing the clips along a timeline. In
the example in which a first clip has a 1990 date while a second
clip is from 2011, the application would order the first clip
before the second clip. If no time of day information is available
at all, then the application places clips in order based on any
other metadata that can be found, such as date of import of the
source files represented by the clips.
[0185] For still images, which do not have a duration (or, more
accurately, have a duration of one frame), some embodiments
initially look at the Exif data (data generated by the camera
according to a standardized format for recording image metadata) to
find a date and time when the image was captured. When this
information is not available, the application will look to the
creation date (which might be the date of import of the image
files) to order the still image clips. In general, the metadata for
still images keeps time at the level of seconds, and thus multiple
still images captured by a single camera one after another might
have metadata indicating that they were taken at the same time.
[0186] With the metadata identified, the process orders (at 1420)
the set of media clips according to the identified set of timing
metadata. As described, the media clips may be ordered based on
timecode, time of day information, or other information that the
application can identify from the clips and utilize for ordering.
In some embodiments, the media clips are stored in the array of an
anchored collection within a multi-camera media clip structure, as
described below by reference to FIG. 20.
[0187] In addition, so long as the timing information for the clips
of the selected angle passes the criteria indicative of its
accuracy, the process inserts (at 1425) gaps into the ordered set
in between the media clips according to the identified set of
timing metadata. When none of the timing information passes this
criteria, some embodiments do not insert any gap clips in the
sequence and just leave the clips in order one after another.
[0188] However, when the available information is likely to
indicate the spacing of the clips, the media-editing application
spaces the clips out along a timeline and inserts gaps between the
clips. If a first clip ends at the five minute mark and a second
clip begins at the six minute mark, then the application inserts a
one minute gap between the two clips. Due to the nature of the data
structures used to store the multi-camera clips, in some
embodiments these gaps are stored as separate clip structures
within the array of the anchored collection that represents the
angle.
[0189] FIG. 15 illustrates the ordered angles 1350-1360. The angles
1350 and 1355 contain video clips. To order the three clips 1305,
1315, and 1325 within their angle 1350, the media-editing
application of some embodiments uses the timecode (as this
information is not overlapping and is contained within a forty
minute duration). As shown, the angle 1350 starts at a timecode of
01:00:00:00 with clip 1305. After ten minutes, this clip ends and a
gap clip begins, until the 01:15:00:12 mark when the clip 1325
begins for just under ten minutes. Another gap clip begins at the
twenty-five minute mark, until the clip 1315 begins at a timecode
of 01:28:54:02. This clip lasts approximately eight minutes, for a
total length of thirty-seven minutes.
[0190] The "Close-up" angle 1355 only contains two clips 1310 and
1320. However, for these clips, timecode does not provide useful
information because the camera that captured the clips starts each
captured video at a timecode of 00:00:00:00. However, the time of
day information does provide useful timing metadata. As shown, the
first clip 1310 starts at 5:36:00 PM, and the timecode indicates
that it has a duration of seven minutes. Next in the array for the
angle is a large gap clip, which lasts until the second clip 1320
begins at 5:55:00 PM. The duration of the clip 1320 is eighteen
minutes and nineteen frames (e.g., 19/24 of a second if the frame
rate is 24 fps). Thus, the total length of the angle 1355 is
thirty-seven minutes and nineteen frames.
[0191] The angles 1350 and 1350 only include video clips, which can
have extended durations. For still images, which have a duration of
a single frame, some embodiments fill up the gaps between images by
extending the duration of the still images until the start time for
the next clip in the ordered sequence. When multiple still images
have the same start time (e.g., because they were taken with a
rapid-shoot camera that can capture multiple images per second),
some embodiments identify the next start time in the ordered set of
clips (after that shared by the images with the same time) and
space out the images within the allotted time. As an example, if
eight images have a time of 1:00:00 PM and the next image has a
time of 1:00:01 PM, then the eight images will be evenly spread
across the one second of 1:00:00 PM in the timeline (e.g., each
will have a duration of 3 frames at 24 fps). In some embodiments,
in order to determine the order of the images with the same start
time, the media-editing application looks at the file names of the
images, which are often automatically named in a number order by
the camera (e.g., "IMG.sub.--0035", "IMG.sub.--0036", etc.).
[0192] As shown in FIG. 13, the Exif dates for the still image
clips are 5:40:00 PM for clip 1345, 5:42:30 PM for clip 1330,
5:50:00 PM for clip 1340, and 5:55:00 PM for clip 1335, all on May
25, 2011. These times are all within a threshold duration (so long
as the threshold duration is longer than 15 minutes), and thus the
Exif times pass the criteria for use in ordering the clips and
identifying start points for the clips in the timeline.
[0193] FIG. 15 illustrates these four clips 1330-1345 along a
timeline for the angle "10101" 1360. In this case, the timeline
begins at 5:40 PM, the time of the first image clip 1345. This clip
has a duration of two minutes and thirty seconds, until the next
image clip 1330 begins at 5:42:30 PM. Next, at 5:50 PM, the clip
1340 begins. This clip ends at 5:55 PM, where the last clip 1335
begins. In some embodiments, as shown, this clip is left with an
open-ended duration until after synchronization of the angles. The
still image clip, after synchronization, will have a duration that
extends until the end of the multi-camera clip, which will depend
on the lengths and synchronization of the angles 1350 and 1355.
Instead of extending the still image clips to the start time of the
next clip, some embodiments assign a fixed duration to the clips
(e.g., one minute), which can be shortened automatically if another
clip begins before that duration is up.
[0194] Returning to FIG. 14, after inserting gap clips into the
current angle in order to generate the sequencing for the angle,
the process 1400 determines (at 1430) whether any additional angles
remain that need to be sequenced. Once the process has ordered and
sequenced all of the angles, the process 1400 ends. When additional
angles remain, the process returns to 1410 to select the next angle
and determine a sequence for the angle.
[0195] As mentioned, in some embodiments the media-editing
application stores these angles, or ordered sequences of clips, as
collection clip structures within a multi-camera media clip
structure. In some embodiments, this multi-camera clip structure is
a collection that includes a gap element to which each of the angle
collection structures is anchored. The media-editing application of
some embodiments generates the sequence for each of the angles
separately, then synchronizes the sequences once they are all
generated.
[0196] C. Initial Synchronization
[0197] After assigning the media clips for a multi-camera media
clip to angles and then generating a sequence for each of the
angles, the media-editing application of some embodiments
synchronizes the angles. In some embodiments, this involves two
separate operations: an initial synchronization using timing
metadata (e.g., the data used to order and sequence the angles
individually) and a fine tuning of the synchronization using audio
data. FIG. 16 conceptually illustrates a process 1600 of some
embodiments for performing the initial synchronization utilizing
the timing metadata. The process 1600 will be described by
reference to FIG. 17, which illustrates the alignment of the
sequences 1350-1360 from FIG. 15 using the metadata for clips
1305-1345 shown in FIG. 13.
[0198] The process 1600 begins by receiving (at 1605) a set of
angles with the clips in each angle ordered in a sequence. As
stated above, some embodiments store each of these angles as an
anchored collection clip structure within a multi-camera clip
structure (which is itself a collection structure). In some
embodiments, the sequences have been generated by the process 1400
or a similar process. The angles might all be sequenced according
to the same type of metadata (e.g., timecode) or be sequenced using
different types of metadata (e.g., as in FIG. 15 with one angle
sequenced using timecode, another with time of day information, and
a third with Exif dates). In addition, in some cases at least one
of the angles will have the clips in order, but not spread out
(e.g., because the only available timing information for the clips
was not deemed reliable enough to space out the clips).
[0199] Next, the process 1600 selects (at 1610) a first one of the
angles and places the selected angle in a set of synchronized
angles. The set of synchronized angles, in some embodiments, is the
set of angles that have been evaluated and had their start times in
the multi-camera clip adjusted for alignment with the other angles.
In some embodiments, in order to align a first angle with a second
angle, the media-editing application inserts a gap clip at the
start of the sequence for whichever of the first and second angles
starts later. Because at this stage the process 1600 has not yet
evaluated any of the angles, there are no angles with which to
synchronize the first angle, and thus the process sets the first
clip in this first selected angle as starting at time zero of the
multi-camera media clip. That is, the first selected angle does not
have a gap clip inserted at its start at this point.
[0200] The process then selects (at 1615) one of the unevaluated
angles as a current angle. If there is only one angle in the
multi-camera clip, then no synchronization is necessary, of course.
The media-editing application selects these angles in the order in
which they are stored in the multi-camera clip collection data
structure in some embodiments. For instance, in the example shown
in FIG. 15, the media-editing application might first select the
"Wide Shot" angle 1350 and set this as its initial synchronized
angle, then subsequently select the "Close-up" angle 1355 to align
this angle to the "Wide Shot" angle. In some embodiments, the
different angles are each stored as an anchored collection in the
multi-camera collection data structure, and each has a lane number
to indicate order. Some embodiments select the angles starting from
the highest or lowest lane number.
[0201] Next, the process 1600 determines (at 1620) whether any
timing metadata of the clips is useful to synchronize the current
angle with at least one of the angles in the set of synchronized
angles. In some embodiments, this timing metadata may be either the
timecode or the time of day (creation date), as with the angle
sequencing process. Some embodiments first determine whether the
timecode is useful for synchronization because timecode has a
higher precision than time of day (as timecode uses increments of
frames, whereas time of day only uses full second increments).
However, with the exception of professional setups, multiple
different cameras will not usually have their timecodes
synchronized. Professional setups may run multiple cameras attached
(e.g., wirelessly, via a wired connection) to a single timecode
synchronizer. However, for many users, the timecode of a first
camera is not related to the timecode of a second camera.
[0202] In order to determine whether two angles can be synchronized
using timecode data, some embodiments first determine whether
timecode was used to order both the angles. If timecode was not
useful for ordering an angle (e.g., because the timecode of clips
within the angle overlap), then the application will not use the
timecode data for synchronizing the angle. For example, the
timecode data for the "Close-up" angle 1355 was not useful for
sequencing the clips of that angle, and thus will not be used for
synchronizing angle 1355 with the "Wide Shot" angle 1350. When both
of the angles were sequenced using timecode data, then the
application compares the timecodes for one of the angles with the
timecodes for the other angle. Some embodiments require that the
timecodes of the first angle at least partially overlap with the
timecodes of the second angle in order to use the timecode data,
while other embodiments require that the total time spanned by the
timecodes not be greater than a threshold duration (e.g., one hour,
twenty-four hours, seventy-two hours, etc.). That is, if the
timecodes of a first angle run from 01:00:00:00 to 03:00:00:00,
while the timecodes of a second angle run from 22:00:00:00 to
26:00:00:00, this would be over a twenty-four hour threshold in
some embodiments. Other embodiments compare the gap between the two
sets of timecodes (nineteen hours in the above example) rather than
the overall time spanned to the threshold duration.
[0203] Some embodiments compare the timecode data of the currently
selected angle to each angle already synchronized to determine
whether the currently selected angle can be synchronized with any
of the other angles. For instance, the first two angles might be
synchronized using time of day information, but the third angle
could synchronize to one of the first two angles using timecode
information. When the current angle can be synchronized to a
particular other angle using timecode data, the process uses this
timecode data. However, when the current angle cannot be
synchronized to any of the angles using timecode data, then the
media-editing application of some embodiments will attempt to use
time of day information.
[0204] Some embodiments apply similar constraints on the use of
time of day information as described above for timecode data, such
as requiring that the span of the current angle at least partially
overlaps or is within a threshold duration of another angle to
which it is compared. If a user has set all of his different
cameras to the correct time, then the time of day data will often
be overlapping (at least in the case of simultaneous filming of a
scene by the multiple cameras), and thus useful. For instance,
although the timecode information of the example "Close-up" angle
1355 is not useful, the time of day information for its clips 1310
and 1320 (running from 5:36 PM to 6:13 PM) overlaps with the time
of day information for the clips 1305, 1325, and 1315 of the "Wide
Shot" angle 1350 (running from 5:35 PM to 6:12 PM). As in the
previous section, the timecode information is still useful to
determine the duration of the clips (and thus the duration of the
angle).
[0205] Still images, as described above, are ordered using their
Exif data, or creation date information when the Exif data is
unavailable. The media-editing application compares the timestamps
of these types of data with the time of day information of the
video or audio clips in other angles in a similar manner to that
described above (i.e., determining whether the timespan of the
first angle overlaps or is close to that of another angle). In
addition, some embodiments may include still images and video/audio
clips in the same angle (e.g., when a digital camera is used to
both take still images and shoot video). In this case, the Exif
dates may be considered along with the video's time of day
information as the same sort of metadata for both ordering and
synchronization purposes.
[0206] When the timing metadata (either the timecode or the time of
day information) is useful to synchronize the currently selected
angle with at least one of the other angles, then the process
synchronizes (at 1625) the current angle to the set of synchronized
angles using the timing metadata. Thus, for example, if two angles
that have already been synchronized using their timecode, but the
currently selected angle only includes time of day information
which overlaps with time of day information for one of the other
two angles, then the application will attempt to synchronize the
current angle to the angle with overlapping time of day information
using that angle's time of day information rather than its
timecode. If a first angle has time of day information, a second
angle has both time of day information and timecode information,
and a third angle only has timecode information, in some
embodiments the application is enabled to synchronize these three
angles together by synchronizing both the first and third angle to
the second angle.
[0207] In some embodiments, synchronizing an angle to a set of
angles involves inserting (or adjusting) a gap clip at the start of
one or more of the angles, unless the currently selected angle
starts at exactly the same time as the earliest angle in the set.
When the current angle starts at an earlier time than any of the
already synchronized angles, then the application inserts a gap at
the start of the other angles with a length equal to the offset of
the current angle. If one of these angles already has a gap clip,
then the application extends this gap by the length of the offset.
When the current angle starts after at least one of the other
angles, the application inserts a gap at the start of the currently
selected angle with a length equal to the offset.
[0208] As FIG. 17 illustrates, when synchronizing the "Close-up"
angle 1355 to the "Wide Shot" angle 1350, the application inserts a
one minute gap at the start of the "Close-up" angle 1355 because it
starts at 5:36 (compared to 5:35 for the "Wide Shot" angle 1350).
The third angle "10101" 1360 starts at 5:40, so the application
inserts a five minute gap at the start of this angle. In addition,
the application extends out the duration of the still image clip
1335 for eighteen minutes (from 5:50 to 6:13 PM). Some embodiments
do not extend a still image clip that is the last clip in an angle
all the way to the end of the media clip, but instead place a
maximum length on the still image (e.g., one minute, five minutes,
etc.).
[0209] On the other hand, when the process 1600 cannot find timing
metadata with which to accurately synchronize a currently selected
angle, the process synchronizes (at 1630) the angle to the set of
synchronized angles without using timing metadata. In some
embodiments, the application starts the first clip of the angle at
the same time as the first clip of the angle with the earliest
start time. In some embodiments, this is accomplished by simply not
inserting a gap clip at the start of the collection representing
the angle. So long as the anchor offset of the angle collections is
kept at zero, then any angles that do not start with a gap clip
will have the earliest start time in the multi-camera media
clip.
[0210] As shown at stage 1150 of FIG. 11, some embodiments allow a
user to choose that the media-editing application synchronizes all
of the angles at the start of the first clip of each angle. When a
user selects this option, rather than looking at timing metadata
for synchronizing, the application orders the different angles
using the timing metadata (or as specified by the user), then
simply aligns the angles so that they each start at the same time.
In some embodiments, this alignment is simply performed by not
inserting gap clips at the start of any of the angles, because the
angles are all anchored to a gap clip with the same anchor offset
(0, 0), as described below by reference to FIG. 20.
[0211] In addition, the application allows a user to choose to
synchronize the angles via a first marker in each angle. Users can
set markers on clips, which in some embodiments are stored as clip
data structures with a one-frame duration, anchored to the marked
clip at a particular time in the clip. With this option selected,
the application will identify the first marker in each ordered
angle, then insert gap clips at the start of the angles as
necessary so that these markers are aligned. This allows users to
identify a particular frame in one clip from each of several
cameras, and mark this frame for alignment with other such frames.
This may be especially useful when a user films a scene from
multiple different angles and can identify a specific frame as
representing the exact same time in the different angles.
[0212] Returning to FIG. 16, after synchronizing the current angle,
the process 1600 determines (at 1635) whether additional angles
remain to be synchronized. When all of the angles have been
synchronized, the process ends. Otherwise, the process returns to
1615 to select the next angle and synchronize this angle with the
other previously synchronized angles.
[0213] The process 1600 is one conceptual example of a process of
some embodiments for synchronizing angles using timing metadata (or
other criteria if the timing metadata do not provide adequate
information). Other embodiments use different variations of the
synchronization process that may vary somewhat from process 1600.
For instance, some embodiments initially attempt to synchronize all
of the angles at once using timecode information. The process
determines whether all of the timecodes of the various angles
overlap with each other to some extent (i.e., whether there are any
gaps in the overall timecode, treating each angle as a continuous
block) or whether all of the timecodes fit within a particular time
range (e.g., a day), depending on the criteria used by the
application (this criteria may be a default setting or a
user-determined setting, in some embodiments). When the timecode
data fits the required criteria, the application aligns all of the
data using these timecode. In some embodiments, when there are only
one or two outlier angles, the application synchronizes the other
angles using their timecode and then aligns the outlier angles with
the start of the first clip of the earliest angle.
[0214] Some embodiments instead try to use time of day information
for all of the angles when the timecode for at least one of the
angles does not pass the criteria for synchronization. The
application then applies similar criteria to the time of day
information for the angles (determining whether all of the angles
overlap or whether all of the angles are within a threshold
duration). If all of the angles can be aligned with the time of day
information, then the media-editing application uses this time of
day information to synchronize the angles. If the time of day
information cannot be used for all of the angles, then different
embodiments may apply different options.
[0215] For example, some embodiments use whichever metadata passes
the usefulness criteria for the greatest number of angles to
synchronize those angles, then attempts to synchronize the other
angles to any of the synchronized angles using time of day
information. Any angles without useful timing metadata will start
at the beginning of the multi-angle clip. As will be described in
Section IV, some embodiments allow the user to re-align the angles
manually after the application automatically creates the
multi-camera clip.
[0216] D. Fine-Tuning Synchronization
[0217] In addition to synchronizing the angles of a multi-camera
media clip based on timing metadata of the individual clips, some
embodiments fine tune this alignment using audio comparisons
between clips in different angles. In some embodiments, the
media-editing application compares clips from different angles that
overlap in time in order to identify clips that have the same (or
similar) audio or same (or similar) sections of audio. The
application can then determine an offset between the audio of the
two clips and re-align one of the clips to compensate for the
offset. A process of some embodiments for analyzing audio in order
to synchronize clips is described in detail in the U.S. patent
application Ser. No. 13/019,986, entitled "Automatic
Synchronization of Media Clips", filed Feb. 2, 2011, which is
incorporated herein by reference. Rather than comparing entire
clips, which may be a processing-intensive procedure, some
embodiments assume that the initial synchronization will be
accurate to within a particular threshold (e.g., five seconds, one
minute, two minutes, etc.) and only compare audio of one clip to
audio of other clips within that threshold in the timeline of the
multi-camera media clip.
[0218] FIG. 18 conceptually illustrates a process 1800 of some
embodiments for synchronizing media clips across a set of angles
within a multi-camera media clip. The process 1800 will be
described by reference to FIG. 19, which illustrates the fine-tuned
audio synchronization of the angles 1350-1360 over four stages
1910-1940.
[0219] The process 1800 begins by receiving (at 1805) a set of
synchronized angles of a multi-camera media clip. In some
embodiments, the angles (groups of media clips) have already been
synchronized based on timing metadata of their media clips using
the process 1600 or a similar alignment process. As described
above, some embodiments store these angles as collection clip
structures within a multi-camera clip structure, which itself is a
collection clip structure. The clips might all be video clips with
accompanying audio (e.g., clips with a video component to which an
audio component is anchored, as described above in Section II), or
include a number of audio clips with no video component, video
clips with no audio component, and still image clips (which
generally lack an audio component). In the example shown in FIG.
19, only the first two angles 1350 and 1355 contain clips with
audio data, and thus only these clips will be adjusted by the audio
synchronization.
[0220] The process selects (at 1810) the first unlocked clip in the
overall timeline of the multi-camera media clip. In some
embodiments, the process selects clips starting at the beginning of
the timeline and moving towards the end of the timeline, locking
the clips into place one at a time. In this context, to say that a
clip is locked means that the process 1800 has evaluated the clip
and will no longer move the clip along the overall timeline of the
multi-angle media clip. Once a clip is locked, other clips may be
shifted along the timeline to align their audio with that of the
locked clip.
[0221] The process determines (at 1815) whether the selected clip
overlaps any locked clips in a different angle (i.e., an angle
other than that to which the selected clip belongs). That is, the
application identifies whether the span of the currently selected
clip in the overall timeline of the multi-camera media clip
overlaps the span of any clip that has been flagged as locked. In
some embodiments, in order to save processing, the media-editing
application only compares the audio of clips that overlap, rather
than comparing each clip's audio to the audio of all other clips in
different angles. When the selected clip does not overlap any
locked clips, the process locks (at 1840) the selected clip.
Because there are no locked clips when the first clip is selected,
the application automatically locks this first clip into place.
[0222] The first stage 1910 of FIG. 19 illustrates that initially
the first clip 1305 is locked. In this figure, the locked clips are
illustrated with solid lines while clips that have not yet been
locked are drawn with dashed lines. As such, the other four video
clips (with accompanying audio) are drawn with dashed lines at the
first stage 1910. The clips of angle 1360 are shown as locked
because they are not candidates for audio synchronization, as they
represent still images without accompanying audio.
[0223] When the selected clip overlaps at least one locked clip in
a different angle, the process analyzes (at 1820) audio of the
selected clip and all of the overlapping locked clips. In some
cases, this will be many clips (when there are numerous angles),
some of which will have already been aligned with each other by
previous iterations of this process. Referring again to FIG. 19,
the next clip selected is the clip 1310, which overlaps the locked
clip 1305. As shown, both of these clips include audio components,
which can be compared with each other.
[0224] The media-editing application of some embodiments uses a
process described in detail in U.S. patent application Ser. No.
13/019,986, incorporated by reference above, to compare the audio
of two clips. In short, the algorithm of some embodiments compares
two audio clips using cross correlation or phase correlation to
produce a correlation function that indicates the likelihood of a
match for all possible time offsets of the two clips. The peak
value of this correlation function thus indicates the most likely
alignment of the two audio signals.
[0225] Rather than using the extensive processing resources needed
to calculate such a correlation function for the entire duration of
each pair of audio clips, some embodiments generate the function up
to a maximum offset (e.g., two minutes). By performing the initial
synchronization using the timing data, the media-editing
application increases the likelihood that the audio will already be
close to being synchronized, with the errors in alignment being due
to not having clocks or timecode perfectly aligned across different
devices (due to human error in device setup, clock drift,
etc.).
[0226] In addition to comparing the audio of two overlapping clips,
some embodiments also compare previously-generated waveform data
for the two clips. In some embodiments, the media-editing
application automatically generates audio waveform data for each
clip containing audio information. The application uses this
generated data to display audio waveforms for the clips (e.g., in
the clip browser or the composite display area). When this waveform
data is available, the application compares the waveform of the two
clips for similarities. In many cases, this comparison can be
performed significantly more quickly than comparing audio data.
Thus, some embodiments use a combination of the audio waveform data
and the audio data to determine the correlation of the different
time offsets. For instance, some embodiments initially use the
audio waveform information to approximate a peak correlation offset
for two clips, then further fine-tune the offset with the audio
data.
[0227] As an example, some embodiments generate waveform data
points for every 500 (or 100, 1000, etc.) audio samples. Thus, the
offset from the waveform data can be treated as precise to within
500 samples (if the audio sample rate is 48 kHz, then this is 1/96
seconds, or 1/4 frame for 24 fps video). The application then uses
a small range of audio offsets (e.g., five seconds, ten seconds,
etc.) around the identified offset to more precisely identify a
peak offset for the two clips.
[0228] After comparing the audio (and/or waveform data) of the
selected clip to each of the overlapping locked clips, the process
calculates (at 1825) the offset of the best matching locked clip
and the selected clip. As stated, in some embodiments each of the
comparisons generates a peak offset correlation value that
indicates (i) the offset of the two clips producing the best
correlation and (ii) the likelihood that this peak correlation is
indicative of a match. Some embodiments identify the offset between
the selected clip and any of the overlapping clips that produces
the highest likelihood of a match (e.g., 20%, 75%, 90%, etc.).
[0229] The process then determines (at 1830) whether this best
matched clip has a high enough likelihood of correlation to be used
for synchronization. Some embodiments use a minimum threshold
correlation value to prevent the media-editing application from
shifting clips off of the initial synchronization when there is a
low probability of the audio indicating a match. For instance, some
embodiments require at least a 50% likelihood of correlation, or
even a 70% likelihood, in order to shift the audio, though other
embodiments do not require as high a likelihood of correlation.
[0230] As mentioned, some embodiments generate the correlation
values up to a maximum offset. Some embodiments initially use a
first maximum offset (e.g., 10 seconds) and determine whether the
peak offset has a high enough correlation. When the correlation at
this offset is not above the threshold, the process expands the
range and calculates correlation values up to a second, larger
maximum offset (e.g., 2 minutes). If the peak correlation value is
still not above the threshold likelihood, the process expands the
range to the entirety of the two clips. At this point, if the peak
offset does not have a high enough correlation, then the process
assumes that there is no match.
[0231] In addition to determining whether the peak offset has a
high enough correlation, some embodiments identify multiple peaks
(e.g., 10-20 peaks within the sampled range). The application then
compares the highest peak to the other peaks to ensure that the
maximum correlation found is more than a second threshold value
higher than the other peaks. That is, the application determines
whether the peak offset is significantly more likely of an
alignment than other offsets in the range. If the difference is not
large enough (i.e., does not exceed the second threshold value),
then the process does not consider the offset to be a match.
[0232] When even the best matching clip does not exceed the
threshold correlation value, the process locks (at 1840) the
currently selected clip without re-aligning the clip. However, when
the best matching clip has a high enough likelihood of correlation,
the process shifts (at 1835) all unlocked clips in the angle of the
currently selected clip by the peak offset time. Thus, any
previously locked clips in the angle (which may have already been
synchronized to other locked clips) are not shifted, but the
application of some embodiments implements a presumption that other
unlocked clips should be shifted by the same offset (e.g., in case
the clock for the device that captured the clips in that angle was
off by a consistent duration).
[0233] In order to shift the unlocked clips, some embodiments
adjust the duration of the gap clip that precedes the selected clip
(shortening the duration of the gap clip in order to move the
selected clip earlier in the timeline, and lengthening the duration
in order to move the selected clip later in the duration). Some
embodiments may shift a locked clip in the specific instance in
which a likely match is found for a selected clip with an offset
that would move the selected clip so that it overlaps an earlier
clip in the angle. When the correlation value for the selected clip
that would move the clip into the overlapping position is greater
than the highest correlation value for the locked clip, some
embodiments will "release" the locked clip and move it earlier in
time as needed to allow for the alignment of the selected clip
(e.g., by removing the gap between the selected clip and the locked
clip, then shortening the gap before the locked clip).
[0234] In some cases, the media-editing application requires that
the video be shifted in discrete amounts equal to the duration of a
single frame (e.g., 1/24 or 1/30 of a second). However, audio
recordings are typically sampled in much smaller increments (e.g.,
1/48,000 of a second). In some embodiments, the application
determines the offset at the level of the audio sample boundaries,
then shifts the video to the nearest frame boundary. For the audio,
some embodiments slightly offset the shifted audio by less than the
increment of a video frame so that the audio of the shifted clip
more closely aligns with the audio that it matches.
[0235] The first stage 1910 of FIG. 19 illustrates that the audio
of the currently selected clip 1310 is slightly offset from the
audio of the locked clip 1305. As indicated by the arrows, the
media-editing application moves both the clip 1310 and the clip
1320 earlier in the timeline of the multi-camera media clip, the
result of which is shown in stage 1920. In order to perform this
shift, the application modifies the duration of the gap clip that
precedes the clip 1310 in the angle 1355.
[0236] After shifting the clips, the process 1800 locks (at 1840)
the selected clip. In some embodiments, as stated, this involves
setting a flag (e.g., in volatile memory) that the clip is locked
and should no longer be moved while performing the audio
synchronization. The process then determines (at 1845) whether any
additional unlocked clips remain to be evaluated. When additional
clips remain, the process returns to 1810 to select the next
unlocked clip in the multi-camera media clip. Once all of the clips
have been aligned, the process 1800 ends.
[0237] The second stage 1920 of FIG. 19 illustrates that the
media-editing application has also locked the clip 1325 without
moving it. This clip is the next clip selected after aligning clip
1310, but does not overlap any locked clips in other angles. As
such, the application locks this clip and moves on to evaluating
the next clip 1320. The second stage 1920 illustrates that the
audio of clip 1320 is slightly offset from that of the clip 1325.
As such, the application shifts the clip 1320 slightly later in the
timeline (by increasing the duration of the gap clip between clip
1310 and clip 1320, in some embodiments).
[0238] The third stage 1930 illustrates that the application has
moved the clip 1320 slightly later in the multi-camera clip
timeline and locked the clip 1320. In addition, the figure
illustrates that the audio of the clip 1315, in the first angle
1350, is slightly offset from that of the now-locked clip 1320. As
such, the application moves the clip 1315 earlier in the timeline
of the multi-camera media clip (by decreasing the duration of the
gap clip between clip 1325 and clip 1315).
[0239] The fourth stage 1910 illustrates the timeline of the three
angles of the multi-camera media clip after the audio
synchronization process. One of ordinary skill in the art will
recognize that in many cases, multi-camera media clips will have
more than two tracks with audio clips and more than two or three
clips per track. In such a clip, the synchronization will propagate
through the multi-camera clip (e.g., as shown in stages 1920-1940
for clips 1325, 1320, and 1315) as each individual clip is aligned
within the overall multi-camera clip timeline.
[0240] E. Data Structure for Multi-Camera Reference Clip
[0241] The above sub-sections referred to the multi-camera media
clip data structure created by the media-editing application. For
some embodiments, FIG. 20 conceptually illustrates a subset of the
data structures contained by a multi-camera media clip created in
an event of the media-editing application. As mentioned above, in
some embodiments the application stores a reference multi-camera
clip in an event data structure of the application, then defines
instance clips in one or more media projects that refer to the
reference clip and inherit properties from the reference clip. The
reference multi-camera media clip 2000 illustrated in FIG. 20 is an
example of such a reference clip. In some embodiments, reference
clips are only used for multi-camera media clips. However, other
embodiments enable reference clips (and correspondingly, clip
instances that refer to the reference clips) for any compound clip
or even for all types of clips. As such, one of ordinary skill in
the art will recognize that the properties of reference clips
described herein for multi-camera media clips may also be
applicable to other types of clips.
[0242] As shown, the nested sequence of clip objects that defines
the multi-camera media clip is similar in structure to the objects
illustrated in FIG. 6. The figure illustrates a sequence 2005, an
angle instance 2012, a reference collection 2000 (the multi-camera
media clip), a gap clip 2007 contained by the reference collection
2000, one of the angle collections 2010 of the multi-camera media
clip, and one of the clips 2015 of the angle collection 2010. In
some embodiments, each of the clip objects shown in this figure is
a member of the same class, though the objects may be of different
sub-classes. The set of data structures shown in FIG. 20 might be
the output of the multi-camera clip creation process described by
reference to FIG. 10.
[0243] As indicated in Section II, some embodiments create a
sequence within the event object for each media file in the event.
This includes not only clips imported into the event, but also
compound clips or multi-camera clips created in the event. The
sequence 2005 is an example of such a sequence for an event clip.
The sequence 2005, like sequence 605 of FIG. 6, stores a sequence
ID, a set of sequence attributes, and the angle instance object
2012. The sequence attributes, in some embodiments, include the
resolution, frame rate, and other video and audio properties for
the sequence. As shown in FIG. 11, some embodiments provide the
user with the option of customizing these sequence attributes for a
multi-camera clip or inheriting them from the media clips used to
generate the multi-camera media clip.
[0244] The angle instance 2012 is an object that contains (or
wraps) the reference collection 2000. In addition, the angle
instance 2012 indicates an active video angle and active audio
angle that are used when the multi-camera clip is added to a
sequence in the timeline. These active angles can be selected by a
user of the media-editing application in some embodiments (e.g.,
through the angle viewer or the inspector). The angle instance data
structure, as used in timeline sequences, will be described in
further detail below.
[0245] The reference collection 2000, as stated, can be thought of
as the multi-camera clip object. One of ordinary skill in the art
will recognize that this is only one of many possible ways to
implement such a clip object. The reference collection object 2000
is a collection object similar to collection objects 610 of FIG. 6
or 810 of FIG. 8 (a compound clip object), and similarly includes a
collection ID. To indicate that the collection is a multi-camera
clip, the object includes a multi-camera flag. This indicates to
the media-editing application to display a multi-camera indicator
over the clip, as well as to provide the functionality associated
with multi-camera clips (described in the sections below). The
reference collection 2000 includes a single gap clip 2007 in its
array, with no content.
[0246] The gap clip 2007 includes a collection ID, a gap component
with no content, and a total and trimmed range. In some
embodiments, the gap clip is a component or a generator rather than
a collection. Regardless of how the gap clip is implemented, it
does not refer to any actual media, but instead produces a solid
black output. In some embodiments, the duration of the gap clip
2007 varies based on the length of the longest angle in the
clip.
[0247] In some embodiments, the angles are stored as connected
storylines, which are collections anchored to the gap clip in the
reference collection. In some embodiments, the connected storylines
are anchored to the start of the gap clip (i.e., with an offset of
0, 0). As shown, the gap clip 2007 includes three anchored items
(Angles 1, 2, and 3).
[0248] These anchored items are each themselves collections that
store information for one of the angles of the multi-camera media
clip. In this case, the multi-camera clip includes three angles.
The second of these angles is represented by the collection clip
2010, and the other two would have a similar structure (with
different clips in their respective arrays). As shown, the
collection clip 2010 includes an angle ID, an ordered array of two
content clips separated by a gap clip, total and trimmed ranges,
anchoring information to the parent gap clip (Gap Clip 1) with an
offset of 0, 0 (as each angle is anchored to the start of the gap
clip 2007), and a lane number that indicates the order of the
anchored item in the multi-camera media clip (in this case, 2).
Some embodiments, however, use non-zero anchor offsets to
synchronize angles within a multi-camera clip rather than inserting
gap clips at the start of the angles.
[0249] The angle ID is a unique ID that identifies the angle. In
some embodiments, the angle collection 2010 also stores an angle
name, which the user can change. Even when a user changes the angle
name, the angle ID stays constant so that the media-editing
application does not need to update any clip instances that refer
to the angle.
[0250] The array includes all of the clips of the angle arranged in
time order. In this case, the angle has only two clips (Clip 2A and
Clip 2B). Unless the clips are not separated at all in the
multi-camera clip timeline (e.g., because the timing metadata was
not useful for spacing the clips in the angle), then the
application inserts a gap clip between clips in order to space out
the clips in the multi-camera timeline. In addition, when the first
clip starts at some point after the beginning of the multi-camera
clip timeline, some embodiments insert a gap clip as the first clip
in the array. In the case of angle 2010, Clip 2A starts at time
zero of the overall timeline and thus this clip is the first clip
in the array (i.e., there is no gap clip to start the array).
[0251] As shown, the clip 2015 (Clip 2A) is a collection clip
similar to clip 610, with a single media component in its array
(e.g., a video component) and a second component (e.g., an audio
component) anchored to the first component (not shown for
simplicity). As with clip 610, described in detail above in Section
II, these components are themselves clip structures that refer to
media asset data structures. In some embodiments, the clips within
the array of an angle collection could also be compound clips that
contain additional collections. Other embodiments only allow simple
collection clips that contain components (such as clip 2015) within
multi-camera clips.
IV. Editing Multi-Camera Reference Clips
[0252] The above section described the automatic creation of
multi-camera media clips from several media clips (either using
default settings of a media-editing application or preferences
input from a user). Once the media-editing application creates a
multi-camera clip, a user may edit the reference multi-camera clip
as well as add instances of the multi-camera clip to a media
project (both in the primary compositing lane of a project as well
as in secondary anchor lanes). These instance clips each have an
active audio angle and active video angle, which determine the
content of the multi-camera media clip that is actually part of the
media project. Users can switch the active angle in a variety of
different ways, or blade the clip instance into two clip instances
at a particular frame boundary in order to enable seamless
switching from one angle to the next.
[0253] As stated, in some embodiments the user can manually edit a
multi-camera reference clip stored in an event. In some
embodiments, the media-editing application provides a display area
for manually adjusting the clips within the angles (e.g., aligning
clips), adding effects to the clips in the reference clip,
renaming, adding, and deleting angles, reordering the angles within
the multi-camera clip, etc. This multi-camera clip editing display
area is a specific version of the composite display area for
multi-camera clips in some embodiments, that does not display the
gap clip to which the different angles are anchored, and displays
each of the angles as a separate track.
[0254] FIG. 21 illustrates the opening of such a display area in a
graphical user interface ("GUI") 2100 of some embodiments over two
stages 2110 and 2120. The first stage 2110 illustrates a clip
browser 2105 that includes a multi-camera clip 2115, along with
various other clips in the same event. Some embodiments display an
indicator over the thumbnail (in this case, four squares) to
indicate to the user that the clip is a multi-camera clip. In this
stage, the user has selected the multi-camera clip 2115 and
activated a drop-down menu for the clip (e.g., through a
right-click, two-finger tap, or other user input). As shown, the
user is in the process of selecting the option "Open in Angle
Editor" for the clip.
[0255] The second stage 2120 illustrates the resultant GUI 2100.
Many of the display areas in the GUI 2100 were described above in
Section I by reference to FIG. 3: the clip library, clip browser
2105, preview display area (not currently displaying any preview
images), and inspector display area (not currently displaying any
information as no items are selected in the GUI).
[0256] In addition, the GUI 2100 includes the multi-camera editing
display area 2125. The editing display area 2125 displays the
location and name of the selected multi-camera media clip that is
open for editing (in this case, the location is "New Event Oct. 28,
2011" and the name is "New MultiCam Clip"). This editing display
area displays separate tracks for each of the angles in the
selected multi-camera media clip. In this case, the angles include
at least "Amir", "Nathaniel", "Viega", and "Matt", as these are the
angles for which tracks are at least partially shown in the figure.
The media-editing application identifies each different angle of
the selected multi-camera media clip and creates a track in the
editing display area for the angle. As described in the previous
sections, some embodiments store the angles as collection clips
using the data model for the trackless system described in Section
I, but convert the angles for display as tracks in the multi-camera
clip editor because each angle can be treated as having a sequence
of clips separate (though synchronized with) the clips in the other
angles.
[0257] The following section will describe various features of the
multi-camera editing display area, also referred to as an angle
editor. Before describing these features, the multi-camera preview
display area, also referred to as the angle viewer, will be
introduced. FIG. 22 illustrates a GUI 2200 over three stages
2210-2230 in which the multi-camera preview display area is opened
and options for the display area are accessed. In the first stage,
the GUI 2200 resembles the GUI 2100, including a preview display
area 2205. The user has opened a drop-down menu 2215 and is
selecting an option of "Show Angle Viewer" from the menu.
[0258] The second stage 2220 illustrates the result of this
selection in the GUI 2200. The media-editing application decreases
the size of the preview display area 2205 and displays the angle
viewer 2225 in a portion of the area previously occupied by the
main preview display area 2205. In some embodiments, the clip
library, clip browser, angle viewer, and preview display area can
all be hidden and have their widths varied so as to provide more
display room to one or the other of these areas. In addition, one
of ordinary skill in the art will recognize that different
configurations of the GUI are also possible (e.g., with different
display areas in the top or bottom, or the display areas in a
different order across the GUI). The angle viewer, as described
above by reference to FIGS. 1 and 2, provides preview displays for
multiple angles into which the application outputs simultaneous
video images from different angles of a multi-camera media
clip.
[0259] The third stage 2230 illustrates a close-up of the angle
viewer 2225 as the user opens a settings menu for the angle viewer.
At this stage, the angle viewer displays video images from the
first four angles of the multi-angle clip currently open in the
angle editor. The four preview windows display an image from a clip
in each of four different angles, as well as information about the
angles. Within the timeline of the multi-angle clip, these four
images come from the same time (e.g., the location of a playhead in
the angle editor). The current information for the different angle
previews shows the names of the angles displayed in each preview as
well as the time of the currently shown image within the individual
clip. In some embodiments, this time starts from zero at the
beginning of the source video to which the individual clip refers.
The settings menu provides various options for the angle viewer
2225. As shown, the user can change the number of preview displays
shown in the viewer (in this case, the options are 2, 4, 9, or 16
preview displays). The user can also determine whether or not to
display the timecodes, and whether to indicate the angle name, clip
name, or not identify the angles at all. One of ordinary skill in
the art will recognize that in different embodiments, different
combinations of information may be displayed in the angle viewer.
With the angle viewer introduced, various functionalities of the
angle editor will now be described.
[0260] A. Aligning Media Clips
[0261] In some embodiments, users can manually align media clips in
the multi-camera clip editing display area as well as use audio
synchronization to automatically align media clips in the editing
display area. FIG. 23 illustrates the manual alignment of a media
clip 2305 in a first angle track 2315 with a clip in a second angle
track 2325 by moving the clip 2305 along its track. This figure
illustrates this movement over three stages 2310, 2320, and 2330 of
a GUI 2300. The GUI 2300 includes, among other GUI items, an angle
editor 2335 (which includes the tracks 2315 and 2325, as well as
additional tracks), an angle viewer 2340, and a preview display
area 2345.
[0262] In the first stage 2310, the user has selected the media
clip 2305, but has not yet started moving the clip. The angle
viewer 2340 currently displays four previews of the first four
angles of the multi-camera media clip that is currently open in the
angle editor 2335 ("Nathaniel", "Amir", "Lam", "Viega"). As the
playhead 2350 is at gaps in the "Nathaniel" and "Lam" angles, the
angle viewer shows blank images for these angles. In addition, the
preview display area 2345 displays an image from the "Amir" angle
that corresponds to a time in the multi-camera media clip over
which a playhead 2350 is situated. In the angle editor 2335, the
track 2325 (for the "Amir" angle) is currently highlighted as a
selected angle, or monitoring angle, and thus the preview display
area 2345 displays images from the "Amir" angle. The user can
switch the monitoring angle (as described below) in order to
determine which angle the media-editing application will display in
the preview display area.
[0263] As the user moves the media clip 2305 along its track 2315
to the right (later in the multi-camera clip timeline) in the
second stage 2320, the media-editing application automatically
swaps out the angle viewer 2340 for a second preview display area
2355, which displays images of the selected clip at the location of
the playhead 2350. In some embodiments, in order to help a user
visually line up images from clips in two different angles, the
media-editing application maintains (in the first preview display
area) the image from the monitoring angle that corresponds to the
playhead location in the timeline. As the user moves the selected
clip along its own track over the playhead, the second preview
display area skims through the images from the selected clip that
correspond to the current time in the clip that is over the static
playhead. Thus, a user can select a particular image from a clip in
the monitoring angle, then find the image from the selected clip
that matches the particular image (i.e., was captured at the same
time) and use the playhead to align these images in order to align
the clips. As shown, some embodiments display an indicator over the
selected clip (the clip being moved) that shows how far the clip
has moved from its previous location--in this case, the clip 2305
has been moved twenty seconds and six frames later in the timeline
at stage 2320.
[0264] The third stage 2330 illustrates the GUI 2300 after the user
has finished moving the clip 2305. The media-editing application
has replaced the second preview area 2355 with the angle viewer
2340, and now displays an image from the monitoring angle in the
preview display area 2345. As shown by this example, in some
embodiments the application does not ripple the clips in the angle
of the moved clip. That is, when the user moves clip 2305, the
other clips in the track 2315 remain stationary. In this way, the
application does not remove the alignment of other clips in the
angle (which might already be aligned to clips in other angles).
Thus, the movement can be thought of as a slide edit of the
selected clip, which changes the in and out points of the gap clips
on either side of the selected clip. Similarly, if a user modifies
the length of a clip in the multi-camera media clip (i.e., trims
the clip), the application will treat this as a roll edit rather
than a ripple edit, and simply modify the length of the gap clip on
the edited boundary of the media clip. If the user wishes to move
all of the clips in an angle together, the user can select all of
the clips and then move the clips in either direction along the
timeline (which increases or decreases the length of the gap clip
at the start of the angle. Some embodiments provide a user
interface tool for easily selecting all clips in an angle.
[0265] In some embodiments, the user can change the monitoring
angle within the angle editor, as well as enable or disable audio
for the different angles. Some embodiments require only a single
monitoring angle, but allow for multiple different angles to have
enabled audio. In order to allow for the changes to the monitoring
angle and the enabling/disabling of audio, some embodiments provide
GUI items for each track in the angle editor.
[0266] FIG. 24 illustrates a user changing the monitoring angle for
a multi-camera media clip according to some embodiments. This
figure illustrates an angle editor 2400 over two stages 2410 and
2420. In the first stage 2410, the track "Amir" 2405 is highlighted
as the monitoring angle. In addition to displaying the track with a
different color/shading, the media-editing application highlights a
selectable item 2415 in the track. This selectable item 2415 both
indicates that the track 2405 is the monitoring angle and would
enable the user to select the track 2405 as the monitoring angle
when a different track was selected.
[0267] At the first stage 2410, the user has placed a cursor over
the corresponding selectable item 2425 for the track 2430, and
selects this item with the cursor. The second stage 2420
illustrates the result of this selection. The track 2430 for the
angle "Viega" is now the monitoring angle, and the application
highlights the track as such. Furthermore, the selectable item 2425
is now highlighted, and the application has removed the
highlighting from the selectable item 2415 and the track 2405. By
changing the monitoring angle, the user determines which angle's
images will be displayed in the preview display area (e.g., for
aligning clips as shown in FIG. 23).
[0268] FIG. 25 illustrates a user enabling and disabling the audio
for various angles of the multi-camera reference clip over three
stages 2510-2530 showing the angle editor 2400. When a user plays
back or skims through a multi-camera clip, some embodiments output
the audio of the clip. Whereas only one angle is displayed in the
preview display area (the monitoring angle), the media-editing
application of some embodiments can combine the audio of the
multiple selected signals and output the combined audio.
[0269] As with the monitoring angle selectable items (e.g., items
2415 and 2425), each track in the angle editor 2400 has an audio
selectable GUI item as well. These audio items enable a user to
turn on or off the audio of the different tracks. At the first
stage 2510, the monitoring angle "Viega" (track 2430) as well as
the angle "Amir" (track 2405) have their audio enabled. The
selectable items 2525 and 2535 for these tracks are highlighted,
indicating that the audio is enabled. In this example, the
application highlights the selectable items 2525 and 2535 by
displaying sound waves coming from the microphone icons). In
addition, the user has placed a cursor over the selectable item
2540 for the angle "Nathaniel" (track 2545), and selects this item
with the cursor.
[0270] The second stage 2520 illustrates the result of this
selection, with the selectable item 2540 for track 2545 now
highlighted, indicating that the application has now enabled the
audio of these angles. In addition, the user has placed the cursor
over the selectable item 2525, the audio item for the monitoring
angle, and is selecting this item. At the third stage, the item
2525 is no longer highlighted. As this illustrates, the application
of some embodiments allows the user to disable the audio of the
monitoring angle.
[0271] FIG. 26 conceptually illustrates a process 2600 of some
embodiments for playing back a multi-camera media clip open in the
angle editor. The process begins by receiving (at 2605) a command
to play back a multi-camera media clip. In some embodiments, the
user can initiate playback through a keystroke (e.g., the space
bar), selecting a menu option, selecting a user interface item,
etc. When playing back the multi-camera media clip, the playhead
moves through the clip's timeline at a constant rate so that the
video is played back at real-time speed.
[0272] The process identifies (at 2610) a video angle to display in
the preview display area. When playing back the multi-camera media
clip, the application selects the video monitoring angle. The
process also identifies (at 2615) all enabled audio angles. As
shown in FIG. 25, multiple angles may be enabled for audio, and
these may exclude the monitoring angle.
[0273] Next, the process 2600 renders (at 2620) video images in the
preview display area using the clips from the identified video
angle (i.e., the video monitoring angle). As will be described
below in Section VI, rendering these images involves reading the
images from a storage, decoding the image (if required), applying
effects to the image, and outputting the image. In addition to
displaying the image of the identified video angle in the preview
display area, some embodiments also display multiple video images
for the angle viewer (if the angle viewer is currently displayed in
the GUI). The process also renders (at 2625) audio as a composition
of all of the enabled audio angles. This may involve using standard
audio processing techniques to combine multiple audio signals from
the various enabled audio angles. The process 2600 then ends.
[0274] The above-described FIG. 26 describes the selection of which
angles to render when playing back a multi-camera media clip in the
angle editor. In some embodiments, users can play back a particular
angle other than the monitoring angle. In this case, the
media-editing application of some embodiments switches out the
angle viewer for a second preview display area, similar to what is
shown in stage 2320 of FIG. 23. The application then plays back the
selected angle in the second preview display area while playing the
monitoring angle in the primary preview display area. On the other
hand, some other embodiments play back the selected angle in the
primary preview display while also playing back several angles in
the angle viewer (thus swapping out the monitoring angle for the
selected angle in the preview display area).
[0275] Users can also use the preview display area/angle viewer
combination for skimming through an angle or the multi-camera clip.
To skim, the user moves a skimming playhead through the
multi-camera media clip (e.g., by dragging a finger along a
touchscreen, moving the cursor over the clip with a cursor
controller, etc.). The skimming playhead, in some embodiments, is
separate from a primary editing playhead which remains in place
while the user skims through the clip.
[0276] When the user skims through the monitoring angle (by moving
the cursor through the clips of the monitoring angle), in some
embodiments the skimming playhead shrinks down and moves through
the track of the monitoring angle. In this case, the angle viewer
continues to display the multiple displays for different angles
while the preview display area displays images from the monitoring
angle. When the user skims through the timeline (by moving the
cursor through the timeline ruler), the skimming playhead is
displayed over the entire timeline, while again the angle viewer
remains to display simultaneous previews of multiple angles while
the preview display area displays images from the monitoring
angle.
[0277] On the other hand, when the user skims through an angle
other than the monitoring angle, the application of some
embodiments swaps out the angle viewer for a second preview display
area that displays the angle through which the user is skimming. In
this way, the user can skim through the particular angle to
identify a frame that matches that of the monitoring angle shown in
the primary preview display area. Similar to the situation
illustrated in FIG. 23, the editing playhead remains fixed and thus
so does the image from the monitoring angle displayed in the
primary preview display area.
[0278] When skimming, the application also determines whether audio
skimming is turned on. Some embodiments provide a GUI tool that
enables users to determine whether to play audio when a user skims
through a multi-camera media clip, media project, event clip, etc.
When audio skimming is off, the process does not treat any audio as
enabled. When either audio skimming is on, or the application is
playing back the multi-camera media clip as shown in FIG. 26, the
process identifies which of the various angles of the multi-camera
media clip have been designated as active.
[0279] Changing the video monitoring angle and enabling and
disabling audio angles can be used to help with manually aligning
media clips within a multi-camera clip. In addition, some
embodiments provide functionality for automatic synchronization
using audio within the angle editor. For example, if a set of media
clips from which the application generates a multi-camera clip does
not provide any useful timing metadata, then the clips might be out
of order and/or so far out of alignment that the automatic audio
synchronization process (e.g., that described above in Section
III.d) cannot find any audio matches to use for alignment. In such
a case, a user might open the clip in the angle editor and manually
align the clips. However, in the absence of specific images that
the user can pinpoint as matching between two video angles,
achieving perfect alignment may be difficult without audio
synchronization.
[0280] FIG. 27 illustrates the use of a function to automatically
synchronize a selected clip to a clip in a different angle in an
angle editor 2700 over two stages 2710 and 2720. In the first stage
2710, the user has selected a media clip 2705 (as indicated by the
highlighting around the edges of the media clip), and activated a
drop-down menu for the clip that includes the option "Sync to
Monitor Angle via Audio". In some embodiments, the user can select
a monitoring angle and then synchronize clips in other angles to
the monitoring angle using audio synchronization. The second stage
2720 illustrates that the media-editing application has shifted the
selected clip 2705 later in the timeline by approximately five
seconds in order to align the audio of clip 2705 with the audio of
clip 2715. As shown, the peaks in the audio now line up in the
timeline.
[0281] Some embodiments use similar audio synchronization
techniques to those used when initially creating a multi-camera
media clip. That is, the media-editing application compares the
audio of a selected clip to the audio of a clip (or multiple other
clips) in the monitoring angle to identify the likelihood of
correlation at various offsets. In some embodiments, the
application compares the selected clip to any overlapping clip or
clips in the monitoring angle. Some embodiments compare the audio
of the selected clip to various offsets within the monitoring angle
(e.g., up to two minutes of offset, etc.), or to the entirety of
the monitoring angle.
[0282] If the peak offset has a high enough correlation value, the
application moves the selected clip in the multi-camera clip
timeline by this offset value. Some embodiments use a lower
threshold for post-creation synchronization on the assumption that
the user has more clearly expressed a preference to shift the
selected clip in the timeline, and because the user will often
select a clip that is very close to correctly aligned and will be
using the audio synchronization for fine-tuning.
[0283] In addition to providing the option to synchronize a clip to
the monitoring angle, some embodiments provide additional options
in the angle editor. In various embodiments, users can choose to
perform a full audio synchronization of a multi-camera media clip,
synchronize a first selected clip to a second selected clip,
synchronize a selected clip to the best matching clip in any other
angle, etc. Some embodiments allow the user to specify the maximum
offset range for the synchronization algorithm (i.e., placing a
threshold on how far the media clip may be shifted, which can be
used to decrease the processing time for synchronization).
[0284] Furthermore, some embodiments allow the user to identify
specific video images from a selected clip in a first angle and a
clip in a different angle (either the monitoring angle or another
angle). The application moves the selected clip in its angle in
order to align the two images, then uses audio techniques to
fine-tune the synchronization. FIG. 28 illustrates the use of such
a frame matching technique over three stages 2810-2830 of a GUI
2800. As shown at the first stage 2810, the GUI 2800 includes a
primary preview display area 2805 and an angle editor 2815. Within
the angle editor 2815, the user has selected a particular time
(i.e., particular frame, indicated by the location of the playhead
2835) in a selected clip 2825. The user has initiated a menu that
includes the option "Sync to Frame".
[0285] As shown at stage 2820, the selection of the "Sync to Frame"
menu option brings up a secondary preview display 2840 in the GUI
2800. The selected frame from the clip 2825 remains fixed in the
primary preview display 2805, while the user can skim through the
clips in other angles (angles that do not include the selected clip
2825) in the secondary preview display 2840. When the user finds a
frame in a different clip that was recorded at the same time or
approximately the same time as the selected frame, the user then
selects this frame for synchronization (e.g., by clicking or
tapping the location in the clip representation). In the figure,
the user selects a particular frame in the clip 2845 at the second
stage 2820.
[0286] Stage 2830 illustrates the result of this selection. The
clip 2825 has been automatically moved approximately 20 seconds
earlier in its track. In some embodiments, the application
initially moves the selected clip so that the selected frames are
exactly matched up, then analyzes audio data of the two clips
within a predetermined range (e.g., 5 seconds, 10 seconds, etc.)
around the two matched frames in order to more precisely align the
selected clip.
[0287] Some embodiments include variations on the process shown in
FIG. 28. For example, a user might initially select a clip and the
"Sync to Frame" option (or a variation thereof), then be allowed to
skim through the selected clip in order to find the first frame for
alignment. After selecting a frame within the selected clip, the
user would then be presented with the opportunity to skim through
the other clips in other angles to identify a second frame (e.g.,
as shown in stage 2820).
[0288] B. Modifying Multi-Camera Clip Properties
[0289] In addition to the adjustment of clips along the timeline of
a multi-camera media clip, in some embodiments the application
enables the user to utilize the angle editor to modify clip
properties such as the number of angles, the names of the angles,
the order of the angles, etc. Some embodiments automatically
reflect these properties in the angle viewer as soon as the user
modifies the property in the angle editor.
[0290] FIG. 29 illustrates a user adding an angle to a multi-camera
media clip in a GUI 2900 over two stages 2910 and 2920. The GUI
2900 includes both an angle editor 2905 and an angle viewer 2915.
One of ordinary skill in the art will recognize that some
embodiments will additionally include a preview display area, but
this is not shown in this figure for simplicity. At the first stage
2910, the multi-camera media clip open in the angle editor 2905
includes five angles. The angle viewer 2915 is set to display four
angles at a time, but currently only has one angle in the top left
corner. Because there are more than four angles, the media-editing
application divides the angles into sets (of up to four angles),
and the user can choose between these sets by selecting the angle
banks 2925 at the bottom of the angle viewer 2915. In this case,
the user has selected the bank with a single display rather than
the bank with four displays.
[0291] In addition, at the first stage, the user has initiated a
drop-down menu 2930 for the multi-camera clip, and is in the
process of selecting the "Add Angle" option from the menu. In some
embodiments, the user can access this drop-down menu via a
selectable item displayed in the header for each of the angles. One
of ordinary skill in the art will recognize that some or all of the
options in the drop-down menu 2930 may be accessed through other
user interface constructs, such as keystrokes, option-specific UI
items, other menus, etc.
[0292] The second stage 2920 illustrates the result of this menu
selection. At this stage, the application has added a new angle to
the multi-camera media clip (directly after the angle from which
the drop-down menu was initiated). In some embodiments, this
involves adding an anchored collection to the multi-camera
reference clip collection that represents the multi-camera media
clip (i.e., another collection such as the collection 2010 of FIG.
20). In some embodiments, the application assigns the new anchored
collection the lane number of the angle from which the menu was
accessed, and increments the lane numbers of all of the
higher-numbered angles. As a result, the GUI 2900 now displays (i)
a new track 2935 for the angle in the angle editor 2905, (ii) a new
display area 2940 for the angle in the angle viewer 2915, and (iii)
an additional square in the selected set of angles in the banks
2925. The new angle is automatically given a name (e.g., "Untitled
Angle", "Angle 6", etc.).
[0293] After adding an angle, users can manually add clips to the
angle by dragging the clips from the clip browser. In some
embodiments, a user can select a set of clips in the event browser
and drag them into the track for the new angle. Either
automatically or in response to user prompting, the media-editing
application uses processes described in Section III (or variations
thereof) to order and align the newly added clips in the
multi-camera clip. That is, the application first sequences the
clips within the angle using timing metadata of the clips, then
aligns the sequence with the other angles using timing metadata
followed by audio synchronization.
[0294] FIG. 30 illustrates a user renaming an angle of a
multi-camera media clip in the GUI 2900 over two stages 3010 and
3020. As shown in the first stage 3010, the user has selected and
highlighted the name of the track 2935 in the angle editor 2905,
"Untitled Angle". In some embodiments, selecting the name (e.g.,
with a click, double-click, tap, double-tap, etc.) in the angle
editor causes the name to become a modifiable text box. At this
point, the user can type in a new name for the angle.
[0295] The second stage 3020 illustrates the GUI 2900 after the
user has renamed the angle represented by the track 2935 with the
name "Matt". In some embodiments, the media-editing application
modifies the angle name in the collection data structure for the
angle, while keeping the unique angle ID constant. Thus, data
structures that refer to the angle do not need to be updated but
instead continue to refer to the same unique angle ID. With the
angle name modified, items that refer to that angle ID will now
retrieve different information for the angle name. As a result, the
preview display 2940 in the angle viewer 2915 now reads "Matt"
rather than "Untitled Angle".
[0296] FIG. 31 illustrates a user deleting an angle from a
multi-camera media clip in the GUI 2900 over two stages 3110 and
3120. As shown in the first stage 3110, the user has initiated a
drop-down menu 3105 (similar to the menu 2930) through the track
header for the track 2935 (the track for the angle "Matt"). Within
this menu, the user is in the process of selecting the "Delete
Angle" option.
[0297] The second stage 3120 illustrates the result of this menu
selection. At this stage, the application has removed the angle
"Matt" from the multi-camera media clip. In some embodiments, this
involves removing the anchored collection with the matching angle
ID from the multi-camera reference clip collection that represents
the multi-camera media clip (i.e., a collection such as the
collection 2010 of FIG. 20). As a result, the GUI 2900 now displays
(i) one fewer tracks in the angle editor 2905, (ii) a different set
of preview displays in the angle viewer 2915 as the display 3115
for the angle "Amir" has moved into the first set of four displays,
and (iii) one fewer square in the banks 2925. In some embodiments,
when the user deletes an angle, the application removes the
anchored collection for that angle from the multi-camera media clip
structure, and decrements the lane numbers of any higher-numbered
angles in the multi-camera media clip.
[0298] FIG. 32 illustrates a user reordering the angles of a
multi-camera media clip in the GUI 2900 over three stages
3210-3230. The first stage 3210 illustrates that a user has
selected the track 3205 and begun moving the track upward. In some
embodiments, the tracks in the angle editor 2905 have handles with
which a user can select the track for reordering. In this case, the
handles are located on the right side of the track header. At this
point the selected track 3205 for the angle "Amir" is below the
track 3215 for the angle "Jim".
[0299] The second stage 3220 illustrates the GUI 2900 while the
user continues to move the track 3205 upwards in the angle editor
2905. As shown, once the user has moved a selected track past
another track in the editor, some embodiments automatically slide
the other track into the spot previously occupied by the selected
track. In this case, the track 3215 is now below the selected track
3205, although the user has not released the track 3205 yet. In
performing this, some embodiments automatically update the
multi-camera media clip data structure to reflect this reordering,
by modifying the lane numbers of the two angles that have swapped
places.
[0300] As a result of the reordering, the application modifies the
order of the preview displays in the angle viewer 2915. In stage
3210, the viewer for the angle "Jim" is the third display (bottom
left) while the viewer for the angle "Amir" is the fourth display
(bottom right). At the second stage 3220, the viewer for these two
angles have switched places, mirroring the change in the angle
editor.
[0301] The third stage 3230 illustrates the GUI 2900 after the user
has released the track 3205 in the second slot of the angle editor
2905. As a result, the preview display for the angle "Amir" in the
angle viewer 2915 is now in the second (top right) position, and
the application has again updated the multi-camera media clip data
structure to reflect this change in ordering (e.g., by modifying
the lane numbers of the angles).
[0302] C. Additional Editing in the Angle Editor
[0303] The above sub-sections described editing operations to align
the media clips from different angles of a multi-camera media clip
as well as operations that modify the angle data of the
multi-camera media clip. In addition, some embodiments enable other
editing operations within the angle editor. For instance, users can
apply various effects to clips in the angle editor. FIG. 33
illustrates the application of a black and white effect from an
effects display area 3315 to a clip 3305 in an angle editor 3310.
This effect applies a function to the color values of the affected
clip. In addition, users can apply transform, crop, distortion,
etc. effects to the clips that affect the shape or size of the
displayed images for the clip. In some embodiments, these effects
are applied through on-screen controls in the preview display area
or by modifying effect variables in the inspector.
[0304] Some embodiments allow a user to apply effects to entire
angles instead of single clips. Users can select all of the clips
of the angle and then select an effect from the effects display
area 3315, and the application will apply this effect to all of the
clips. Similarly, in some such embodiments, defining a transform
(or crop, or distort) effect through the on-screen controls of the
preview display area will apply the transform to all clips in the
selected angle. Other embodiments, however, only apply effects to a
single clip at a time.
V. Editing a Media Project with Multi-Camera Clips
[0305] The previous section described the editing of a multi-camera
reference clip in the angle editor. The multi-camera clips can also
be added to a media project, much like a standard media clip.
However, unlike in the case of a standard media clip, some
embodiments create a clip instance in the data structure of the
media project, which refers back to the reference clip stored in
the event. Each clip instance includes active video and audio
angles that indicate which angle's video and audio should be used
in the media project for the duration of the clip instance. In such
embodiments, the data structures for the multi-camera clip
instances differ from those of the timeline clips shown in FIG.
8.
[0306] Once added to the media project, the user can perform
various operations on the clip instances. The user can swap out the
active video and/or audio angles for a clip, split a clip into two
clip instances with different angles for each of the instances,
apply effects to specific angles of the clip instances, as well as
other editing operations.
[0307] A. Adding a Multi-Camera Clip Instance to a Media
Project
[0308] FIG. 34 illustrates the addition of a multi-camera media
clip to a media project over three stages 3410-3430 of a GUI 3400.
The GUI 3400 includes a clip browser 3405 and a composite display
area 3415, among other display areas. The composite display area is
currently displaying the timeline for a media project ("New
Project") with one video clip 3407, which is a typical video clip
of the sort described in Section II (i.e., a collection with a
video component and anchored audio component that both refer to the
same asset). Within the clip browser 3405 are various clips in the
event "New Event Oct. 28, 2011", including a multi-camera reference
clip 3425.
[0309] The first stage 3410 illustrates that a user has selected
the multi-camera reference clip 3425. In the second stage 3420, the
user drags this selected clip 3425 and drops the clip into the
composite display area 3415. The third stage 3430 illustrates the
result of this action, with a multi-camera clip instance 3435 now
part of the media project in the composite display area 3415. The
representation for the clip instance 3435 has an appearance similar
to that of the video clip 3407, but also includes a multi-camera
clip indicator (four squares, similar to that displayed on the
multi-camera reference clips in the clip browser) as well as an
angle name rather than a clip name. In this case, the active video
and audio angle of the clip instance 3435 is "Amir", which means
that when the application plays back, renders, exports, etc. the
media project, it sources the output for that portion from the
assets referred to by the clips in the "Amir" angle.
[0310] To choose the active angle for a newly added clip instance,
different embodiments make different determinations. Some
embodiments copy the angle instance data structure from the event
(e.g., angle instance 2012) and use the active video and audio
angles set for this structure. These active video and audio angles
may be modified by the user through the inspector display area, in
some embodiments.
[0311] As stated, the clip 3435 in the composite display area 3415
is a clip instance, which refers to a multi-camera reference clip
structure (e.g., that shown in FIG. 20). FIG. 35 conceptually
illustrates a subset of the data structures that define a media
project that includes a multi-camera clip instance 3515. As with
the project shown in FIG. 6, in some embodiments the data
structures of FIG. 35 are all contained within a project data
structure that contains a single sequence 3500.
[0312] The sequence 3500 includes a primary collection data
structure 3505, which includes an array containing three clips
3510-3520. The first and third clips 3510 and 3520 are collection
clips similar to clips 805-815 of FIG. 8--either individual or
compound clips that contain component clips which in turn refer to
media assets.
[0313] The angle instance clip 3515, on the other hand, does not
contain any nested clips. The instance 3515 instead contains an
instance ID, a clip reference, total and trimmed ranges, active
audio and video angles, an effect stack dictionary, a marker, and
speed effects. The clip reference refers to a multi-camera
reference clip stored in an event (e.g., reference clip 2000 of
FIG. 20). In some embodiments, the clip reference contains both an
event ID and the collection ID, while in other embodiments the
reference just contains the collection ID. The angle instance 3515,
is the same type of data structure as angle instance 2012, shown in
FIG. 20. However, the angle instance 3515 in a timeline sequence
only stores a reference (e.g., a pointer) to the reference
collection (e.g., reference collection 2000), whereas the angle
instance 2012 in an event sequence contains the reference
collection. Some embodiments, when a user adds a clip instance to a
timeline as shown in FIG. 34, copy the angle instance data
structure from the event to the timeline sequence, substituting a
reference to the reference collection as opposed to having the new
instance actually contain the reference collection.
[0314] The total range, in some embodiments, is the total length of
the multi-camera reference clip to which the instance refers, and
is inherited based on the current state of the multi-camera
reference clip. The total length of the reference clip, in some
embodiments, is the duration of the longest angle in the reference
clip, including any gap clips. The primary gap clip in the
reference clip (the gap clip off of which the other clips are
anchored) receives this duration in some embodiments, and thus
determines the duration of the reference clip. When a user modifies
the length of the multi-camera clip (e.g., using the angle editor),
the media-editing application updates the total range of the
instance 3515. In some embodiments, the application updates this
information whenever a particular clip instance is accessed, in
that the total range of a clip instance is a dynamic variable that
the application populates when needed according to the present
state of the reference clip. The trimmed range, like that of other
clips, can be modified by a user within the composite display area
by standard trim operations. When a user blades a clip instance
into two such instances, this will also result in a change to the
trimmed range. When a user modifies the length of the multi-camera
reference clip, some embodiments do not modify the trimmed range of
the instances, although the rendered contents of those instance may
change as a result of the edits.
[0315] The active video angle and active audio angle are variables
stored by the angle instance. In some embodiments, when a user adds
an angle instance to a timeline, these variables are set based on
the active angles stored by the angle instance in the event. As
will be described in detail in the next subsection, users can swap
out the audio or video angles of a clip instance using a variety of
operations. The application allows the active video angle to be
different from the active audio angle. For example, if a particular
clip's video is not suitable and the user instead chooses to use a
sequence of still images captured at the same time, the audio of
the clip may still be desired for background of the still image
sequence. When the media-editing application plays back, skims
through, renders for export, etc. the composite presentation, the
application uses the collection in the reference clip of the active
angle to identify the source media to retrieve.
[0316] The effect stack dictionary contains a set of effect stacks:
one audio effects stack and one video effects stack for each angle.
When rendering the presentation, the media-editing application
identifies the active video angle and uses the effects stack
corresponding to this active angle. As will be described in Section
VI, some embodiments first apply effects contained within the
reference clip (which will generally be contained in the effects
stack for a particular clip within the reference clip), then
subsequently apply the effects stack for the active angle stored in
the clip instance. In some embodiments, the intermediate output
image (after applying the effects stored in the reference clip) may
be cached for use in rendering multiple clip instances.
[0317] The marker is a clip structure that is stored as anchored to
an angle instance, and does not change when the user switches the
active angles. Users can apply both markers and keywords to a clip
in the composite display area, and these affect the clip in the
same manner whether the clip is a standard collection clip or a
multi-camera clip instance. The speed effect is a retiming effect
that has been applied to clip 3515. These retiming effects are
described in detail in U.S. patent application Ser. No. 13/109,989,
filed May 17, 2011 and entitled "Retiming Media Presentations",
which is incorporated herein by reference. In some embodiments,
retiming effects are not stored with the effects stack and are not
stored as relating to a particular angle. When the user switches
video angles, the retiming effects remain with the clip instance.
Retiming effects modify the length of a video clip (by either
slowing down or speeding up the rate at which the video plays). As
such, by storing the effect on the clip instance, the media-editing
application prevents a change to the active video angle from
modifying the length of the clip.
[0318] One of ordinary skill in the art will recognize that some
embodiments may also use reference clips for clips other than
multi-camera media clips. For instance, a user could create a
compound clip in an event with specific effects applied, then add
multiple instances of the compound clip to a media project and
apply different effects to the different instances. If the user
then modified the clips within the compound clip reference, these
changes would be inherited by the various instances of the compound
clip.
[0319] FIG. 34, above, illustrates a user adding a multi-camera
media clip to a composite display area, and the media-editing
application creating a single instance of the multi-camera clip in
the media project displayed in the composite display area. In some
embodiments, when a user adds a clip to a timeline, the application
automatically splits the multi-camera clip into several instances
with different active angles. In some embodiments, users can mark
clips or portions of the clips within the multi-camera reference
clip as favorites, and the media-editing application uses this
information to generate the clip instances with different
angles.
[0320] FIG. 36 illustrates an example of a user adding multi-camera
clip 3605 to a media project over two stages 3610 and 3620. The
first stage 3610 illustrates the user adding a multi-camera clip
3605 to a composite media project and the second stage 3620
illustrates the resultant timeline for the composite media project.
As shown in the first stage 3610, the user has selected the
multi-camera reference clip 3605 and dragged it into the previously
empty composite display area 3615.
[0321] In addition, the first stage 3610 illustrates the timeline
for the multi-camera reference media clip 3605. The multi-camera
clip 3605 includes three angles 3625-3635. These angles each
include a series of media clips, some of which have been marked by
the user as favorites. In some embodiments, users can mark clips or
segments of clips as favorites within the event browser. In
addition, some embodiments allow users to mark clips as favorites
within the angle editor or the composite display area. Within the
composite display area, users can identify a portion of a media
clip that they will likely want to use in a presentation and mark
the portion as such. In addition, some embodiments allow users to
mark portions as rejected, indicating segments of clips that the
user wishes to avoid (e.g., because of a shaky camera, poor audio,
etc.). Thus, if a single video clip has a good section as well as
an unusable section, then the user may want to keep the clip but
mark the unusable section so that it does not end up in the media
project.
[0322] Within the first angle 3625 of reference clip 3605, the user
has marked a portion of media clip 3640 and the entirety of media
clip 3645 as favorites (portions marked as favorites are shown with
a gray bar in this example). Within the second angle 3630, the user
has marked the second half of clip 3650 as a favorite, which
partially overlaps in time with clip 3645 from the first angle
3625. In the last angle 3635, the user has marked clip 3655 as a
favorite.
[0323] The second stage 3620 illustrates the composite display area
3615 after the user has added the multi-camera clip 3605 to the
media project. Rather than creating one clip instance as shown in
FIG. 34, the media-editing application has automatically created
four separate clip instances. The first clip instance 3660 has the
angle 3625 as its active angle, because that angle starts with a
favorited clip. Some embodiments identify the first favorited clip
portion in the timeline of the multi-camera clip and select that
angle for the first clip instance.
[0324] In some embodiments, the application extends the duration of
a clip instance past the end of the favorited portion of an angle
until identifying a favorited clip portion in a different angle. In
this case, the clip 3655 in angle 3635 is the next clip in the
multi-camera clip marked as a favorite. The favorited portion of
the clip (which in this case is the start of the clip) begins at
approximately the seven minute mark of the multi-camera reference
clip timeline. Because, the multi-camera media clip is the first
clip in the media project, times in the multi-camera clip timeline
correspond to times in the media project timeline. As such, the
second clip instance 3665 has the angle 3635 as its active angle,
and starts at approximately the seven minute mark of the media
project timeline. The favorited portion of this clip ends shortly
before the ten minute mark of the multi-camera reference clip
timeline, but the next favorited clip segment does not begin until
shortly after the ten minute mark.
[0325] Thus, the third clip instance 3670 begins just after the ten
minute mark with an active angle of 3630. Around a time of fourteen
minutes, the multi-camera clip has both clip 3650 in angle 3630
marked as a favorite as well as clip 3645 in angle 3625. Some
embodiments, as is the case in this example, do not switch angles
until the current angle is no longer marked as a favorite, and thus
the switch to angle 3625 with a new clip instance 3675 does not
come until after the fifteen minute mark, when the clip 3650
ends.
[0326] In some embodiments, choosing to slice the clip instance
according to marked favorites is a user option upon adding a
multi-camera clip to a media project. That is, the user can either
perform a normal add operation that chooses one active angle for
the clip instance or choose to perform a different add operation
that searches for favorites and divides the clip instance
accordingly.
[0327] B. Editing Multi-Camera Clip Instances
[0328] Once they are added to a media project, users can perform
various editing operations with the multi-camera clip instances. As
with other clips, users can move the multi-camera clip instances,
delete the clip instances, anchor the clip instances to other
clips, have other clips anchored to the clip instances, trim the
clip instances, split the clip instances in two, etc. Furthermore,
users can perform operations specific to multi-camera clips, such
as switching the active angles (for both audio and video) and
splitting a clip instance in two in order to change a portion of
the clip to use a different active angle.
[0329] Users can also use a clip instance to activate the angle
editor and edit the multi-camera reference clip to which the clip
instance refers. FIG. 37 illustrates a user opening the angle
editor for a multi-camera clip over two stages 3710 and 3720 of a
composite display area 3700. In the first stage, the composite
display area displays a media project entitled "New Project", which
includes a multi-camera clip instance 3705. The user has selected
the multi-camera clip instance 3705 and activated a menu 3715 for
the clip (e.g., by right-clicking, two-finger tapping, etc.) with
various selectable options related to the selected clip. The figure
shows the user selecting the option "Open in Angle Editor".
[0330] The second stage 3720 illustrates the result of this
selection. The composite display area 3600 now displays the
timeline of the reference clip to which the clip instance 3705
refers. As shown in the top left, rather than displaying "New
Project", the display area now displays "Untitled MultiCam Clip"
from the event "New Event Oct. 28, 2011" to indicate that any edits
the user makes will apply to the reference clip stored in the event
rather than the clip instance in the media project. In addition,
some embodiments highlight the reference clip in the clip browser
of the GUI. If the user then makes changes to the reference clip,
these changes will also be reflected in the clip instance 3605, as
well as any other clip instances in the current or other media
projects.
[0331] 1. Information in the Inspector
[0332] When a user selects a media clip in the composite display
area, some embodiments display information about the selected clip
in an inspector display area (e.g., the display area 325 of FIG.
3). When a multi-camera media clip instance is selected, the
inspector of some embodiments displays information about the active
angles in the inspector. Furthermore, different tabs of the
inspector may display information about the multi-camera reference
clip properties, the audio properties of the active audio angle,
and the video properties of the active video angle.
[0333] FIGS. 38-41 illustrate a selected clip 3805 as well as
different tabs of the inspector display area with the clip 3805
selected. FIG. 38 specifically illustrates a composite display area
displaying a media project that includes two multi-camera clip
instances. The first multi-camera clip instance 3805, which is
selected, has an active video angle of "Viega" and an active audio
angle of "Nathaniel". The second clip instance, on the other hand,
has "Viega" as both its active video and audio angle.
[0334] FIG. 39 illustrates the inspector display area 3900 as a
result of the selection of the clip 3805. In this figure, the video
tab 3905 is selected in the inspector display area, which also has
an audio tab 3910 and an info tab 3915. The top section of the
inspector indicates that the selected clip is a multi-camera clip
by use of a multi-camera indicator (similar to the indicator used
for multi-camera reference clips in the clip browser or
multi-camera clip instances in the composite display area), as well
as indicating the active video and audio angles.
[0335] In addition, the inspector displays various video
information pertaining to the active video angle of the
multi-camera clip instance. Specifically, the inspector displays
information about any effects applied to the active angle of the
clip instance. In this case, the user has not yet applied any
specific effects to the "Viega" video angle. However, if the user
had applied a color correction, applied a pixel modification
effect, transformed, cropped, or distorted the video, etc., this
information would be displayed so long as "Viega" was the active
angle. If the user were to switch the active video angle to
"Nathaniel", then information about any effects stored in the
effect stack for that angle would be displayed in the inspector
3900. The video properties in the inspector 3900 of some
embodiments do not show, however, any effects applied to the clips
of the angle "Viega" within the multi-camera reference clip. To
populate the inspector for a selected multi-camera clip instance,
the media-editing application identifies the active video angle and
accesses the video effect stack for that angle stored in the data
structure for the instance. In order to view and modify the effects
on clips in the multi-camera reference clip, the user can select
the reference clip in the event.
[0336] FIG. 40 illustrates the inspector display area 3900 with the
audio tab 3910 selected. The top section of the inspector is the
same as in FIG. 39 (indicating the active video and audio angles),
but the section below that includes information about the audio
effects rather than video effects. In this case, the audio effects
shown are those stored in the audio effect stack for the angle
"Nathaniel", the active audio angle for the selected clip instance.
As with the video information, the application identifies the
active audio angle and accesses the audio effect stack for that
angle stored in the instance data structure.
[0337] FIG. 41 illustrates the inspector display area 3900 with the
info tab 3915 selected. Unlike the previous two figures, in which
the inspector displayed information about active angles, the info
tab for a multi-camera clip instance displays video and audio
properties of the multi-camera reference clip. These include video
properties such as the format (720 p), dimensions (1280.times.720),
and frame rate (30 fps), and audio properties such as the audio
channel count and sample rate. Some of the other information is
user-modifiable within the inspector, such as the clip name, roles,
and camera name. In some embodiments, modifying this information
within the inspector modifies this information for the multi-camera
reference clip (in the case of information such as the camera name
or clip name) or for the components of either the active angles or
all of the clips in the reference clip (e.g., for the roles). In
other embodiments, changes to this information only affects the
clip instance.
[0338] In addition to providing information about which angles are
active, some embodiments allow a user to switch the active angle
through the inspector. FIG. 42 illustrates a user switching the
active video angle for a selected clip instance in the inspector
over two stages 4210-4220 of a GUI 4200. The GUI 4200 includes,
among other display areas, a composite display area 4205, an
inspector display area 4215, a preview display area 4225, and an
angle viewer 4227.
[0339] In the first stage 4210, the user has selected a
multi-camera clip instance 4230 in the composite display area 4205.
As shown, this clip instance has an active video angle of "Viega"
and an active audio angle of "Nathaniel". As a result, the preview
display area 4225 displays a video image from a media clip in the
angle "Viega". Within the inspector, the user has selected the
video angle in order to activate a drop-down menu 4235. This
drop-down menu includes selectable menu options for each of the
five angles in the multi-camera clip reference. The menu 4235
displays a check next to the currently selected option ("Viega").
The user has placed a cursor over the option "Amir" in order to
select this option for the video angle.
[0340] The second stage 4220 illustrates the result of the user's
selection of the menu option for the "Amir" video angle. The
inspector display area 4215 now indicates that the active video
angle is "Amir", as does the clip 4230 in the composite display
area 4205. The preview display area 4225 now displays a video image
from a clip in this angle as well. Within the angle viewer 4227,
the application has highlighted the preview display 4240 for the
"Amir" angle with a border and a video icon that indicates the
active video angle.
[0341] 2. Using the Angle Viewer for Editing
[0342] In addition to using the inspector to switch the active
angle for a clip, users of the media-editing application may use
the angle viewer to perform certain editing operations on a
multi-camera clip instance. The following examples will be
described in the context of a viewer with four preview displays and
which shows the angle name within the displays, but one of ordinary
skill in the art will recognize that other options are available in
some embodiments (e.g., different numbers of preview displays and
with different information displayed about the angles, as shown in
FIG. 22).
[0343] FIG. 43 illustrates an angle viewer 4300 of some
embodiments, as displayed while a user edits a media project in a
composite display area. The angle viewer 4300 includes selectable
items 4305-4315, four preview displays 4320-4335, and angle banks
4340. The selectable items 4305-4315 allow a user to switch the
type of content for which the active angle of a clip instance will
be modified by selection of the various preview displays. When a
user selects one of the displays, the media-editing application
either switches the active angle for a current multi-camera clip
instance to the angle corresponding to the selected display or
splits the current clip instance into two instances with one of the
instances having the selected angle.
[0344] In this case, the selectable item 4305 is for switching both
the audio and video angles to the selected angle, the selectable
item 4310 is for switching only the video angle to the selected
angle, and the selectable item 4315 is for switching only the audio
angle to the selected angle. In FIG. 43, the selectable item 4305
is currently selected. In some embodiments, each of the items has a
different particular appearance (e.g., color, pattern, shade of
gray, etc.) when selected (e.g., yellow for both audio and video,
blue for video only, and green for audio only). This color coding
(or other appearance differentiator) may be used in the angle
viewer to identify the display associated with the active angles as
well as identify the location of the active angle in the banks
4340.
[0345] The four preview displays 4320-4335 each display images for
one of the angles in the multi-camera media clip. In some
embodiments, as a playhead moves over the multi-camera media clip
in the composite display area (while playing back a media project
or skimming through the media project), the application displays in
the angle viewer the images from the different angles that
correspond to the time of the playhead. The preview displays also
indicate when a particular angle is the active audio or active
video angle. At the moment, the active audio angle is "Nathaniel",
shown in the top left display 4320. The display 4320 has a green
highlighted border and shows the same audio icon used for the
selectable item 4315. The active video angle is not one of the
angles currently shown in any of the four displays. In some
embodiments, as stated, the appearances (e.g., colors, pattern,
etc.) of the highlighting for the preview displays match that of
the selectable items 4305-4315.
[0346] The angle banks 4340 illustrate the total number of angles
in the multi-camera clip and how those angles are broken into
viewable sets. In this example, the banks 4340 include a first set
of four angles and a second set of one angle. These sets are
selectable within the banks 4340, in that a user can select one of
the banks in order to view the preview displays for the particular
angles represented by the selected bank. For instance, the user
could select the bank with a single square in order to view a
preview display for the fifth angle of the multi-camera clip in the
angle viewer 4300. In addition, the banks indicate the location in
the sets of angles of the active video angle and the active audio
angle. In this figure, the top left square in the first bank is
shaded green to indicate the active audio angle ("Nathaniel"),
while the single square in the second bank is shaded blue to
indicate the active video angle.
[0347] As described above, some embodiments use a consistent
color-coding between the selectable items 4305-4315, the preview
displays 4320-4335, and the banks 4340 to indicate the different
types of content for the active angles. In this example, the video
angle is blue, the audio content is green, and when the same angle
is both the active video and audio angle, that angle is yellow. One
of ordinary skill in the art will recognize that any different
color or other indicator scheme may be used for the different
active angles--e.g., using a different set of colors, using
different shades of gray, using different patterns for different
types of content, etc.--and that the selection of green, blue, and
yellow is merely one specific choice.
[0348] In addition to displaying the current state of the different
active angles, the angle viewer 4300 allows users to change the
active angle of a multi-camera clip instance or split the instance
into two separate instances with different active angles. FIG.
44A-D illustrates various examples of the use of the angle viewer
to edit a multi-camera clip in a media project through seven stages
4410-4470 of a GUI 4400. The GUI 4400 includes an angle viewer
4425, preview display area 4405, and composite display area 4415,
among other display areas.
[0349] The angle viewer 4425 is similar to the viewer 4300, with
the angles in a different order and individual clip names shown in
preview displays 4426-4429 rather than angle names. The angles
shown in the viewer at the first stage 4410 are "Nathaniel" in the
display 4426, "Lam" in the display 4427, "Jim" in the display 4428,
and "Amir" in the display 4429. In addition, the fifth angle
"Viega" is not shown in any of the four displays, but is accessible
through the banks 4435. The viewer has three selectable items
4431-4433, with the same functions as items 4305-4315.
[0350] At stage 4410, the composite display area 4415 displays a
media project with several clips, including a multi-camera clip
instance 4445, the active angles of which at this stage are "Amir"
for the video angle and "Viega" for the audio angle. During the
seven stages of FIG. 44, the user plays back the media project
shown in the composite display area 4415. As such, a playhead 4455
moves across the composite presentation over the course of these
stages 4410-4470.
[0351] The angle viewer 4425 shows, at stage 4410, that the
selectable item 4432 for modifying the video angle is currently
selected. In addition, the display 4429 is highlighted in blue with
a video icon in order to indicate that "Amir" is the active video
angle. Because this is the active angle, video from this angle also
shows up in the primary preview display area 4405.
[0352] The user has placed the cursor over the display 4426. In
some embodiments, the cursor turns into a razor blade icon in order
to indicate that selecting the display will cause the application
to blade the clip instance at the time currently indicated by the
playhead 4455, while switching the active angle of the newly
created clip instance after the playhead. In some embodiments, the
cursor appears as a blade and selection of the angle display causes
the instance to split in two unless the user provides auxiliary
input while making the selection, such as holding down a particular
key, providing a different type of touch input, etc.
[0353] The second stage 4420 indicates the result of the user
selecting the angle display 4426 in the previous stage. As a
result, the active video angle is now the "Nathaniel" angle, shown
in the display 4426 and the preview display area 4405. In addition,
in the banks 4435, the upper left square in the first bank is
highlighted blue to indicate the new active video angle. The
media-editing application has split the clip instance 4445 into two
instances by modifying the trimmed range of the clip 4445 and
creating a new clip instance 4446 with a trimmed range starting at
the time of the playhead in the previous stage and continuing to
the end of the media clip (the previous ending time of the instance
4445). As indicated, the clip instance 4445 remains with the same
active angles while the new clip instance 4446 has an active video
angle of "Nathaniel" and an active audio angle of "Viega". In
addition, the user selects the item 4431 in this stage.
[0354] The third stage 4430 illustrates that the selectable item
4431 is now highlighted (in yellow), as a result of the user
selection at the previous stage. This item, as indicated above,
enables the user to switch both the active audio and video angles
to a selected angle. In addition, the user has placed the cursor
over the display 4428 for the angle "Jim", with the cursor again
displayed as the blade icon.
[0355] The fourth stage 4440 illustrates the result of the
selection of the angle display 4428 in the previous stage. The
active audio and video angle is now the "Jim" angle, shown in the
display 4428 and the preview display area 4405. In addition, the
banks 4435 no longer show either a blue or a green square, but
instead display the bottom left square as yellow. The media-editing
application has split the clip instance 4446 into two instances by
modifying the trimmed range of the clip 4446 and creating a new
clip instance 4447 with a trimmed range starting where the clip
instance 4446's range leaves off. The clip instance 4446 remains
with the same active angles while the new clip instance 4447 has
active video and audio angles of "Jim". In addition, the user
selects item 4433 at this stage.
[0356] The fifth stage 4450 illustrates that the selectable item
4433 is now highlighted (in green), as a result of the user
selection at the previous stage. In addition, the user has selected
the display 4429 to blade the clip instance 4447 and create a new
clip instance 4448 with an active video angle of "Jim" and an
active audio angle of "Amir". As a result, the previously yellow
highlighted display 4428 is now highlighted blue to indicate the
active video angle, while the display 4429 is highlighted green to
indicate the active audio angle.
[0357] The user has also placed the cursor over the single square
in the banks 4435 at this stage in order to select this item. In
some embodiments, each of the banks is a separate selectable item,
the selection of which causes the angle viewer to display the angle
displays associated with the angles represented in the selected
bank.
[0358] The sixth stage 4460 illustrates the result of the user
selecting the bank with a single angle in the previous stage. The
angle viewer now displays images from the angle "Viega" in the
display 4426. In addition, the user has placed the cursor over this
display, and the application displays this cursor as a hand icon
rather than a blade icon. In some embodiments, the user can hold
down a particular key, or provide a different selection input in
order to swap angles through the viewer rather than create a new
clip instance with the blade tool. The application provides
different indicators in the GUI to let the user know whether a
selection will split a clip instance or switch angles for the clip
instance.
[0359] The seventh stage 4470 illustrates the result of the user
selecting the display 4426 in the previous stage. Rather than
creating a new clip, the media-editing application has modified the
clip instance 4448 so that the active audio angle is "Viega" rather
than "Amir". To do this, the application need only modify the data
structure for the clip instance to change the active audio angle
variable. Additionally, both the display 4426 and the corresponding
square in the banks 4435 are now highlighted in green.
[0360] FIG. 44 illustrates the case in which the angle instances
are all located in the primary lane of the timeline. In some cases,
a user might create a composite presentation with a first angle
instance anchored to a second angle instance, such that both angle
instances are located at certain times within the composite
presentation, in different lanes. Some embodiments display video
from the angles of the angle instance located in the higher of the
two lanes for those times, unless that instance is disabled. When
more than two instances share a time, the application displays the
angles from the instance with the highest lane number in the angle
viewer. Some embodiments display a second angle viewer (either
automatically or by user request) for such situations, enabling the
user to view and edit either of the instances. When a compositing
mode (e.g., a blend) is defined between the two or more clip
instances, the primary preview display area of some embodiments
displays the output image that is the result of the blend.
[0361] FIG. 45 conceptually illustrates a process 4500 of some
embodiments for modifying the data structures for a media project
when a user blades a clip instance using the angle viewer. As
shown, the process 4500 begins by receiving (at 4505) a selection
through the angle viewer to blade and switch a multi-camera clip
instance in a composite presentation. FIG. 44 illustrates examples
of such a selection; for instance, when the user selects the
display 4426 in stage 4410.
[0362] The process identifies (at 4510) the time of a new edit
point in the multi-camera clip instance being trimmed. In some
embodiments, this edit point is the location of a playhead over a
multi-camera clip instance in the composite display area. Some
embodiments include both an editing playhead, which a user can lock
in at a particular time or set to playback the composite
presentation at a real time rate, as well as a skimming playhead
that moves with a cursor when the cursor moves over clips in the
composite display area. In some embodiments, the application uses
the position of the editing playhead to determine the time in the
multi-camera clip instance to set as the new edit point. While the
example of FIG. 44 shows the user editing the clip instances as the
playhead moves at a constant rate through the timeline, users may
also select a time within the timeline to fix the playhead at that
point, then select an angle in the angle viewer.
[0363] The process then trims (at 4515) the out point of the
existing multi-camera clip instance in the composite presentation
to match the identified edit point. In some embodiments, this
involves modifying the trimmed range of the angle instance data
structure such that the start time of the trimmed range does not
change but the end time of the trimmed range matches the new edit
point.
[0364] The process also generates (at 4520) a new clip instance in
the presentation with an in point immediately subsequent to the new
edit point and an out point matching the previous out point of the
existing clip instance. That is, the trimmed range of the new clip
instance starts one frame after the new out point of the already
existing clip instance, and ends at the same time that the existing
clip instance ended at prior to receiving the blade and switch
input. In some embodiments, this new clip instance is created in
the data structure for the composite presentation directly after
the previously existing clip instance that was broken in two. If
the instances are in the primary compositing lane of the composite
display area (as in FIG. 44), then these clip instances will be
defined as subsequent elements in the array of the primary
collection for the composite presentation.
[0365] After modifying the clips, the process modifies (at 4525)
the active angles of the new clip instance based on the type of
content switched by the selection. That is, the new clip instance
is a duplicate of the previously existing clip instance with the
exception of the trimmed range and at least one of the active
angles, as the new clip existence refers to the same multi-camera
reference clip, has the same total range, etc. When the currently
active selection tool is only for modifying the audio, then the
media-editing application changes the active audio angle of the new
clip instance to the selected angle, with the active video angle
staying the same as the previous clip instance. Similarly, when the
selection tool is only for modifying the video, then the
application changes the active video angle of the new clip instance
to the selected angle, with the active audio angle staying the same
as the previous clip instance. When the selection tool modifies
both audio and video, the application changes both active angles to
the selected angle.
[0366] In some embodiments, edits to a multi-camera clip instance
created by such a blading process are treated differently than
other edits by the media-editing application. As will be described
below in the following section, because these through edits
essentially split a continuous multi-camera clip based on angle
switches, some embodiments enable a user to quickly remove the edit
and merge the two clip instances. In addition, the application uses
a different default trim edit when editing such a through edit as
compared to other edit points.
[0367] Before describing editing with multi-camera clips within the
timeline, a display feature of the angle viewer will be described.
As mentioned in the sections above, many of the display areas in
the media-editing application GUI may be modified in size. FIG. 46
illustrates the effect of changing the size of an angle viewer 4600
when the viewer is displaying four angle preview displays, over
three stages 4610-4630.
[0368] The first stage 4610 illustrates the angle viewer 4600, with
four display areas, and a preview display area 4605 that borders
the angle viewer. The user has placed a cursor over the boundary,
or seam, between the two display areas, which causes the GUI to
display the cursor as a bar with arrows indicating the directions
in which the seam can be moved. As shown at stage 4620, the user
moves the border to the left, thereby increasing the size of the
preview display area 4605 and correspondingly decreasing the size
of the angle viewer 4600.
[0369] At the third stage 4630, the user has continued to move the
seam to the left. This causes the angle viewer 4600 to no longer
display the display areas in a 2.times.2 formation, but instead use
a 1.times.4 display to more efficiently make use of the space
available in the angle viewer display area 4600. In addition to
modifying the formation of the displays, the application
correspondingly changes the formation of the banks in the angle
viewer 4600. While in the first and second stages 4610 and 4620 the
bank 4625 of four angles is shown in a 2.times.2 square, the third
stage 4630 illustrates this bank 4625 as a 1.times.4 set of
rectangles.
[0370] In some embodiments, the media-editing application switches
the display of the angle viewer once the individual angle display
areas will be larger in the new 1.times.4 formation than in the
2.times.2 formation. Some embodiments also perform such formation
changes for groups of less or fewer angle displays. For instance, a
2-up viewer (with two angle displays) may be displayed in 1.times.2
or 2.times.1 formation, and a 16-up viewer (with sixteen angle
displays) may be displayed in 4.times.4 or 2.times.8 formation,
among other options.
[0371] 3. Editing Multi-Camera Clip Instances in the Timeline
[0372] In addition to using the angle viewer and inspector to
modify the active angles of multi-camera clip instances, users can
perform such actions in the composite display area, as well as
perform a variety of other editing actions specific to multi-camera
clips. Many such editing operations specific to multi-camera clips
are enabled by the editing application's recognition of "through
edits" and differentiation of through edits from other edit points.
As described above, in some embodiments a through edit is when a
first multi-camera clip instance has an out point that is one frame
in the multi-camera clip reference prior to the in point of a
second multi-camera clip instance that directly follows the first
clip instance in the timeline.
[0373] FIG. 47 illustrates the use of a menu in a composite display
area 4700 to switch the video angle of a selected multi-camera clip
instance 4705 over three stages 4710-4730. In the first stage 4710,
the clip instance 4705 is selected and the user has activated a
drop-down menu 4715. At this point, as shown by the clip title, the
angle "Amir" is the active video and audio angle for the clip
instance 4705. Within the menu 4715, the user has selected the
option "Active Video Angle", which causes the display of a sub-menu
4725 showing the five possible video angles for the clip instance.
Because the currently selected video angle is "Amir", this option
is currently checked in the sub-menu.
[0374] The second stage 4720 illustrates the selection of the angle
"Nathaniel" in the sub-menu 4725, and the third stage 4730
illustrates the result of this action. At this stage, the
multi-camera clip instance 4705 now has an active video angle of
"Nathaniel" and an active audio angle of "Amir". As with the
previously-described actions to switch angles, the media-editing
application of some embodiments modifies the active video angle of
the angle instance data structure for the clip 4705 in order to
effect this switch. Doing so also causes the application to swap in
the video effect stack for the selected angle from the effect stack
dictionary for the clip for any rendering operations to be
performed with the clip.
[0375] FIG. 48 illustrates a different manner of switching video
angles in a composite display area 4800 of some embodiments, over
four stages 4810-4840. In this case, the media-editing application
displays an angle view display area, or heads-up display ("HUD"),
in response to user selection input. As shown, at the first stage
4810, a multi-camera media clip instance 4805 with active video and
audio angles "Amir" is selected. The user has initiated the
activation of a menu 4815 for this selected clip. Within the menu,
the user selects the "View Angle HUD" option.
[0376] The second stage 4820 illustrates that as a result of this
selection, the application now displays an angle viewing HUD 4825
in the GUI, above the selected clip instance. The angle viewing HUD
of some embodiments allows the user to rotate through the various
video angles available for a multi-camera clip instance. The user
can either playback or skim through the video and audio associated
with the different angles. As shown, when initiated, the angle
viewing HUD 4825 displays the video of the currently selected angle
("Amir") in its center. The other options are shown to the sides of
the display area, in order for the user to rotate them into the
center through interaction with the user interface (e.g., keys such
as the right and left arrows, or selection of items within the
HUD). The multi-camera reference clip to which the clip instance
4805 refers has two angles, so only one other image is shown, to
the left. At the bottom of the display area are indicators that
visually indicate to the user which of the angles is currently
selected as the active video angle. As shown by the star indicator,
the angle on the right ("Amir") is currently selected. In some
embodiments, the user can either select these indicators or select
the image to the side of the display in order to rotate through the
various angles. In this case, the user is shown selecting the other
image on the left side of the HUD 4825.
[0377] The third stage 4830 shows that after the user selects this
image, the HUD now displays video images for the angle "Nathaniel"
at its center. The selection indicators still indicate that the
"Amir" angle was selected when the user initiated the viewer 4825,
as the right of the two indicators remains a star. At this stage,
the user selects the "Done" GUI item in order to select the
"Nathaniel" video angle.
[0378] The fourth stage 4840 illustrates the result of this
selection, as the multi-camera clip instance 4805 now indicates a
video angle of "Nathaniel" and an audio angle of "Amir". While this
example shows the use of the angle viewing HUD 4825 to select the
video angle, some embodiments allow the user to select the audio
angle for a clip instance through the HUD as well. Some embodiments
include selectable items similar to those shown in the angle viewer
4300 of FIG. 43 that allow the user to choose between audio, video,
or both to determine for which type of content the active angle or
angles will be modified by selection of a different angle in the
viewing HUD.
[0379] While FIG. 47 illustrated switching the active video angle
of a multi-camera clip instance in the timeline, FIG. 49
illustrates the use of a similar menu to switch the active audio
angle of a selected multi-camera clip instance 4905 in a composite
display area 4900 over two stages 4910 and 4920. In the first
stage, the clip instance 4905 is selected and the user has
activated a drop-down menu 4915. At the moment, as shown by the
clip title, the active video angle for the clip instance 4905 is
"Nathaniel" and the active audio angle is "Amir". Within the menu
4915, the user has selected the option "Active Audio Angle" to
cause the display of a sub-menu 4925 showing the five possible
audio angles for this clip instance. Because the currently selected
audio angle is "Amir", this option is currently checked in the
sub-menu. At this stage, the user selects the angle "Viega" in the
sub-menu 4925.
[0380] The second stage 4920 illustrates the result of this
selection, as the multi-camera clip instance 4905 now has an active
audio angle of "Viega". As with the previously-described actions to
switch angles, the media-editing application of some embodiments
modifies the active audio angle of the angle instance data
structure for the clip 4905 in order to effect this switch. Doing
so also causes the application to swap in the audio effect stack
for the selected angle from the effect stack dictionary for the
clip for any rendering operations to be performed with the
clip.
[0381] In addition to blading clips and changing the active angles
of clip instances, the media-editing application of some
embodiments provides a variety of editing operations for affecting
multi-camera clip instances. For one, many standard editing
operations available for application to a standard media clip in a
media project are also available for multi-camera clip instances:
application of video or audio effects to an active angle (pixel
modification effects, transforms, distortions, etc.), trim
operations (ripple, roll, slip, slide), and compositing operations
using multiple lanes (blending, picture in picture, etc.), among
other operations. In addition, some embodiments provide operations
specific to multi-camera clip instances or vary how certain
operations are applied to multi-camera clip instances.
[0382] Many such operations relate to the handling of through edits
by the media-editing application. As described above, a through
edit occurs in some embodiments when a user blades a multi-camera
clip instance and the resulting out point of the first clip is
immediately prior to the resulting in point of the second clip
(that is, time within the multi-camera reference clip timeline
flows smoothly from the first clip to the second clip with no
breaks). Thus, playing back a media project across the two clip
instances involves a continuous playback through the multi-camera
clip, but with a switch in the active video or audio angle (or
both). Whereas the edit point between two clips in a media project
is normally displayed in the GUI as a solid line, some embodiments
display through edits as dashed lines to visually indicate the
presence of the through edits to the user.
[0383] FIG. 50 illustrates the deletion of a through edit in a
composite display area 5000 in order to combine two multi-camera
clip instances into a single instance over two stages 5010 and
5020. As shown at the first stage, the composite display area 5000
displays a representation of a media project that includes, among
other clips, a first multi-camera clip instance 5005 and a second
multi-camera clip instance 5015. Both of these clips refer to the
same multi-camera reference clip, but the first clip instance 5005
has active video and audio angles of "Amir" while the second clip
instance 5015 has active angles of "Viega".
[0384] The edit point between the two clip instances 5005 and 5015
is a through edit because, in addition to referring to the same
reference clip, the clips refer to subsequent content in the
multi-camera reference clip. In the first stage 5010, the user has
selected this edit point and activated a menu 5025, which includes
the option "Delete Edit". In some embodiments, this menu option is
only available when the user selects a through edit, as opposed to
a normal edit between two unrelated media clips, or even two clip
instances that do not refer to subsequent reference clip
material.
[0385] The second stage 5020 illustrates the result of this
selection, as the media-editing application has deleted the second
clip instance 5015, and extended the duration of the clip instance
5005. In some embodiments, the application removes the data
structure for the second clip instance from the media project while
extending the trimmed range of the first clip instance such that
the out point in the reference clip timeline matches that of the
now-deleted clip instance. While this example shows the second clip
instance (the later clip in the timeline) being deleted, some
embodiments automatically delete the earlier instance (and change
the in point of the later instance), or allow the user to choose
which of the two instances to delete. Furthermore, while this
figure shows a menu selection, some embodiments allow the user to
delete an edit point through other interactions, such as the delete
key or a different set of keystrokes.
[0386] In addition to the clip deletion shown in FIG. 50, some
embodiments will also automatically delete clip instances in
specific editing scenarios. When two clip instances are separated
by a through edit, and the user modifies one of the instances to
have the same active angles as the other instance, some embodiments
automatically recognize this and combine the two clip instances (by
deleting one of the instances and modifying the in or out point of
the other instance as needed).
[0387] Even when two consecutive multi-camera clip instances cannot
be combined because one of the active angles (either the video or
audio angle) is different between the two, some embodiments will
treat the video or audio of the two clips as a single clip for
certain actions when the two clip instances share one of the active
angles. For instance, certain audio-related actions will be applied
to both clip instances when the active audio angles are the same
but with different active video angles.
[0388] FIG. 51 illustrates a modification to the volume level of
two clip instances 5105 and 5115 that are separated by a through
edit, over two stages 5110 and 5120 of a composite display area
5100. The first clip instance 5105 has a video angle of "Amir" and
an audio angle of "Nathaniel", while the clip instance 5115 has a
video angle of "Viega" and an audio angle of "Nathaniel". In this
figure, the user has changed the clip display in the composite
display area 5100 to better highlight the audio waveforms rather
than the video thumbnails.
[0389] As shown in the first stage 5110, the user has placed a
cursor over an audio volume line shown at the top of the audio
waveform, and selected the volume line. In some embodiments, this
audio volume line is a UI tool that enables the user to modify the
volume of the audio for a media clip. When the user selects the UI
tool, some embodiments provide a display indicating the volume of
the particular clip--in this case, -7 decibels. The user can move
the UI tool up or down in order to modify the volume of the
clip.
[0390] The second stage 5120 illustrates the clip instances 5105
and 5115 after the user has dragged the audio volume line upwards
in order to change the volume of the clips to +9 decibels. As
shown, the user drags the volume line within the first clip
instance 5105. However, because the edit point between the two
clips is a through edit and the audio angle is the same for the two
clips, the application automatically treats the audio as if it were
one clip and applies the same effect to both. As such, not only is
the volume of the audio for the clip instance 5105 raised to +9 dB,
but the volume of the audio for the clip instance 5115 increases as
well.
[0391] In some embodiments, other audio effects (panning, sound
generation effects, etc.) applied to one clip instance will be
applied to neighboring clip instances that have the same audio
angle and are divided by through edits as well. In some cases,
several subsequent clips that are all divided by through edits
(i.e., that collectively refer to a continuous timeline in a
multi-camera reference clip) and share the same audio angle can be
treated collectively for audio effect purposes (such as shown in
FIG. 51).
[0392] In addition to applying audio effects across multiple
instances, some embodiments apply video effects in a similar manner
when the video angles are the same across consecutive clip
instances divided by through edits. FIG. 52 illustrates a user
applying a video effect to a pair of clip instances 5205 and 5215
in a composite display area 5200 over two stages 5210 and 5220. The
first clip instance 5205 has an active video angle of "Viega" and
an active audio angle of "Nathaniel", while the second clip
instance 5215 has an active video angle of "Viega" and an active
audio angle of "Lam".
[0393] In some embodiments, a user can drag a video effect from an
effects display area (e.g., the display area 330 of FIG. 3) over a
clip in order to apply the effect to the clip. In the first stage
5210 of FIG. 52, the user has dragged an effect (the Bokeh Random
effect) over the multi-camera clip instance 5215 in order to apply
the clip to the active video angle ("Viega") of the clip instance.
As shown at this stage, not only does doing so highlight the clip
instance 5215, but it also highlights the clip instance 5205. The
clip instance 5205 has the same active video angle as the clip
instance 5215 and is only separated from the other instance by a
through edit. As such, the application applies the Bokeh Random
effect to both of the clip instances 5205 and 5215.
[0394] The second stage 5220 illustrates the result of the
application of the effect in the inspector display area 5225. In
the composite display area, the user has selected the multi-camera
clip instance 5205, and the inspector display area 5225 displays
the video information for this selected clip. As shown, the video
information includes the effect Bokeh Random, dropped over the clip
instance 5215 in the previous stage. This indicates that the
media-editing application has added this effect to the video effect
stack for the "Viega" angle in the clip instance 5205 as well as
that of clip instance 5215. In some embodiments, when the user
modifies the effect parameters for one of the clips, this also
affects the effect stack of the other neighboring clip
instances.
[0395] The previous two examples illustrate the application of
various audio and video effects to multiple multi-camera clip
instances automatically. In some embodiments, users have the option
whether to affect multiple instances separated by through edits or
to only affect the clip to which the effects are directly applied.
The user may toggle a setting, hold down a particular key or set of
keys, etc. in order to determine whether to affect one or multiple
clips at the same time.
[0396] The media-editing application also uses different defaults
in certain circumstances when applying user actions to multi-camera
clip instances as compared to standard media clips. For instance,
some embodiments apply different default trim edits to clips when
the edit boundary being trimmed is a through edit between two clip
instances. Trim edits, in some embodiments, are edits that modify
the edit points between two clips. Examples of trim edits applied
at the edit boundary include the ripple edit (which changes the
duration of only one of the clips at the edit boundary) and the
roll edit (which increases the duration of one of the clips while
correspondingly decreasing the duration of the other clip). Other
trim edits include the slide edit (which moves a selected clip in
the timeline such that the clip on one side of the selected clip
decreases in duration while the clip on the other side of the
selected clip increases in duration) and the slip edit (which
changes the in and out points of a selected media clip without
moving the clip in the timeline).
[0397] FIGS. 53 and 54 illustrate the difference in default trim
edits applied at the edit point between two standard media clips
and two multi-camera clip references in which the edit point is a
through edit. In some embodiments, when a user places a cursor near
an edit point, the media-editing application assumes that the user
wishes to perform a trim edit at that boundary (e.g., a ripple
edit). In addition, the user can select a trim tool, which provides
the ability to access multiple different trim edits (e.g., ripple,
roll, slip, slide, as described above) by moving the cursor over
different portions of a clip. The following figures indicate the
difference in the default trim edit when the trim tool is not
selected for some embodiments.
[0398] FIG. 53 illustrates a default trim edit as a ripple edit to
standard media clips over three stages 5310-5330 of a composite
display area 5300, while FIG. 54 illustrates the default trim edit
as a roll edit to multi-camera media clip instances over three
stages 5410-5430 of a composite display area 5400.
[0399] In the first stage 5310 of FIG. 53, the user has selected an
edit point between two clips 5305 and 5315. These clips are
standard media clips with audio and video components (e.g., clip
805 of FIG. 8). The cursor at the edit point displays a ripple edit
indicator, as the user moves the cursor to the left. The second
stage 5320 displays the composite display area 5300 as the user has
moved the edit point to the left by approximately two seconds, and
the third stage 5330 illustrates the composite display area 5300
after the user has released the edit point and finished the trim
edit. As the media-editing application defaults to a ripple edit,
this decreases the trimmed range of the clip 5305. The data
structure for the clip 5315 is not affected, although the clip
starts earlier in the timeline as a result of the shortened clip
5305.
[0400] In the first stage of FIG. 54, the user selects an edit
point between two multi-camera media clip instances 5405 and 5415.
These clip instances both refer to the same multi-camera reference
clip and are separated by a through edit. As such, when the user
selects the edit point between the two clips in stage 5410, the
media-editing application defaults to using a roll edit rather than
a ripple edit. As the user moves the edit point to the left in
stage 5420, the duration of the clip 5405 decreases while the
duration of the clip 5415 increases. The third stage 5430
illustrates the composite display area 5400 after the user has
released the edit point and finished the trim edit. Because the
media-editing application defaults to a roll edit, the change
decreases the trimmed range of the clip 5405 (moving the out point
earlier in the reference clip) and increases the trimmed range of
the clip 5415 (correspondingly moving the in point earlier in the
reference clip). Because the range of the second clip 5415 still
starts directly after the end of the range of the first clip 5405,
the edit point between the two clips remains a through edit. Were
the user to apply a ripple edit at this boundary, the edit would no
longer be a through edit as the clips would no longer be subsequent
in the timeline of the reference clip.
VI. Rendering Clip Instances
[0401] The above sections described the editing of a media project
using multi-camera clip instances. In order to generate output
images for a media project, the application renders an image for
each frame in the presentation. The frequency of these frames
depends on the frame rate specified for the media project (e.g., as
shown in FIG. 4). To render an image for a particular frame in the
media project, the application first identifies the media clip or
clips to use for that time. When the time in the media project has
clips in multiple lanes, or a compound clip with clips in multiple
lanes, multiple source images may be needed. To render an image
from a standard video clip whose frame rate (typically taken from
the source video file referred to by the video clip through an
asset) matches the composite presentation, the application
identifies a source image from the time in the clip that
corresponds to the requested frame, reads and decodes the frame,
and applies any effects in the clip's effects stack (e.g.,
transforms, pixel value modification, etc.). Such rendering
operations are described in detail in the U.S. patent application
Ser. No. 13/111,895, entitled "Media-Editing Application with
Multiple Resolution Modes" and filed May 19, 2011, which is
incorporated herein by reference.
[0402] When the frame rate of the video clip does not match that of
the media project, some embodiments use multiple source images from
the video clip in order to perform a rate conform effect, as
described in U.S. patent application Ser. No. 13/218,407, entitled
"Rate Conform Operation for a Media-Editing Application" and filed
Aug. 25, 2011, which is incorporated herein by reference. In
addition, when the video properties (e.g., the format and/or
dimensions) of the video clip do not match that of the media
project, some embodiments apply a spatial conform effect to the
clips as described in application Ser. No. 13/218,407. These
effects are stored in the effect stack of the media clip in some
embodiments, and applied after the image or images are retrieved
and decoded.
[0403] Clip instances, however, do not directly contain component
clips or references to assets, but instead refer to reference clips
stored in an event (which themselves contain component clips and
asset references). The clip instances may store their own effect
stacks, and in the case of multi-camera clip instances store
different effect stacks for the different angles in the
multi-camera reference clip. In addition, the reference clips may
have their own effects applied. In the case of multi-camera
reference clips or compound reference clips, the clips contained
within the reference clips may have their own effect stacks. In
addition, the source images may have a first set of video
properties, the reference clip a second set of video properties,
and the media project that contains the clip instance a third set
of video properties. Thus, the media-editing application of some
embodiments may need to apply multiple layers of effect stacks,
including conform effects, in order to render each output
image.
[0404] FIG. 55 conceptually illustrates a process 5500 of some
embodiments for rendering images from a multi-camera clip instance
in a media project. The process 5500 will be described by reference
to FIGS. 56 and 57. FIG. 56 conceptually illustrates a timeline of
a media project 5600 that includes various media clips, including a
multi-camera clip instance 5605. FIG. 57 conceptually illustrates a
render graph 5700 for a particular image of the media project 5600.
The multi-camera clip instance 5605 refers to a multi-camera
reference clip 5610 and has an active video angle of "Angle 2". The
multi-camera reference clip 5610 includes, in the video angle
"Angle 2", various media clips including a particular clip
5615.
[0405] The process 5500 begins by receiving (at 5505) a request to
render an image for a particular time in a multi-camera clip
instance. The media-editing application of some embodiments
requests rendered images for various reasons. When a user skims
through a media project or compound clip in the composite display
area or initiates playback of a media project, the application will
render an image to output to the appropriate display area. In
addition, some embodiments render images in the background when the
processing and memory resources are available, in order to have the
images available for future use without having to render at that
time. The user might also have requested to render the media
project for export (e.g., to a storage, for upload to a website,
etc.).
[0406] FIG. 56 illustrates a playhead 5620 over the media project
5600, which indicates a particular time within the multi-camera
clip instance 5605. This clip instance 5605 is an instance of the
multi-camera reference clip 5610, which has a 720 p video format
with a 30 fps frame rate and both a transform effect and a colorize
effect applied. The render graph 5700 indicates the operations
applied to a source image in order to arrive at the desired output
image for this particular time in the clip instance 5605.
[0407] The process 5500 then identifies (at 5510) an active video
angle for the clip instance. In some embodiments, the application
stores the active video angle as a variable in the data structure
for the clip instance. In the example shown in FIG. 56, the active
video angle of the clip instance 5605 is "Angle 2".
[0408] With the active video angle identified, the process then
identifies (at 5515) the video clip and asset or assets for the
particular time in the active angle of the multi-camera reference
clip referred to by the clip instance. The particular time
requested in the media project corresponds to a particular time in
the multi-camera reference clip. As described above, the
multi-camera reference clip of some embodiments has a set of angles
that are each an ordered set of clips. As such, each angle has a
clip that corresponds to the particular requested time (though this
clip may be a gap clip). This clip, in turn, has a video component
that refers to a media asset. If the clip is a compound clip, then
it may refer to multiple assets by way of the different clips
contained within the compound clip. In the example of FIG. 56, the
active angle in the multi-camera reference clip 5610 includes clip
5615 at the requested time. As shown, this clip 5615 has a 1080 p
video format with a 30 fps frame rate, and has a color correction
effect applied.
[0409] Next, the process 5500 retrieves and decodes (at 5520) an
image from the media file corresponding to the requested time in
the video clip. The media asset identified at 5515 includes a
reference to a media file that stores actual video images. These
images are often stored in encoded form, and thus the media-editing
application uses a decoder to decode the images and arrive at a set
of pixels that represents the image. As shown in FIG. 57, the
render graph 5700 begins with a decoded 1920.times.1080 bitmap
image from the media asset referred to by the clip 5615.
[0410] With the image retrieved, the process applies (at 5525) any
video effects on the clip in the multi-camera reference clip to the
decoded image. In some embodiments, the effects on the reference
clip (or clips within the reference clip) are applied before any
effects on the clip instance. In addition, some embodiments apply
the reference clip effects before conforming the retrieved images
to the reference clip properties. In FIG. 56, the clip 5615 has a
color correction effect, and thus the application applies this
color correction effect. As shown in the render graph 5700, the
node 5705 for the retrieved bitmap leads into a color correction
node 5710 for the application of this effect on the clip 5615. This
color correction node includes the parameters of the effect defined
by a user (e.g., a mapping of input pixel values to output pixel
values).
[0411] Next, the process applies (at 5530) any spatial conform
effect necessary to conform the image to the spatial properties of
the multi-camera clip. If the multi-camera reference clip has the
same spatial video properties as the retrieved image, then no
spatial conform effect is necessary.
[0412] When the spatial properties differ, the media-editing
application applies a spatial conform effect in order to generate
an image of the requested size (in this case, that of the reference
clip). When the aspect ratio of the images is different, the
application can either fit the entirety of the retrieved image into
the output image (with either a pillarbox or letterbox), or fill
the entirety of the output image (cutting off part of the retrieved
image). A detailed discussion of the spatial conform effect of some
embodiments can be found in U.S. application Ser. No. 13/218,407,
incorporated by reference above.
[0413] In order to preserve time alignments within the multi-camera
reference clip, some embodiments do not temporally conform the
contained video clip to the frame rate of the reference clip. On
the other hand, some embodiments use time-preserving rate conform
effects such as frame sampling or blending, but avoid using rate
conform effects that speed up or slow down the clip. A detailed
discussion of different rate conform techniques can be found in
U.S. application Ser. No. 13/218,407.
[0414] The clip 5615 has a 1080 p video format (1920.times.1080
images with square pixels), while the reference clip 5610 that
contains the clip 5615 has a 720 p video format (1280.times.720
images with square pixels), so the application applies a spatial
conform effect to scale the 1920.times.1080 images to
1280.times.720. Thus, the next operation in the render graph 5700
is a transform node that scales the input image by a factor of 2/3
(0.67). The output of this node 5715 will be a 1280.times.720
bitmap.
[0415] Returning to FIG. 55, the process 5500 next applies (at
5535) to the image any video effects on the active angle in the
multi-camera instance clip. As described above, some embodiments
store a video effects stack in the clip instance for each angle of
the multi-camera reference clip. The process identifies the effects
stack for the active angle and applies any effects in this stack.
In FIG. 56, the active angle ("Angle 2") of clip 5605 has a
colorize effect and a transform effect applied. The render graph
5700 thus has a node 5720 for the colorize effect and a node 5725
for the transform operation. Some embodiments switch the order of
these two operations, and combine the transform 5715 with the
transform operation 5725. If the transform effect 5725 enlarges the
image, then combining these operations avoids a loss of resolution
caused by downscaling the image and then subsequently upscaling the
image. However, some embodiments separate effects applied within
the reference clip from effects applied to the active angle.
[0416] Finally, the process 5500 applies (at 5540) spatial and
temporal effects to the image to conform the image to the spatial
properties and frame rate of the media project that contains the
multi-camera clip instance, then ends. When the spatial properties
of the multi-camera reference clip are the same as those of the
media project, then no spatial conform effect is needed. Otherwise,
the spatial conform effect is applied as described above for
operation 5530. When the frame rates of the reference clip and the
media project do not match, the application applies a rate conform
effect. In some embodiments, the rate conform effect actually
requires multiple frames from the source video file, as the output
image is a blend of two of the source images. Other rate conform
effects only require one image. As indicated above, a detailed
description of different rate conform techniques can be found in
U.S. application Ser. No. 13/218,407. In the case of FIG. 56, the
reference clip properties (720 p, 30 fps) match those of the media
project, and thus no conform effect is necessary. As such, the
output of operation 5725 is the requested image for the media
project.
[0417] One of ordinary skill in the art will recognize that in some
embodiments the media-editing application does not retrieve an
image, then determine which effects to apply from the reference
clip, then apply these effects, then determine which effects to
apply from the clip instance, and then apply these clip instance
effects. Instead, the application builds a render graph such as
graph 5700, then begins retrieving and decoding images and applying
the render graph operations to the decoded images. This allows the
application to combine effects when possible, and avoid resampling
pixels repeatedly. For instance, if a transform effect and a
conform effect are both applied to an image, some embodiments
combine these operations. A more detailed discussion of the
rendering operations of some embodiments can be found in U.S.
application Ser. No. 13/111,895, incorporated by reference
above.
[0418] FIGS. 55-57 described rendering for multi-camera clip
instances that refer to multi-camera clips. One of ordinary skill
in the art will recognize that similar principles are applicable to
other clips implemented as instances of reference clips as well,
whether the reference clips are individual clips, compound clips,
etc. Some embodiments render such clips by first applying effects
on the reference clip or on clips contained within the reference
clip, then subsequently applying effects on the clip instance.
VII. Software Architecture
[0419] In some embodiments, the processes described above are
implemented as software running on a particular machine, such as a
computer or a handheld device, or stored in a machine-readable
medium. FIG. 58 conceptually illustrates the software architecture
of a media-editing application 5800 of some embodiments. In some
embodiments, the media-editing application is a stand-alone
application or is integrated into another application, while in
other embodiments the application might be implemented within an
operating system. Furthermore, in some embodiments, the application
is provided as part of a server-based solution. In some such
embodiments, the application is provided via a thin client. That
is, the application runs on a server while a user interacts with
the application via a separate machine remote from the server. In
other such embodiments, the application is provided via a thick
client. That is, the application is distributed from the server to
the client machine and runs on the client machine.
[0420] The media editing application 5800 includes a user interface
(UI) interaction and generation module 5805, a media ingest module
5810, editing modules 5815, a timeline generator 5820, an angle
viewer generator 5827, a rendering engine 5825, a playback module
5830. The figure also illustrates stored data associated with the
media-editing application: source files 5835, events data 5840,
project data 5845, and render files 5850.
[0421] In some embodiments, the source files 5835 store media files
(e.g., video files, audio files, combined video and audio files,
etc.) imported into the application. The events data 5840 stores
the events information used by some embodiments to populate the
clip library and clip browser, which includes multi-camera
reference clips. The events data may be a set of clip object data
structures stored as one or more SQLite database files (or other
format) in some embodiments. The project data 5845 stores the
project information used by some embodiments to specify a composite
presentation in the timeline. The project data may also be a set of
clip object data structures stored as one or more SQLite database
files (or other format) in some embodiments. These clip object data
structures include multi-camera clip instances that refer to the
multi-camera reference clips stored in the event data 5840, as well
as other clip objects that refer to asset data structures stored in
the event data 5840. The render files 5850 of some embodiments may
include thumbnail-sized images for display in the clip browser or
timeline, audio waveform displays for media clips, as well as
rendered segments of a timeline sequence for use during
playback.
[0422] In some embodiments, the four sets of data 5835-5850 are
stored in one physical storage (e.g., an internal hard drive,
external hard drive, etc.). In some embodiments, the data may be
split between multiple physical storages. For instance, the source
files might be stored on an external hard drive with the events
data, project data, and render files on an internal drive. Some
embodiments store events data with their associated source files
and render files in one set of folders, and the project data with
associated render files in a separate set of folders.
[0423] FIG. 58 also illustrates an operating system 5855 that
includes input device driver(s) 5860, display module 5865, and
media import module 5870. In some embodiments, as illustrated, the
device drivers 5860, display module 5865, and media import module
5870 are part of the operating system even when the media editing
application 5800 is an application separate from the operating
system.
[0424] The input device drivers 5860 may include drivers for
translating signals from a keyboard, mouse, touchpad, tablet,
touchscreen, etc. A user interacts with one or more of these input
devices, which send signals to their corresponding device driver.
The device driver then translates the signals into user input data
that is provided to the UI interaction and generation module
5805.
[0425] The present application describes a graphical user interface
that provides users with numerous ways to perform different sets of
operations and functionalities. In some embodiments, these
operations and functionalities are performed based on different
commands that are received from users through different input
devices (e.g., keyboard, trackpad, touchpad, mouse, etc.). For
example, the present application illustrates the use of a cursor in
the graphical user interface to control (e.g., select, move)
objects in the graphical user interface. However, in some
embodiments, objects in the graphical user interface can also be
controlled or manipulated through other controls, such as touch
control. In some embodiments, touch control is implemented through
an input device that can detect the presence and location of touch
on a display of the device. An example of such a device is a touch
screen device. In some embodiments, with touch control, a user can
directly manipulate objects by interacting with the graphical user
interface that is displayed on the display of the touch screen
device. For instance, a user can select a particular object in the
graphical user interface by simply touching that particular object
on the display of the touch screen device. As such, when touch
control is utilized, a cursor may not even be provided for enabling
selection of an object of a graphical user interface in some
embodiments. However, when a cursor is provided in a graphical user
interface, touch control can be used to control the cursor in some
embodiments.
[0426] The display module 5865 translates the output of a user
interface for a display device. That is, the display module 5865
receives signals (e.g., from the UI interaction and generation
module 5805) describing what should be displayed and translates
these signals into pixel information that is sent to the display
device. The display device may be an LCD, plasma screen, CRT
monitor, touchscreen, etc.
[0427] The media import module 5870 receives media files (e.g.,
audio files, video files, etc.) from storage devices (e.g.,
external drives, recording devices, etc.) through one or more ports
(e.g., a USB port, Firewire port, etc.) of the device on which the
media-editing application 5800 operates and translates this media
data for the media-editing application or stores the data directly
onto a storage of the device.
[0428] The UI interaction and generation module 5805 of the media
editing application 5800 interprets the user input data received
from the input device drivers and passes it to various modules,
including the media ingest module 5810, the editing modules 5815,
the timeline generator 5820, the angle viewer generator 5827, the
rendering engine 5825, and the playback module 5830. The UI
interaction module also manages the display of the media-editing
application GUI, and outputs this display information to the
display module 5865. This UI display information may be based on
information from the editing modules 5815, the timeline generator
5820, the angle viewer generator 5827, the playback module 5830,
the data 5835-5850, etc. In addition, the module 5805 may generate
portions of the UI based solely on user input--e.g., when a user
moves an item in the UI that only affects the display rather than
any of the other modules, such as moving a window from one side of
the UI to the other or modifying the relative size of the clip
browser and clip library. In some embodiments, the UI interaction
and generation module 5805 generates a basic GUI and populates the
GUI with information from the other modules and stored data.
[0429] The media ingest module 5810 manages the import of source
media into the media-editing application 5800. Some embodiments, as
shown, receive source media from the media import module 5870 of
the operating system 5855. The media ingest module 5810 receives
instructions through the UI module 5805 as to which files should be
imported, then instructs the media import module 5870 to enable
this import (e.g., from an external drive, from a camera, etc.).
The media ingest module 5810 of some embodiments stores these
source files 5835 in specific file folders associated with the
application. In some embodiments, the media ingest module 5810 also
manages the creation of event data structures upon import of source
files and the creation of the clip and asset data structures
contained in the events.
[0430] The editing modules 5815 include a variety of modules for
editing media in the clip browser as well as in the timeline. The
editing modules 5815 handle the creation of projects, addition and
subtraction of clips from projects, trimming or other editing
processes within the timeline, application of effects and
transitions, or other editing processes. In some embodiments, the
editing modules 5815 create and modify project and clip data
structures in both the event data 1980 and the project data
5845.
[0431] The editing modules 5815 of some embodiments include modules
for editing clips, media projects, etc. The editing modules create
media projects, trim clips within projects, apply effects to the
clips, and other operations. In some embodiments, the editing
modules modify the events data 5840 and project data 5845. The
editing modules 5815 include a multi-camera creation module 5817
that performs automatic multi-camera clip creation (e.g., assigning
clips to angles, ordering and sequencing the angles, and aligning
the angles). In addition, the editing modules 5815 can be used to
manually edit multi-camera reference clips in the angle editor.
[0432] The timeline generator 5820 generates a timeline for display
in the composite display area, based on a requested media project,
compound clip, multi-camera reference clip, etc. For example, when
the user requests to view a multi-camera reference clip in the
angle editor, the timeline generator 5820 retrieves the reference
clip information from the events data 5840 and generates the
displays of the tracks for the different angles of the clip. The
timeline generator 5820 then passes the generated timeline to the
UI interaction and generation module 5805 for incorporation into
the UI.
[0433] The angle viewer generator 5823 generates the angle viewer
for display in GUI, based on a multi-camera reference clip. The
angle viewer generator requests the data for a reference clip being
edited in the angle editor or to which an instance clip through
which a user is skimming refers. Based on the reference clip the
angle viewer generator 5823 generates the banks and preview
displays, then requests the appropriate output images for the
preview displays from the playback module 5830.
[0434] The rendering engine 5825 handles the rendering of images
for the media-editing application. As shown, the rendering engine
5820 of some embodiments includes a render graph generator 5821, a
scheduler 5822, and image processing operations 5823. The rendering
engine manages the creation of images for the media-editing
application. When an image is requested by a destination within the
application (e.g., the playback module 5830, an encoder, analysis
engines, etc.), the rendering engine outputs the requested image
according to the project or event data. The rendering engine
retrieves the project data or event data that identifies how to
create the requested image and the render graph generator 5821
generates a render graph that is a series of nodes indicating
either images to retrieve from the source files 5835 or operations
to perform on the retrieved images. The scheduler 5822 schedules
the retrieval of the necessary images through disk read operations
and the decoding of those images. The image processing operations
5823 are the various operations performed on the images to generate
an output image. In some embodiments, these operations include
blend operations, effects (e.g., blur or other pixel value
modification operations, transforms, conform effects, etc.), color
space conversions, etc. The image processing operations 5823 in
some embodiments are actually part of the operating system and are
performed by a GPU or CPU of the device on which the application
5800 operates. The output of the rendering engine (a rendered
image) may be stored in the render files 5850 or sent to a
destination for additional processing or output.
[0435] The playback module 5830 handles the playback of images
(e.g., in a preview display area of the user interface, or one of
the preview displays of the angle viewer). Some embodiments do not
include a playback module and the rendering engine directly outputs
its images to the UI interaction and generation module 5805 for
integration into the GUI, or directly to the display module 5865
for display at a particular portion of the display device.
[0436] While many of the features of media-editing application 5800
have been described as being performed by one module (e.g., the UI
interaction and generation module 5805, the media ingest module
5810, etc.), one of ordinary skill in the art will recognize that
the functions described herein might be split up into multiple
modules. Similarly, functions described as being performed by
multiple different modules might be performed by a single module in
some embodiments (e.g., the playback module 5830, angle viewer
generator 5827, and timeline generator 5820 might all be part of
the UI interaction and generation module 5805, and a single module
might be used to perform the transforms as well as spatial
conforms, even when the effects are stored separately).
VIII. Electronic System
[0437] Many of the above-described features and applications are
implemented as software processes that are specified as a set of
instructions recorded on a computer readable storage medium (also
referred to as computer readable medium). When these instructions
are executed by one or more computational or processing unit(s)
(e.g., one or more processors, cores of processors, or other
processing units), they cause the processing unit(s) to perform the
actions indicated in the instructions. Examples of computer
readable media include, but are not limited to, CD-ROMs, flash
drives, random access memory (RAM) chips, hard drives, erasable
programmable read-only memories (EPROMs), electrically erasable
programmable read-only memories (EEPROMs), etc. The computer
readable media does not include carrier waves and electronic
signals passing wirelessly or over wired connections.
[0438] In this specification, the term "software" is meant to
include firmware residing in read-only memory or applications
stored in magnetic storage which can be read into memory for
processing by a processor. Also, in some embodiments, multiple
software inventions can be implemented as sub-parts of a larger
program while remaining distinct software inventions. In some
embodiments, multiple software inventions can also be implemented
as separate programs. Finally, any combination of separate programs
that together implement a software invention described here is
within the scope of the invention. In some embodiments, the
software programs, when installed to operate on one or more
electronic systems, define one or more specific machine
implementations that execute and perform the operations of the
software programs.
[0439] FIG. 59 conceptually illustrates an electronic system 5900
with which some embodiments of the invention are implemented. The
electronic system 5900 may be a computer (e.g., a desktop computer,
personal computer, tablet computer, etc.), phone, PDA, or any other
sort of electronic or computing device. Such an electronic system
includes various types of computer readable media and interfaces
for various other types of computer readable media. Electronic
system 5900 includes a bus 5905, processing unit(s) 5910, a
graphics processing unit (GPU) 5915, a system memory 5920, a
network 5925, a read-only memory 5930, a permanent storage device
5935, input devices 5940, and output devices 5945.
[0440] The bus 5905 collectively represents all system, peripheral,
and chipset buses that communicatively connect the numerous
internal devices of the electronic system 5900. For instance, the
bus 5905 communicatively connects the processing unit(s) 5910 with
the read-only memory 5930, the GPU 5915, the system memory 5920,
and the permanent storage device 5935.
[0441] From these various memory units, the processing unit(s) 5910
retrieves instructions to execute and data to process in order to
execute the processes of the invention. The processing unit(s) may
be a single processor or a multi-core processor in different
embodiments. Some instructions are passed to and executed by the
GPU 5915. The GPU 5915 can offload various computations or
complement the image processing provided by the processing unit(s)
5910. In some embodiments, such functionality can be provided using
CoreImage's kernel shading language.
[0442] The read-only-memory (ROM) 5930 stores static data and
instructions that are needed by the processing unit(s) 5910 and
other modules of the electronic system. The permanent storage
device 5935, on the other hand, is a read-and-write memory device.
This device is a non-volatile memory unit that stores instructions
and data even when the electronic system 5900 is off. Some
embodiments of the invention use a mass-storage device (such as a
magnetic or optical disk and its corresponding disk drive) as the
permanent storage device 5935.
[0443] Other embodiments use a removable storage device (such as a
floppy disk, flash memory device, etc., and its corresponding
drive) as the permanent storage device. Like the permanent storage
device 5935, the system memory 5920 is a read-and-write memory
device. However, unlike storage device 5935, the system memory 5920
is a volatile read-and-write memory, such a random access memory.
The system memory 5920 stores some of the instructions and data
that the processor needs at runtime. In some embodiments, the
invention's processes are stored in the system memory 5920, the
permanent storage device 5935, and/or the read-only memory 5930.
For example, the various memory units include instructions for
processing multimedia clips in accordance with some embodiments.
From these various memory units, the processing unit(s) 5910
retrieves instructions to execute and data to process in order to
execute the processes of some embodiments.
[0444] The bus 5905 also connects to the input and output devices
5940 and 5945. The input devices 5940 enable the user to
communicate information and select commands to the electronic
system. The input devices 5940 include alphanumeric keyboards and
pointing devices (also called "cursor control devices"), cameras
(e.g., webcams), microphones or similar devices for receiving voice
commands, etc. The output devices 5945 display images generated by
the electronic system or otherwise output data. The output devices
5945 include printers and display devices, such as cathode ray
tubes (CRT) or liquid crystal displays (LCD), as well as speakers
or similar audio output devices. Some embodiments include devices
such as a touchscreen that function as both input and output
devices.
[0445] Finally, as shown in FIG. 59, bus 5905 also couples
electronic system 5900 to a network 5925 through a network adapter
(not shown). In this manner, the computer can be a part of a
network of computers (such as a local area network ("LAN"), a wide
area network ("WAN"), or an Intranet, or a network of networks,
such as the Internet. Any or all components of electronic system
5900 may be used in conjunction with the invention.
[0446] Some embodiments include electronic components, such as
microprocessors, storage and memory that store computer program
instructions in a machine-readable or computer-readable medium
(alternatively referred to as computer-readable storage media,
machine-readable media, or machine-readable storage media). Some
examples of such computer-readable media include RAM, ROM,
read-only compact discs (CD-ROM), recordable compact discs (CD-R),
rewritable compact discs (CD-RW), read-only digital versatile discs
(e.g., DVD-ROM, dual-layer DVD-ROM), a variety of
recordable/rewritable DVDs (e.g., DVD-RAM, DVD-RW, DVD+RW, etc.),
flash memory (e.g., SD cards, mini-SD cards, micro-SD cards, etc.),
magnetic and/or solid state hard drives, read-only and recordable
Blu-Ray.RTM. discs, ultra density optical discs, any other optical
or magnetic media, and floppy disks. The computer-readable media
may store a computer program that is executable by at least one
processing unit and includes sets of instructions for performing
various operations. Examples of computer programs or computer code
include machine code, such as is produced by a compiler, and files
including higher-level code that are executed by a computer, an
electronic component, or a microprocessor using an interpreter.
[0447] While the above discussion primarily refers to
microprocessor or multi-core processors that execute software, some
embodiments are performed by one or more integrated circuits, such
as application specific integrated circuits (ASICs) or field
programmable gate arrays (FPGAs). In some embodiments, such
integrated circuits execute instructions that are stored on the
circuit itself. In addition, some embodiments execute software
stored in programmable logic devices (PLDs), ROM, or RAM
devices.
[0448] As used in this specification and any claims of this
application, the terms "computer", "server", "processor", and
"memory" all refer to electronic or other technological devices.
These terms exclude people or groups of people. For the purposes of
the specification, the terms display or displaying means displaying
on an electronic device. As used in this specification and any
claims of this application, the terms "computer readable medium,"
"computer readable media," and "machine readable medium" are
entirely restricted to tangible, physical objects that store
information in a form that is readable by a computer. These terms
exclude any wireless signals, wired download signals, and any other
ephemeral signals.
[0449] While the invention has been described with reference to
numerous specific details, one of ordinary skill in the art will
recognize that the invention can be embodied in other specific
forms without departing from the spirit of the invention. In
addition, a number of the figures (including FIGS. 10, 12, 14, 16,
18, 26, 45, and 55) conceptually illustrate processes. The specific
operations of these processes may not be performed in the exact
order shown and described. The specific operations may not be
performed in one continuous series of operations, and different
specific operations may be performed in different embodiments.
Furthermore, the process could be implemented using several
sub-processes, or as part of a larger macro process. Thus, one of
ordinary skill in the art would understand that the invention is
not to be limited by the foregoing illustrative details, but rather
is to be defined by the appended claims.
* * * * *