97 lines
3.4 KiB
C++
97 lines
3.4 KiB
C++
/*
|
|
* Copyright (c) 2013, The Linux Foundation. All rights reserved.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are
|
|
* met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above
|
|
* copyright notice, this list of conditions and the following
|
|
* disclaimer in the documentation and/or other materials provided
|
|
* with the distribution.
|
|
* * Neither the name of The Linux Foundation nor the names of its
|
|
* contributors may be used to endorse or promote products derived
|
|
* from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
|
|
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
|
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
|
|
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
|
|
* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
|
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
|
|
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
|
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
#ifndef DASHPLAYER_STATS_H_
|
|
|
|
#define DASHPLAYER_STATS_H_
|
|
|
|
#include <utils/RefBase.h>
|
|
#include <utils/threads.h>
|
|
|
|
namespace android {
|
|
|
|
class DashPlayerStats : public RefBase {
|
|
public:
|
|
DashPlayerStats();
|
|
~DashPlayerStats();
|
|
|
|
void setMime(const char* mime);
|
|
void setVeryFirstFrame(bool vff);
|
|
void notifySeek();
|
|
void incrementTotalFrames();
|
|
void incrementDroppedFrames();
|
|
void logStatistics();
|
|
void logPause(int64_t positionUs);
|
|
void logSeek(int64_t seekTimeUs);
|
|
void recordLate(int64_t ts, int64_t clock, int64_t delta, int64_t anchorTime);
|
|
void recordOnTime(int64_t ts, int64_t clock, int64_t delta);
|
|
void logSyncLoss();
|
|
void logFps();
|
|
void logFpsSummary();
|
|
static int64_t getTimeOfDayUs();
|
|
void incrementTotalRenderingFrames();
|
|
void notifyBufferingEvent();
|
|
void setFileDescAndOutputStream(int fd);
|
|
|
|
private:
|
|
void logFirstFrame();
|
|
void logCatchUp(int64_t ts, int64_t clock, int64_t delta);
|
|
void logLate(int64_t ts, int64_t clock, int64_t delta);
|
|
void logOnTime(int64_t ts, int64_t clock, int64_t delta);
|
|
|
|
mutable Mutex mStatsLock;
|
|
bool mStatistics;
|
|
char* mMIME;
|
|
int64_t mNumVideoFramesDecoded;
|
|
int64_t mNumVideoFramesDropped;
|
|
int64_t mConsecutiveFramesDropped;
|
|
uint32_t mCatchupTimeStart;
|
|
uint32_t mNumTimesSyncLoss;
|
|
uint32_t mMaxEarlyDelta;
|
|
uint32_t mMaxLateDelta;
|
|
uint32_t mMaxTimeSyncLoss;
|
|
uint64_t mTotalFrames;
|
|
int64_t mFirstFrameLatencyStartUs;
|
|
int64_t mLastFrame;
|
|
int64_t mLastFrameUs;
|
|
double mFPSSumUs;
|
|
int64_t mStatisticsFrames;
|
|
bool mVeryFirstFrame;
|
|
bool mSeekPerformed;
|
|
int64_t mTotalTime;
|
|
int64_t mFirstFrameTime;
|
|
uint64_t mTotalRenderingFrames;
|
|
bool mBufferingEvent;
|
|
int mFd;
|
|
FILE *mFileOut;
|
|
};
|
|
|
|
} // namespace android
|
|
|
|
#endif // DASHPLAYER_STATS_H_
|