Vagyojaka 5.5.7
Loading...
Searching...
No Matches
audiowaveform.h
Go to the documentation of this file.
1#ifndef AUDIOWAVEFORM_H
2#define AUDIOWAVEFORM_H
3
4#include <QWidget>
5
6#include <QMediaPlayer>
7#include <QAbstractButton>
8#include <QAbstractSlider>
9#include <QComboBox>
10#include <QLabel>
11#include<QDebug>
12#include<QMediaMetaData>
13
14//---------------------------------------
15#include"mediaplayer/qcustomplot.h"
16#include<QVector>
17#include"mediaplayer/fftw3.h"
18#include<QAudioFormat>
19
20extern "C" {
21#include <libavformat/avformat.h>
22#include <libavcodec/avcodec.h>
23#include <libavutil/opt.h>
24#include <libavutil/samplefmt.h>
25#include <libavutil/channel_layout.h>
26#include <libswresample/swresample.h>
27}
28
29namespace Ui {
30class AudioWaveForm;
31}
32
33class AudioWaveForm : public QWidget
34{
35 Q_OBJECT
36
37public:
38 explicit AudioWaveForm(QWidget *parent = nullptr);
41 void updateTimeStamps();
42 void showWaveForm();
43
44public slots:
45 void getDuration(qint64 total_time);
46 void getBlockText(QString blockText);
47 void getTimeArray(QVector<QTime> timeArray);
48
49 void setPlayerPosition(qint64 position);
50 void setMediaUrl(QUrl url);
51
52private slots:
53 void processAudioIn();
54 void onMouseRelease(QMouseEvent *event);
55 void onMouseMove(QMouseEvent *event);
56 void onMousePress(QMouseEvent *event);
57
58 void on_addBtn_clicked();
59
61
62signals:
63 void updateTime(int block_num, QTime endTime);
64 void positionChanged(qint64 position);
65 void samplingStatus(bool status);
66 void updateTimeStampsBlock(QVector<int> blocks);
67
68protected:
69 // void resizeEvent(QResizeEvent *event) override;
70
71private:
72 Ui::AudioWaveForm *ui;
73 //-------------------------------------------
74
75 QCustomPlot *waveWidget;
76 void processSampleRate();
77 void processBuffer();
78
79 void samplesUpdated();
80 void plotLines(int n);
81 void deselectLines(QVector<QCPItemLine*> &lines, int index, int num_of_lines);
82 void setUtteranceNumber(int n);
83 void updateUtterances(int ind);
84 void adjustTime(double timeValue);
85 void getUpdatedIndexes(int index1, int index2);
86 void addPlotLine();
87 void addUtteranceNumber();
88 bool isAudioFile(const QString& filePath);
89
90 QBuffer mInputBuffer;
92
93 //qint64 mDuration;
94 QVector<double> mFftIndices;
95
96 fftw_plan mFftPlan;
97 double *mFftIn;
98 double *mFftOut;
99
100 QVector<double> mSamples;
101 QVector<double> mIndices;
102
103 qint64 total_duration = 0;
104 int flag1 = 1;
107 qint64 sample_rate = 0;
108 qint64 num_sam = 0;
109 int factor = 1;
110 QVector<int> blocktime;
111 QVector<QTime> endTime;
112
113 QVector<QCPItemLine*> startLine;
114 QVector<QCPItemLine*> endLine;
115 QVector<QCPItemText*> utteranceNumbers;
116 std::unique_ptr<QCPItemLine> playLine = nullptr;
117 // QVector<double> startCoords;
118 QVector<double> endCoords;
119 bool updateTimestamps = false;
120
121 bool dragging = false;
124 uint64_t numOfAddedLines = 0;
125 QString blockText;
126
127 QUrl mUrl;
128 QMediaPlayer* mPlayer = nullptr;
131
132 QVector<double> timeValues;
133
134
135};
136
137#endif // AUDIOWAVEFORM_H
Definition audiowaveform.h:34
void updateTimeStamps()
Definition audiowaveform.cpp:787
void deselectLines(QVector< QCPItemLine * > &lines, int index, int num_of_lines)
Definition audiowaveform.cpp:511
void processBuffer()
Definition audiowaveform.cpp:211
void showWaveForm()
Definition audiowaveform.cpp:126
void plotLines(int n)
Definition audiowaveform.cpp:305
AudioWaveForm(QWidget *parent=nullptr)
Definition audiowaveform.cpp:18
QVector< double > mIndices
Definition audiowaveform.h:101
void addPlotLine()
Definition audiowaveform.cpp:718
void updateTimeStampsBlock(QVector< int > blocks)
void updateUtterances(int ind)
Definition audiowaveform.cpp:414
bool isAudioFile(const QString &filePath)
Definition audiowaveform.cpp:818
QMediaPlayer * mPlayer
Definition audiowaveform.h:128
void setMediaUrl(QUrl url)
Definition audiowaveform.cpp:808
QBuffer mAudioBuffer
Definition audiowaveform.h:129
void getDuration(qint64 total_time)
Definition audiowaveform.cpp:429
QVector< QCPItemLine * > endLine
Definition audiowaveform.h:114
QVector< double > timeValues
Definition audiowaveform.h:132
void processAudioIn()
Definition audiowaveform.cpp:254
QVector< double > mSamples
Definition audiowaveform.h:100
int factor
Definition audiowaveform.h:109
bool updateTimestamps
Definition audiowaveform.h:119
int selectedLineIndex
Definition audiowaveform.h:123
void getBlockText(QString blockText)
Definition audiowaveform.cpp:795
std::unique_ptr< QCPItemLine > playLine
Definition audiowaveform.h:116
QString blockText
Definition audiowaveform.h:125
QVector< int > blocktime
Definition audiowaveform.h:110
QVector< double > mFftIndices
Definition audiowaveform.h:94
void addUtteranceNumber()
Definition audiowaveform.cpp:752
void getUpdatedIndexes(int index1, int index2)
double * mFftOut
Definition audiowaveform.h:98
void on_addBtn_clicked()
Definition audiowaveform.cpp:782
Ui::AudioWaveForm * ui
Definition audiowaveform.h:72
qint64 sample_rate
Definition audiowaveform.h:107
void updateTime(int block_num, QTime endTime)
qint64 total_duration
Definition audiowaveform.h:103
fftw_plan mFftPlan
Definition audiowaveform.h:96
void onMouseMove(QMouseEvent *event)
Definition audiowaveform.cpp:521
uint64_t numOfAddedLines
Definition audiowaveform.h:124
QString mMediaFileName
Definition audiowaveform.h:130
qint64 tot_duration
Definition audiowaveform.h:91
void samplesUpdated()
Definition audiowaveform.cpp:435
QVector< double > endCoords
Definition audiowaveform.h:118
void on_updateTimestampsBtn_clicked()
Definition audiowaveform.cpp:803
int flag1
Definition audiowaveform.h:104
void updateTimestampsToggle()
Definition audiowaveform.cpp:687
QVector< QTime > endTime
Definition audiowaveform.h:111
void adjustTime(double timeValue)
void positionChanged(qint64 position)
double * mFftIn
Definition audiowaveform.h:97
void getTimeArray(QVector< QTime > timeArray)
Definition audiowaveform.cpp:288
void onMouseRelease(QMouseEvent *event)
Definition audiowaveform.cpp:700
qint64 num_sam
Definition audiowaveform.h:108
int linesAvailable
Definition audiowaveform.h:105
void processSampleRate()
Definition audiowaveform.cpp:174
void samplingStatus(bool status)
QBuffer mInputBuffer
Definition audiowaveform.h:90
void setPlayerPosition(qint64 position)
Definition audiowaveform.cpp:235
QVector< QCPItemText * > utteranceNumbers
Definition audiowaveform.h:115
QCustomPlot * waveWidget
Definition audiowaveform.h:75
void onMousePress(QMouseEvent *event)
Definition audiowaveform.cpp:467
bool dragging
Definition audiowaveform.h:121
QUrl mUrl
Definition audiowaveform.h:127
double lastMouseX
Definition audiowaveform.h:122
int num_of_blocks
Definition audiowaveform.h:106
QVector< QCPItemLine * > startLine
Definition audiowaveform.h:113
void setUtteranceNumber(int n)
Definition audiowaveform.cpp:367
~AudioWaveForm()
Definition audiowaveform.cpp:118
Definition about.h:6