MythTV  master
thumbfinder.h
Go to the documentation of this file.
1 #ifndef THUMBFINDER_H_
2 #define THUMBFINDER_H_
3 
4 extern "C" {
5 #include <libavcodec/avcodec.h>
6 #include <libavformat/avformat.h>
7 }
8 
9 // qt
10 #include <QString>
11 #include <QStringList>
12 #include <QScopedPointer>
13 
14 // mythtv
16 #include <libmythtv/mythavutil.h>
18 
19 // mytharchive
20 #include "archiveutil.h"
21 #include "remoteavformatcontext.h"
22 
23 struct SeekAmount
24 {
25  QString name;
26  int amount;
27 };
28 
29 class MythUIButton;
30 class MythUItext;
31 class MythUIImage;
32 class MythUIButtonList;
34 class MythImage;
35 
37 {
38 
39  Q_OBJECT
40 
41  public:
42 
43  ThumbFinder(MythScreenStack *parent, ArchiveItem *archiveItem,
44  const QString &menuTheme);
45  ~ThumbFinder() override;
46 
47  bool Create(void) override; // MythScreenType
48  bool keyPressEvent(QKeyEvent *event) override; // MythScreenType
49 
50 
51  private slots:
53  void ShowMenu(void) override; // MythScreenType
54  void cancelPressed(void);
55  void savePressed(void);
56  void updateThumb(void);
57 
58  private:
59  void Init(void) override; // MythScreenType
60  bool getThumbImages(void);
61  static int getChapterCount(const QString &menuTheme);
62  void changeSeekAmount(bool up);
63  void updateCurrentPos(void);
64  bool seekToFrame(int frame, bool checkPos = true);
65  static QString createThumbDir(void);
66  QString frameToTime(int64_t frame, bool addFrame = false) const;
67 
68  // avcodec stuff
69  bool initAVCodec(const QString &inFile);
70  void closeAVCodec();
71  bool seekForward();
72  bool seekBackward();
73  bool getFrameImage(bool needKeyFrame = true, int64_t requiredPTS = -1);
74  int checkFramePosition(int frameNumber);
75  void loadCutList(void);
76  void updatePositionBar(int64_t frame);
77  int calcFinalDuration(void);
78 
80  AVCodecContext *m_codecCtx {nullptr};
82  AVCodec *m_codec {nullptr};
85 
86  float m_fps {0.0F};
87  unsigned char *m_outputbuf {nullptr};
88  QString m_frameFile;
89  int m_frameWidth { 0};
90  int m_frameHeight { 0};
91  int m_videostream { 0};
92  size_t m_currentSeek { 0};
93  int64_t m_startTime {-1}; // in time_base units
94  int64_t m_startPTS {-1}; // in time_base units
95  int64_t m_currentPTS {-1}; // in time_base units
96  int64_t m_firstIFramePTS {-1};
97  int64_t m_frameTime { 0}; // in time_base units
98  bool m_updateFrame {false};
100  int m_finalDuration { 0};
101  int m_offset { 0};
102 
105  QList<ThumbImage *> m_thumbList;
106  QString m_thumbDir;
107 
108  // GUI stuff
117 };
118 
119 #endif
ThumbFinder::m_frameHeight
int m_frameHeight
Definition: thumbfinder.h:90
remoteavformatcontext.h
ThumbFinder::getThumbImages
bool getThumbImages(void)
Definition: thumbfinder.cpp:413
ThumbFinder::cancelPressed
void cancelPressed(void)
Definition: thumbfinder.cpp:300
MythUIImage
Image widget, displays a single image or multiple images in sequence.
Definition: mythuiimage.h:97
ThumbFinder::m_startPTS
int64_t m_startPTS
Definition: thumbfinder.h:94
ThumbFinder::updateCurrentPos
void updateCurrentPos(void)
Definition: thumbfinder.cpp:305
SeekAmount
Definition: thumbfinder.h:23
ThumbFinder::seekBackward
bool seekBackward()
Definition: thumbfinder.cpp:713
ThumbFinder::m_videostream
int m_videostream
Definition: thumbfinder.h:91
MythAVFrame
MythAVFrame little utility class that act as a safe way to allocate an AVFrame which can then be allo...
Definition: mythaverror.h:52
ThumbFinder::m_firstIFramePTS
int64_t m_firstIFramePTS
Definition: thumbfinder.h:96
MythScreenStack
Definition: mythscreenstack.h:16
frm_dir_map_t
QMap< uint64_t, MarkTypes > frm_dir_map_t
Frame # -> Mark map.
Definition: programtypes.h:119
SeekAmount::name
QString name
Definition: thumbfinder.h:25
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
ThumbFinder::m_archiveItem
ArchiveItem * m_archiveItem
Definition: thumbfinder.h:103
ThumbFinder::m_startTime
int64_t m_startTime
Definition: thumbfinder.h:93
ThumbFinder::m_frameFile
QString m_frameFile
Definition: thumbfinder.h:88
ThumbFinder::calcFinalDuration
int calcFinalDuration(void)
Definition: thumbfinder.cpp:922
ThumbFinder
Definition: thumbfinder.h:36
ThumbFinder::m_offset
int m_offset
Definition: thumbfinder.h:101
programtypes.h
ThumbFinder::m_currentSeek
size_t m_currentSeek
Definition: thumbfinder.h:92
ThumbFinder::changeSeekAmount
void changeSeekAmount(bool up)
Definition: thumbfinder.cpp:316
ThumbFinder::m_frameButton
MythUIButton * m_frameButton
Definition: thumbfinder.h:109
ThumbFinder::m_frameWidth
int m_frameWidth
Definition: thumbfinder.h:89
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
ThumbFinder::Create
bool Create(void) override
Definition: thumbfinder.cpp:116
ThumbFinder::m_imageGrid
MythUIButtonList * m_imageGrid
Definition: thumbfinder.h:114
RemoteAVFormatContext
Definition: mytharchive/mytharchive/remoteavformatcontext.h:16
ThumbFinder::Init
void Init(void) override
Used after calling Load() to assign data to widgets and other UI initilisation which is prohibited in...
Definition: thumbfinder.cpp:102
ThumbFinder::m_updateFrame
bool m_updateFrame
Definition: thumbfinder.h:98
archiveutil.h
ThumbFinder::m_deleteMap
frm_dir_map_t m_deleteMap
Definition: thumbfinder.h:99
ThumbFinder::m_frame
MythAVFrame m_frame
Definition: thumbfinder.h:83
ThumbFinder::getFrameImage
bool getFrameImage(bool needKeyFrame=true, int64_t requiredPTS=-1)
Definition: thumbfinder.cpp:747
ThumbFinder::m_saveButton
MythUIButton * m_saveButton
Definition: thumbfinder.h:110
ThumbFinder::m_frameTime
int64_t m_frameTime
Definition: thumbfinder.h:97
MythUIButton
A single button widget.
Definition: mythuibutton.h:21
ThumbFinder::initAVCodec
bool initAVCodec(const QString &inFile)
Definition: thumbfinder.cpp:526
ThumbFinder::m_positionImage
MythUIImage * m_positionImage
Definition: thumbfinder.h:113
ThumbFinder::ShowMenu
void ShowMenu(void) override
Definition: thumbfinder.cpp:853
MythCodecMap
Definition: mythavutil.h:26
ThumbFinder::m_inputFC
RemoteAVFormatContext m_inputFC
Definition: thumbfinder.h:79
ThumbFinder::ThumbFinder
ThumbFinder(MythScreenStack *parent, ArchiveItem *archiveItem, const QString &menuTheme)
Definition: thumbfinder.cpp:85
ThumbFinder::checkFramePosition
int checkFramePosition(int frameNumber)
Definition: thumbfinder.cpp:621
ThumbFinder::m_cancelButton
MythUIButton * m_cancelButton
Definition: thumbfinder.h:111
ThumbFinder::~ThumbFinder
~ThumbFinder() override
Definition: thumbfinder.cpp:107
ThumbFinder::createThumbDir
static QString createThumbDir(void)
Definition: thumbfinder.cpp:344
ThumbFinder::loadCutList
void loadCutList(void)
Definition: thumbfinder.cpp:253
ThumbFinder::frameToTime
QString frameToTime(int64_t frame, bool addFrame=false) const
Definition: thumbfinder.cpp:402
ThumbFinder::m_thumbList
QList< ThumbImage * > m_thumbList
Definition: thumbfinder.h:105
ThumbFinder::m_thumbDir
QString m_thumbDir
Definition: thumbfinder.h:106
ThumbFinder::m_thumbCount
int m_thumbCount
Definition: thumbfinder.h:104
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
ThumbFinder::gridItemChanged
void gridItemChanged(MythUIButtonListItem *item)
Definition: thumbfinder.cpp:334
ThumbFinder::seekToFrame
bool seekToFrame(int frame, bool checkPos=true)
Definition: thumbfinder.cpp:650
MythImage
Definition: mythimage.h:36
mythavutil.h
ThumbFinder::m_frameImage
MythUIImage * m_frameImage
Definition: thumbfinder.h:112
ThumbFinder::updateThumb
void updateThumb(void)
Definition: thumbfinder.cpp:373
MythAVCopy
Definition: mythavutil.h:47
ThumbFinder::savePressed
void savePressed(void)
Definition: thumbfinder.cpp:283
ThumbFinder::m_finalDuration
int m_finalDuration
Definition: thumbfinder.h:100
ThumbFinder::m_codecMap
MythCodecMap m_codecMap
Definition: thumbfinder.h:81
ThumbFinder::m_codec
AVCodec * m_codec
Definition: thumbfinder.h:82
ArchiveItem
Definition: archiveutil.h:50
ThumbFinder::m_fps
float m_fps
Definition: thumbfinder.h:86
ThumbFinder::m_copy
MythAVCopy m_copy
Definition: thumbfinder.h:84
ThumbFinder::closeAVCodec
void closeAVCodec()
Definition: thumbfinder.cpp:841
ThumbFinder::m_currentPosText
MythUIText * m_currentPosText
Definition: thumbfinder.h:116
MythUIButtonList
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
Definition: mythuibuttonlist.h:191
ThumbFinder::updatePositionBar
void updatePositionBar(int64_t frame)
Definition: thumbfinder.cpp:867
ThumbFinder::m_outputbuf
unsigned char * m_outputbuf
Definition: thumbfinder.h:87
SeekAmount::amount
int amount
Definition: thumbfinder.h:26
ThumbFinder::m_seekAmountText
MythUIText * m_seekAmountText
Definition: thumbfinder.h:115
ThumbFinder::keyPressEvent
bool keyPressEvent(QKeyEvent *event) override
Key event handler.
Definition: thumbfinder.cpp:156
ThumbFinder::m_currentPTS
int64_t m_currentPTS
Definition: thumbfinder.h:95
mythscreentype.h
ThumbFinder::getChapterCount
static int getChapterCount(const QString &menuTheme)
Definition: thumbfinder.cpp:228
ThumbFinder::m_codecCtx
AVCodecContext * m_codecCtx
Definition: thumbfinder.h:80
ThumbFinder::seekForward
bool seekForward()
Definition: thumbfinder.cpp:676