1948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten/*
2948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * Copyright (C) 2013 The Android Open Source Project
3948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten *
4948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
5948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * you may not use this file except in compliance with the License.
6948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * You may obtain a copy of the License at
7948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten *
8948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
9948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten *
10948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * Unless required by applicable law or agreed to in writing, software
11948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
12948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * See the License for the specific language governing permissions and
14948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * limitations under the License.
15948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten */
16948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten
17948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kastenpackage android.media;
18948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten
19948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten/**
20948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * Structure that groups a position in frame units relative to an assumed audio stream,
21948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * together with the estimated time when that frame was presented or is committed to be
22948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * presented.
23948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * In the case of audio output, "present" means that audio produced on device
24948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * is detectable by an external observer off device.
25948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * The time is based on the implementation's best effort, using whatever knowledge
26948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * is available to the system, but cannot account for any delay unknown to the implementation.
27948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten *
28948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten * @see AudioTrack#getTimestamp
29948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten */
30948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kastenpublic final class AudioTimestamp
31948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten{
32948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten    /**
33948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     * Position in frames relative to start of an assumed audio stream.
34948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     * The low-order 32 bits of position is in wrapping frame units similar to
35948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     * {@link AudioTrack#getPlaybackHeadPosition}.
36948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     */
37948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten    public long framePosition;
38948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten
39948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten    /**
40948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     * The estimated time when frame was presented or is committed to be presented,
41948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     * in the same units and timebase as {@link java.lang.System#nanoTime}.
42948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten     */
43948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten    public long nanoTime;
44948c2e6ff46d65942277f2e0e9ce0c038972b9d8Glenn Kasten}
45