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