Ticket #2198 (closed feature: obsolete)
media-hud-clip - Set up clipping from the HUD
Reported by: | deyan | Owned by: | stefan |
---|---|---|---|
Priority: | critical | Milestone: | X3 |
Component: | uncategorized | Version: | 2.0 |
Keywords: | Cc: | ||
Category: | unknown | Effort: | |
Importance: | 85 | Ticket_group: | |
Estimated Number of Hours: | 0 | Add Hours to Ticket: | 0 |
Billable?: | yes | Total Hours: | 0 |
Analysis_owners: | deyan | Design_owners: | stefan |
Imp._owners: | stefan | Test_owners: | |
Analysis_reviewers: | stefan | Changelog: | |
Design_reviewers: | pap | Imp._reviewers: | pap |
Test_reviewers: | Analysis_score: | 0 | |
Design_score: | 3 | Imp._score: | 3 |
Test_score: | 0 |
Description (last modified by deyan) (diff)
Media HUD should allow clipping.
- Create media halo and hud like these for browser frame
- Create start time, end time fields, and looped checkbox
- The frame should look like its content is the clip, not the whole movie.
- The fields should be bound controls
Change History
comment:1 Changed 15 years ago by deyan
- Priority changed from major to critical
- Summary changed from media-hud-clip – Set up clipping from the HUD to media-hud-clip – Set up clipping from the HUD
comment:2 Changed 15 years ago by todor
- Category set to unknown
- Analysis_score set to 0
- Test_score set to 0
- Summary changed from media-hud-clip – Set up clipping from the HUD to media-hud-clip - Set up clipping from the HUD
- Design_score set to 0
- Imp._score set to 0
comment:3 Changed 15 years ago by deyan
- Owner set to deyan
- Status changed from new to s1a_analysis_started
Media HUD should allow clipping.
- Create media halo and hud like these for browser frame
- Create start time, end time fields, and looped checkbox
- The frame should look like its content is the clip, not the whole movie.
comment:4 Changed 15 years ago by deyan
- Status changed from s1a_analysis_started to s1b_analysis_finished
- Description modified (diff)
- Analysis_owners set to deyan
comment:5 Changed 15 years ago by stefan
- Status changed from s1b_analysis_finished to s1c_analysis_ok
comment:6 Changed 15 years ago by stefan
- Owner changed from deyan to stefan
- Status changed from s1c_analysis_ok to s2a_design_started
comment:7 Changed 15 years ago by stefan
- Status changed from s2a_design_started to s2b_design_finished
Design
Closely related tickets:
- #2197 - media-hud-looped - Set up looped from the HUD (it is implemented in the same branch as this ticket).
- #2180 - media-hud-controls - Toggle show of media controls. (it is not implemented yet).
Main idea of this ticket is to provide methods to the user for changing the start and end points of media files (so called clipping). Classes and methods added or changed in order to provide this functionality are as follows:
- MediaClip - class that contains needed information (basically markers for the start and end position of the clip). Here is important to note that, whether some media is clipped or not, can be determent by the values of the start and end position in the media clip for the corresponding file - if the start position is 0 and the end position is less that 0, usually -1, means that media is not clipped, or the method isClipped() can be used instead.
- KEY_CLIP - a key that is in the MediaFrameR4. It holds the MediaClip for the current media frame and has default value of MediaClip.DEFAULT_CLIP, which has start = 0 and end = -1 - it doesn't clip media.
- MediaClipPersister - a class which provides persistence for MediaClip. It has no deep logic, only basic persistence of the two fields in the class persisted - the start and end seconds.
- MediaClipPersisterTest - a standard test for persistence of the MediaClipPersister.
- MediaFrameView - a method calculatePosition(TimePos time) is added to this class in order to provide correct playing position, in respect of clipping and looping. For detail information regarding this method, see #2197 ticket.
- MediaPropertiesHud - a class that represent the hud in which controls for changing the clipping are included. (it is also used in #2197 ticket, so we'll only describe the code used for this ticket). Code of significance in this class:
- The code that follows represent bound text field for the start position of the clipping. As you can see, a valid field data is a double number (in seconds) within [0, length] interval, where {{{length}} is the length of the media in seconds.
/** * Text box for controlling the start position of the media clipping. It * accepts only float values. * * @author stefan * */ @VisualElementDef(parent = MediaPropertiesHud.class, sortKey = "eee-media-clip-start") public static class ClipStartPosition extends BoundTextField { ... @Override protected BoundValidation validate(String fieldString) { if (fieldString.equals("")) { return BoundValidation.SUCCESS; } MediaPropertiesHud hud = findParentElement(MediaPropertiesHud.class); MediaFrameH helper = hud.mediaFrameH().get(); double duration = hud.mediaFrameView().get().handler().get() .getInfo().getDuration(); return BoundValidation.validateNumber(fieldString, Double.class, helper.getMediaClip().getStartSecond(), duration, "Media start position should be between %g and %g"); } ... } ...
- The code that follows represent bound text field for the start position of the clipping. As you can see, a valid field data is a double number (in seconds) within [0, length] interval, where {{{length}} is the length of the media in seconds.
- The code that follows represent bound text field for the end position of the clipping. As you can see, a valid field data is a double number (in seconds) within [start, length] interval, where start is the start position kept in the corresponding MediaClip (default value is 0) and {{{length}} is the length of the media in seconds.
/** * Text box for controlling the end position of the media clipping. It * accepts only float values. * * @author stefan * */ @VisualElementDef(parent = MediaPropertiesHud.class, sortKey = "fff-media-clip-end") public static class ClipEndPosition extends BoundTextField { ... @Override protected BoundValidation validate(String fieldString) { if (fieldString.equals("")) { return BoundValidation.SUCCESS; } MediaPropertiesHud hud = findParentElement(MediaPropertiesHud.class); MediaFrameH helper = hud.mediaFrameH().get(); double duration = hud.mediaFrameView().get().handler().get() .getInfo().getDuration(); return BoundValidation.validateNumber(fieldString, Double.class, helper.getMediaClip().getStartSecond(), duration, "Media start position should be between %g and %g"); } ...
- MediaPropertiesHaloButton - A halo button for viewing the Hud.
- MediaLogic - In the ON_PLAY_PAUSE_MEDIA operation, the calculation of the duration is changed (because the clipping of media changes the duration of the clip. The related code:
long duration = MediaUtil.getMillis(view.handler().get().getInfo().getDuration()); if (model.isClipped()) { if (model.getMediaClip().getEndSecond() < 0) { duration -= MediaUtil.getMillis(model.getMediaClip().getStartSecond()); } else { duration = MediaUtil.getMillis(model.getMediaClip().getDuration()); } }
- SeekMediaManipulationView - Here also is added similar code that take in consideration the clipping of the media. Due to similarity of the code, I will not present it.
- MediaFrameView - Same as above.
Design Related Code
comment:8 Changed 15 years ago by stefan
- Design_owners set to stefan
- Imp._owners set to stefan
- Analysis_reviewers set to stefan
comment:9 Changed 15 years ago by stefan
[8333] - Fix for validation of the start position of the media clip.
comment:10 Changed 15 years ago by pap
- Status changed from s2b_design_finished to s3c_implementation_ok
- Design_score changed from 0 to 3
- Design_reviewers set to pap
- Imp._score changed from 0 to 3
- Imp._reviewers set to pap
comment:11 Changed 13 years ago by meddle
- Status changed from s3c_implementation_ok to closed
- Resolution set to obsolete
Closing all the tickets before M Y1
Note: See
TracTickets for help on using
tickets.
Batch update from file 0911261.csv