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