Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Unified Diff: mojo/services/media/common/interfaces/rate_control.mojom

Issue 1986303002: Motown: Use new TimelineTransform and related definitions (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fixes per feedback. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: mojo/services/media/common/interfaces/rate_control.mojom
diff --git a/mojo/services/media/common/interfaces/rate_control.mojom b/mojo/services/media/common/interfaces/rate_control.mojom
deleted file mode 100644
index bd7dd92acd8d1e8ccd2f91a10e55724b9fe9e000..0000000000000000000000000000000000000000
--- a/mojo/services/media/common/interfaces/rate_control.mojom
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-[DartPackage="mojo_services"]
-module mojo.media;
-
-// TimelineQuad
-// TODO(dalesat): Rename reference -> presentation.
-// TODO(dalesat): Rename target -> reference.
-//
-// A structure which holds the four numbers needed to define a linear
-// relationship between the points in two different timelines. The relationship
-// is expressed using 4 integers in order to facilitate compositions of multiple
-// transformations (A->B can be composed with B->C to produce the transformation
-// from A->C), and to minimize rounding and scaling errors when mapping points
-// between timelines which do not have an integer scaling relationship between
-// each other.
-//
-// These values are used to define the following functions which map from
-// points from the reference timeline to the target timeline, and back again.
-//
-// Let r be a point in the reference timeline.
-// Let t be a point in the target timeline timeline.
-// Let ref and tgt be abbreviations for reference and target in equations below.
-//
-// Given that r and t represent the same instant in time (in a single frame of
-// reference)
-//
-// t = f(r) = (((r - ref_offset) * tgt_delta) / ref_delta) + tgt_offset
-// r = F(t) = (((t - tgt_offset) * ref_delta) / tgt_delta) + ref_offset
-//
-// See also...
-// mojo/services/media/common/linear_transform.h
-//
-// no-format
-struct TimelineQuad {
- int64 reference_offset = 0;
- int64 target_offset = 0;
- uint32 reference_delta = 0;
- uint32 target_delta = 1;
-};
-// end-no-format
-
-// TimelineTransform
-// TODO(dalesat): Rename reference -> presentation.
-// TODO(dalesat): Rename target -> reference.
-//
-// A structure which holds both a timeline quad, and a pair of identifiers which
-// define the specific timelines which are the reference and target timelines.
-struct TimelineTransform {
- // TODO: These constants should probably defined by a central time management
- // service, not here.
- const uint32 kLocalTimeID = 0xFFFFFFFF;
- const uint32 kContextual = 0xFFFFFFFE;
-
- TimelineQuad quad;
- uint32 reference_timeline_id = kContextual;
- uint32 target_timeline_id = kLocalTimeID;
-};
-
-// RateControl
-//
-// An interface typically exposed by media renderers which allow producers of
-// media to specify how the presentation time stamps of the media queued to the
-// renderer relate to real time. Users may initialize the transformation with a
-// specific Quad, change the rate immediately in a first order contiguous
-// fashion, or schedule ranges in the rate at points in time on either the
-// reference or target timelines.
-interface RateControl {
- // Get the current quad which describes the transformation between the
- // reference and target timelines.
- GetCurrentTransform() => (TimelineTransform trans);
-
- // Immediately, explicitly set the quad which describes the mapping from
- // reference to target timeline. It is understood that this can cause
- // discontinuities and should only be used in situations which are already
- // fundamentally discontinuous (startup/seeking, for example)
- SetCurrentQuad(TimelineQuad quad);
-
- // Configure the target timeline ID. Note, the reference timeline ID will
- // always be contextual.
- SetTargetTimelineID(uint32 id);
-
- // Immediately change the rate of the existing transformation in a fashion
- // which is first order continuous with the current transformation.
- SetRate(uint32 reference_delta, uint32 target_delta);
-
- // Schedule a first order continuous rate change at the specified reference
- // time.
- SetRateAtReferenceTime(uint32 reference_delta,
- uint32 target_delta,
- int64 reference_time);
-
- // Schedule a first order continuous rate change at the specified target time.
- SetRateAtTargetTime(uint32 reference_delta,
- uint32 target_delta,
- int64 target_time);
-
- // Cancel any pending rate changes
- CancelPendingChanges();
-};
« no previous file with comments | « mojo/services/media/common/interfaces/BUILD.gn ('k') | mojo/services/media/common/interfaces/timelines.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698