/usr/include/gnash/asobj/PlayHead.h is in gnash-dev 0.8.11~git20160109-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | // PlayHead.h: media playback controller
//
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
// Free Software Foundation, Inc
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
#ifndef GNASH_PLAYHEAD_H
#define GNASH_PLAYHEAD_H
#include <cstdint> // For C99 int types
// Forward declarations
namespace gnash {
class VirtualClock;
}
namespace gnash {
/// The playback controller
class PlayHead {
public:
/// Flags for playback state
enum PlaybackStatus {
PLAY_PLAYING = 1,
PLAY_PAUSED = 2
};
/// Initialize playhead given a VirtualCock to use
/// as clock source.
//
/// The PlayHead will have initial state set to PAUSED
/// and initial position set to 0.
///
/// @param clockSource
/// The VirtualClock to use as time source.
/// Ownership left to caller (not necessarely a good thing).
///
PlayHead(VirtualClock* clockSource);
/// Set a video consumer as available
//
/// This should be completely fine to do during
/// PlayHead lifetime.
///
void setVideoConsumerAvailable()
{
_availableConsumers |= CONSUMER_VIDEO;
}
/// Set an audio consumer as available
//
/// This should be completely fine to do during
/// PlayHead lifetime.
///
void setAudioConsumerAvailable()
{
_availableConsumers |= CONSUMER_AUDIO;
}
/// Get current playhead position (milliseconds)
std::uint64_t getPosition() const { return _position; }
/// Get current playback state
PlaybackStatus getState() const { return _state; }
/// Set playback state, returning old state
PlaybackStatus setState(PlaybackStatus newState);
/// Toggle playback state, returning old state
PlaybackStatus toggleState();
/// Return true if video of current position have been consumed
bool isVideoConsumed() const
{
return (_positionConsumers & CONSUMER_VIDEO);
}
/// Mark current position as being consumed by video consumer
void setVideoConsumed()
{
_positionConsumers |= CONSUMER_VIDEO;
}
/// Return true if audio of current position have been consumed
bool isAudioConsumed() const
{
return (_positionConsumers & CONSUMER_AUDIO);
}
/// Mark current position as being consumed by audio consumer
void setAudioConsumed()
{
_positionConsumers |= CONSUMER_AUDIO;
}
/// Change current position to the given time.
//
/// Consume flag will be reset.
///
/// @param position
/// Position timestamp (milliseconds)
///
/// POSTCONDITIONS:
/// - isVideoConsumed() == false
/// - isAudioConsumed() == false
/// - getPosition() == position
///
void seekTo(std::uint64_t position);
/// Advance position if all available consumers consumed the current one
//
/// Clock source will be used to determine the amount
/// of milliseconds to advance position to.
///
/// Consumer flags will be reset.
///
/// POSTCONDITIONS:
/// - isVideoConsumed() == false
/// - isAudioConsumed() == false
///
void advanceIfConsumed();
private:
/// Flags for consumers state
enum ConsumerFlag {
CONSUMER_VIDEO = 1,
CONSUMER_AUDIO = 2
};
/// Current playhead position
std::uint64_t _position;
/// Current playback state
PlaybackStatus _state;
/// Binary OR of consumers representing
/// which consumers are active
int _availableConsumers;
/// Binary OR of consumers representing
/// which consumers consumed current position
int _positionConsumers;
/// The clock source, externally owned
VirtualClock* _clockSource;
/// Offset to subtract from current clock source
/// to get current position
//
/// The offset will be
std::uint64_t _clockOffset;
};
} // end of gnash namespace
// __PLAYHEAD_H__
#endif
|