00001 #ifndef BREAKMAP_H
00002 #define BREAKMAP_H
00003
00004 #include <QMutex>
00005 #include <QMap>
00006 #include "tv.h"
00007
00008 class NuppelVideoPlayer;
00009
00010 class CommBreakMap
00011 {
00012 public:
00013 CommBreakMap(void);
00014
00015 bool HasMap(void) const { return hascommbreaktable; }
00016
00017 CommSkipMode GetAutoCommercialSkip(void) const;
00018 void SetAutoCommercialSkip(CommSkipMode autoskip, uint64_t framesPlayed);
00019
00020 int GetSkipCommercials(void) const { return skipcommercials; }
00021 void SkipCommercials(int direction);
00022
00023 void ResetLastSkip(void);
00024 void SetTracker(uint64_t framesPlayed);
00025 void GetMap(frm_dir_map_t &map) const;
00026 void SetMap(const frm_dir_map_t &newMap, uint64_t framesPlayed);
00027 void LoadMap(PlayerContext *player_ctx, uint64_t framesPlayed);
00028
00029 bool IsInCommBreak(uint64_t frameNumber) const;
00030 bool AutoCommercialSkip(uint64_t &jumpToFrame, uint64_t framesPlayed,
00031 double video_frame_rate, uint64_t totalFrames,
00032 QString &comm_msg);
00033 bool DoSkipCommercials(uint64_t &jumpToFrame, uint64_t framesPlayed,
00034 double video_frame_rate, uint64_t totalFrames,
00035 QString &comm_msg);
00036
00037 private:
00038 void MergeShortCommercials(double video_frame_rate);
00039
00040 mutable QMutex commBreakMapLock;
00041 int skipcommercials;
00042 CommSkipMode autocommercialskip;
00043 int commrewindamount;
00044 int commnotifyamount;
00045 int lastCommSkipDirection;
00046 time_t lastCommSkipTime;
00047 uint64_t lastCommSkipStart;
00048 time_t lastSkipTime;
00049 bool hascommbreaktable;
00050 QDateTime lastIgnoredManualSkip;
00051 int maxskip;
00052 int maxShortMerge;
00053 frm_dir_map_t commBreakMap;
00054 frm_dir_map_t::Iterator commBreakIter;
00055 };
00056
00057 #endif // BREAKMAP_H