Overview
avidemux3.changes
Changed
x
1
2
-------------------------------------------------------------------
3
+Sun Jan 08 13:23:21 UTC 2017 - joerg.lorenzen@ki.tng.de
4
+
5
+- Update to version 2.6.18
6
+ * Fixed slider in preview mode
7
+
8
+- Version 2.6.17
9
+ * Allow EAC3 in mp4 and mp4v2 (fiftyplus/euma)
10
+ * Fix behaviour of preview window when video size is ~ screen
11
+ size
12
+
13
+-------------------------------------------------------------------
14
Fri Jan 06 14:24:15 UTC 2017 - joerg.lorenzen@ki.tng.de
15
16
- Enabled support for fdk-aac.
17
avidemux3.spec
Changed
10
1
2
3
Name: avidemux3
4
Summary: Graphical video editing and transcoding tool
5
-Version: 2.6.16
6
+Version: 2.6.18
7
Release: 1
8
Url: http://avidemux.sourceforge.net/
9
Source0: avidemux_%{version}.tar.gz
10
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_UIs/include/DIA_flyDialogQt4.h -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/include/DIA_flyDialogQt4.h
Changed
33
1
2
ResizeMethod _resizeMethod;
3
uint64_t lastPts;
4
double _computedZoom;
5
-
6
+ int _usedWidth, _usedHeight;
7
8
ADM_coreVideoFilter *_in;
9
10
11
virtual ADM_colorspace toRgbColor(void);
12
void updateZoom(void);
13
void EndConstructor(void);
14
- uint8_t cleanup(void);
15
+ uint8_t cleanup(void);
16
+ bool initializeSize();
17
+ float calcZoomToBeDisplayable(uint32_t imageWidth, uint32_t imageHeight);
18
/* Filter dependant : you have to implement them*/
19
//
20
virtual void resetScaler(void)=0; // dont bother, implemented by yuv or rgb subclass
21
22
virtual void postInit(uint8_t reInit);
23
public:
24
virtual uint8_t sliderChanged(void);
25
+ virtual void updateSlider(void);
26
virtual bool goToTime(uint64_t tme);
27
+
28
+private:
29
+ virtual bool nextImageInternal(void);
30
31
public slots:
32
virtual bool nextImage(void);
33
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_UIs/src/DIA_flyDialog.cpp -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/src/DIA_flyDialog.cpp
Changed
306
1
2
}
3
4
/**
5
- \fn sliderChanged
6
- \brief callback to handle image changes
7
+ \fn goToTime
8
*/
9
bool ADM_flyDialog::goToTime(uint64_t tme)
10
{
11
_in->goToTime(tme);
12
- return nextImage();
13
+ return nextImageInternal();
14
}
15
+
16
+/**
17
+ \fn sliderChanged
18
+ \brief callback to handle image changes
19
+*/
20
uint8_t ADM_flyDialog::sliderChanged(void)
21
{
22
uint32_t fn= sliderGet();
23
24
pushButton_back1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Back one minute", 0));
25
pushButton_back1mn->setText(QApplication::translate("seekablePreviewDialog", "<<", 0));
26
pushButton_play->setText(QApplication::translate("seekablePreviewDialog", "Play", 0));
27
- pushButton_next->setStatusTip(QApplication::translate("seekablePreviewDialog", "next image", 0));
28
+ pushButton_next->setToolTip(QApplication::translate("seekablePreviewDialog", "Next image", 0));
29
pushButton_next->setText(QApplication::translate("seekablePreviewDialog", ">", 0));
30
pushButton_fwd1mn->setText(QApplication::translate("seekablePreviewDialog", ">>", 0));
31
+ pushButton_fwd1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Forward one minute", 0));
32
radioButton_autoZoom->setText(QApplication::translate("seekablePreviewDialog", "A&utoZoom", 0));
33
34
QObject::connect(pushButton_next ,SIGNAL(clicked()),this,SLOT(nextImage()));
35
36
return lastPts;
37
}
38
/**
39
- \fn nextImage
40
+ \fn nextImageInternal
41
*/
42
-bool ADM_flyDialog::nextImage(void)
43
+bool ADM_flyDialog::nextImageInternal(void)
44
{
45
uint32_t frameNumber;
46
if(!_in->getNextFrame(&frameNumber,_yuvBuffer))
47
48
process();
49
return display(_rgbByteBufferDisplay.at(0));
50
}
51
+
52
+/**
53
+ \fn nextImage
54
+*/
55
+bool ADM_flyDialog::nextImage(void)
56
+{
57
+ QSlider *slide=(QSlider *)_slider;
58
+ ADM_assert(slide);
59
+ bool oldState=slide->blockSignals(true);
60
+ bool r=nextImageInternal();
61
+ if(r)
62
+ updateSlider();
63
+ slide->blockSignals(oldState);
64
+ return r;
65
+}
66
+
67
+/**
68
+ *
69
+ * @return
70
+ */
71
+bool ADM_flyDialog::initializeSize()
72
+{
73
+ _canvas->resize(1,1);
74
+ QSize qsize= _canvas->parentWidget()->parentWidget()->size();
75
+ //_usedWidth = qsize.width();
76
+ // Normally there is nothing interesting left and right, we can use a hardcoded value
77
+ _usedWidth=64;
78
+ _usedHeight= 32+qsize.height(); // keep a border margin
79
+
80
+ if (_resizeMethod != RESIZE_NONE)
81
+ {
82
+ _zoom = calcZoomFactor();
83
+ if (_zoom == 1)
84
+ {
85
+ _resizeMethod = RESIZE_NONE;
86
+ }
87
+ }
88
+ if (_resizeMethod == RESIZE_NONE)
89
+ {
90
+ _zoom = 1;
91
+ _zoomW = _w;
92
+ _zoomH = _h;
93
+ } else
94
+ {
95
+ _zoomW = uint32_t(_w * _zoom);
96
+ _zoomH = uint32_t(_h * _zoom);
97
+ }
98
+
99
+
100
+ ADM_info("xAutoZoom : base size= %d x %d\n",_usedWidth,_usedHeight);
101
+ return true;
102
+}
103
+/**
104
+ * \brief Calculate the zoom ratio required to fit the whole image on the screen.
105
+ * @param imageWidth
106
+ * @param imageHeight
107
+ * @return
108
+ */
109
+float ADM_flyDialog::calcZoomToBeDisplayable( uint32_t imageWidth, uint32_t imageHeight)
110
+{
111
+ uint32_t screenWidth, screenHeight;
112
+ QWidget *topWindow=_canvas->parentWidget()->parentWidget();
113
+ UI_getPhysicalScreenSize(topWindow, &screenWidth, &screenHeight);
114
+
115
+ // Usable width/height
116
+ int usableWidth =(int)screenWidth -_usedWidth;
117
+ int usableHeight=(int)screenHeight-_usedHeight;
118
+
119
+ if(usableWidth<160) usableWidth=160;
120
+ if(usableHeight<160) usableHeight=160;
121
+
122
+
123
+ float widthRatio = (float)usableWidth / (float)imageWidth;
124
+ float heightRatio = (float)usableHeight / (float)imageHeight;
125
+
126
+ ADM_info("autoZoom : Raw w=%f h=%f\n",widthRatio,heightRatio);
127
+
128
+ float r= (widthRatio < heightRatio ? widthRatio : heightRatio);
129
+ return r;
130
+
131
+}
132
+
133
//************************************
134
// Implement the specific part
135
// i.e. yuv processing or RGB processing
136
137
{
138
_yuvBufferOut=new ADMImageDefault(_w,_h);
139
yuvToRgb=NULL;
140
+ initializeSize();
141
updateZoom();
142
postInit(false);
143
}
144
145
yuv2rgb =new ADMColorScalerSimple(_w,_h,ADM_COLOR_YV12,
146
toRgbColor());
147
rgb2rgb=NULL;
148
+ initializeSize();
149
updateZoom();
150
postInit(false);
151
152
153
return true;
154
}
155
156
-extern float UI_calcZoomToFitScreen(QWidget* window, QWidget* canvas, uint32_t imageWidth, uint32_t imageHeight);
157
+
158
+
159
160
/**
161
\fn FlyDialogEventFilter
162
163
ADM_QCanvas *canvas, QSlider *slider, ResizeMethod resizeMethod)
164
{
165
ADM_assert(canvas);
166
-
167
- if (slider)
168
- ADM_assert(in);
169
+ {
170
+ ADM_assert(in);
171
+ slider->setMaximum(ADM_FLY_SLIDER_MAX);
172
+ }
173
_parent=parent;
174
_w = width;
175
_h = height;
176
177
_resizeMethod = resizeMethod;
178
_zoomChangeCount = 0;
179
_yuvBuffer=new ADMImageDefault(_w,_h);
180
+ _usedWidth= _usedHeight=0;
181
lastPts=0;
182
- if (_resizeMethod != RESIZE_NONE)
183
- {
184
- _zoom = calcZoomFactor();
185
- if (_zoom == 1)
186
- {
187
- _resizeMethod = RESIZE_NONE;
188
- }
189
- }
190
- if (_resizeMethod == RESIZE_NONE)
191
- {
192
- _zoom = 1;
193
- _zoomW = _w;
194
- _zoomH = _h;
195
- } else
196
- {
197
- _zoomW = uint32_t(_w * _zoom);
198
- _zoomH = uint32_t(_h * _zoom);
199
- }
200
+
201
202
connect(&timer,SIGNAL(timeout()),this,SLOT(timeout()));
203
timer.setSingleShot(true);
204
205
\fn calcZoomFactor
206
\brief
207
*/
208
-
209
float ADM_flyDialog::calcZoomFactor(void)
210
{
211
+#define APPROXIMATE 20.
212
if(_computedZoom) return _computedZoom;
213
double zoom;
214
- zoom=UI_calcZoomToFitScreen(((ADM_QCanvas*)_canvas)->parentWidget()->parentWidget(), ((ADM_QCanvas*)_canvas)->parentWidget(), _w, _h);
215
+ zoom=calcZoomToBeDisplayable(_w, _h);
216
// Find the closest integer
217
// zoom it ?
218
- if((zoom+0.3)>1)
219
+ if((zoom)>1)
220
{
221
- _computedZoom=floor(2*(zoom+0.3))/2;
222
+ _computedZoom=floor(APPROXIMATE*(zoom))/APPROXIMATE;
223
ADM_info("AutoZoom %f ->%f \n",(float)zoom,(float)_computedZoom);
224
return _computedZoom;
225
}
226
double invertZoom=1/zoom;
227
- _computedZoom=2./floor((2*(invertZoom+0.3)));
228
+ _computedZoom=APPROXIMATE/floor((1+APPROXIMATE*(invertZoom)));
229
ADM_info("AutoZoom 1/%f\n",(float)(1./_computedZoom));
230
return _computedZoom;
231
232
233
slide->setValue(value);
234
return 1;
235
}
236
+
237
+/**
238
+ \fn updateSlider
239
+ \brief
240
+*/
241
+void ADM_flyDialog::updateSlider(void)
242
+{
243
+ ADM_assert(_in);
244
+ uint64_t dur=_in->getInfo()->totalDuration;
245
+ uint64_t pts=getCurrentPts();
246
+ double pos;
247
+ pos=pts;
248
+ pos/=dur;
249
+ pos*=ADM_FLY_SLIDER_MAX;
250
+ pos+=0.5; // round up
251
+ sliderSet((uint32_t)pos);
252
+}
253
+
254
/**
255
\fn isRgbInverted
256
\brief
257
258
if(pts<JUMP_LENGTH) pts=0;
259
else pts-=JUMP_LENGTH;
260
goToTime(pts);
261
+ updateSlider();
262
}
263
/**
264
*
265
266
uint64_t pts=getCurrentPts();
267
pts+=JUMP_LENGTH;
268
goToTime(pts);
269
-
270
+ updateSlider();
271
}
272
/**
273
*
274
*/
275
void ADM_flyDialog::play(bool state)
276
{
277
+ QSlider *slide=(QSlider *)_slider;
278
+ ADM_assert(slide);
279
if(state)
280
{
281
pushButton_back1mn->setEnabled(false);
282
pushButton_fwd1mn->setEnabled(false);
283
pushButton_next->setEnabled(false);
284
+ slide->setEnabled(false);
285
timer.start();
286
}else
287
{
288
289
pushButton_back1mn->setEnabled(true);
290
pushButton_fwd1mn->setEnabled(true);
291
pushButton_next->setEnabled(true);
292
+ updateSlider();
293
+ slide->setEnabled(true);
294
}
295
296
}
297
298
void ADM_flyDialog::timeout()
299
{
300
301
- bool r=nextImage();
302
+ bool r=nextImageInternal();
303
if(r)
304
{
305
timer.start();
306
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_mainfilter.cpp
Changed
19
1
2
ADM_coreVideoFilter *filter=ADM_vf_getInstance(itag);
3
ADM_assert(filter);
4
if (previewDialog)
5
- previewDialog->resetVideoStream(filter);
6
- else
7
{
8
- previewDialog = new Ui_seekablePreviewWindow(this, filter, 0);
9
- connect(previewDialog, SIGNAL(accepted()), this, SLOT(closePreview()));
10
+ delete previewDialog;
11
+ previewDialog=NULL;
12
}
13
+ previewDialog = new Ui_seekablePreviewWindow(this, filter, 0);
14
+ previewDialog->setModal(true);
15
+ connect(previewDialog, SIGNAL(accepted()), this, SLOT(closePreview()));
16
previewDialog->show();
17
}
18
/**
19
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.cpp -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.cpp
Changed
56
1
2
3
/**
4
*
5
- * @return
6
- */
7
-bool Ui_seekablePreviewWindow::nextImage(void)
8
-{
9
- return seekablePreview->nextImage();
10
-}
11
-/**
12
- *
13
* @param videoStream
14
*/
15
void Ui_seekablePreviewWindow::resetVideoStream(ADM_coreVideoFilter *videoStream)
16
{
17
if (seekablePreview)
18
delete seekablePreview;
19
-
20
+ seekablePreview=NULL;
21
if (canvas)
22
delete canvas;
23
+ canvas=NULL;
24
25
uint32_t canvasWidth = videoStream->getInfo()->width;
26
uint32_t canvasHeight = videoStream->getInfo()->height;
27
28
}
29
/**
30
*
31
- * @param value
32
- */
33
-void Ui_seekablePreviewWindow::sliderChanged(int value)
34
-{
35
- seekablePreview->sliderChanged();
36
-}
37
-/**
38
- *
39
* @return
40
*/
41
uint32_t Ui_seekablePreviewWindow::frameIndex()
42
43
ui.label->setText(s);
44
return true;
45
}
46
+/**
47
+ *
48
+ * @param value
49
+ */
50
+void Ui_seekablePreviewWindow::sliderChanged(int value)
51
+{
52
+ seekablePreview->sliderChanged();
53
+}
54
+
55
// EOF
56
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.h -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.h
Changed
12
1
2
void resetVideoStream(ADM_coreVideoFilter *videoStream);
3
uint32_t frameIndex();
4
bool setTime(uint64_t timestamp);
5
-
6
public slots:
7
void sliderChanged(int value);
8
- bool nextImage(void);
9
+
10
+
11
};
12
avidemux_2.6.16.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/seekablePreview.ui -> avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/seekablePreview.ui
Changed
23
1
2
<rect>
3
<x>0</x>
4
<y>0</y>
5
- <width>464</width>
6
- <height>378</height>
7
+ <width>500</width>
8
+ <height>130</height>
9
</rect>
10
</property>
11
<property name="sizePolicy">
12
13
<widget class="QFrame" name="frame">
14
<property name="minimumSize">
15
<size>
16
- <width>320</width>
17
- <height>240</height>
18
+ <width>16</width>
19
+ <height>16</height>
20
</size>
21
</property>
22
<property name="frameShape">
23
avidemux_2.6.16.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4/muxerMP4.cpp -> avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4/muxerMP4.cpp
Changed
13
1
2
for(int i=0;i<nbAudioTrack;i++)
3
{
4
uint32_t acc=a[i]->getInfo()->encoding;
5
- if(acc!=WAV_MP2 && acc!=WAV_MP3 && acc!=WAV_AAC && acc!=WAV_AC3)
6
+ if(acc!=WAV_MP2 && acc!=WAV_MP3 && acc!=WAV_AAC && acc!=WAV_AC3 && acc!=WAV_EAC3)
7
{
8
- GUI_Error_HIG(QT_TRANSLATE_NOOP("mp4muxer","Unsupported"),QT_TRANSLATE_NOOP("mp4muxer","Only AAC, AC3, and mpegaudio supported for audio"));
9
+ GUI_Error_HIG(QT_TRANSLATE_NOOP("mp4muxer","Unsupported"),QT_TRANSLATE_NOOP("mp4muxer","Only AAC, AC3, E-AC3 and mpegaudio supported for audio"));
10
return false;
11
}
12
}
13
avidemux_2.6.16.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4v2/CMakeLists.txt -> avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4v2/CMakeLists.txt
Changed
22
1
2
muxerMp4v2Video.cpp
3
muxerMp4v2Config.cpp
4
)
5
-SUBDIRS(libmp4v2)
6
+IF(NOT USE_EXTERNAL_MP4V2)
7
+ ADD_SUBDIRECTORY(libmp4v2)
8
+ENDIF()
9
10
ADD_LIBRARY(ADM_mx_mp4v2 SHARED ${ADM_mp4v2_SRCS})
11
-TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ADM_libmp4v2)
12
+IF(USE_EXTERNAL_MP4V2)
13
+ TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ${MP4V2_LIBRARIES})
14
+ELSE()
15
+ TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ADM_libmp4v2)
16
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmp4v2/include/)
17
+ENDIF()
18
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
19
-INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmp4v2/include/)
20
INIT_MUXER(ADM_mx_mp4v2)
21
INSTALL_MUXER(ADM_mx_mp4v2)
22
avidemux_2.6.16.tar.gz/avidemux_plugins/CMakeLists.txt -> avidemux_2.6.18.tar.gz/avidemux_plugins/CMakeLists.txt
Changed
23
1
2
OPTION(USE_EXTERNAL_LIBASS "Use system installed libass library." OFF)
3
OPTION(USE_EXTERNAL_LIBMAD "Use system installed libmad library." OFF)
4
OPTION(USE_EXTERNAL_LIBA52 "Use system installed liba52 library." OFF)
5
+OPTION(USE_EXTERNAL_MP4V2 "Use system installed libmp4v2 library." OFF)
6
7
INCLUDE(FindPkgConfig)
8
9
10
INCLUDE_DIRECTORIES(SYSTEM ${LIBA52_INCLUDE_DIR})
11
ENDIF()
12
13
+# libmp4v2
14
+IF(USE_EXTERNAL_MP4V2)
15
+ FIND_PATH(MP4V2_INCLUDE_DIR mp4v2/mp4v2.h)
16
+ FIND_LIBRARY(MP4V2_LIBRARIES mp4v2)
17
+ INCLUDE_DIRECTORIES(SYSTEM ${MP4V2_INCLUDE_DIR})
18
+ENDIF()
19
+
20
IF (FRESH_BUILD)
21
MESSAGE("")
22
ENDIF (FRESH_BUILD)
23
avidemux_2.6.16.tar.gz/bootStrap.bash -> avidemux_2.6.18.tar.gz/bootStrap.bash
Changed
37
1
2
external_libass=0
3
external_liba52=0
4
external_libmad=0
5
+external_libmp4v2=0
6
7
fail()
8
{
9
10
echo " --with-system-libass : Use system libass instead of the bundled one"
11
echo " --with-system-liba52 : Use system liba52 (a52dec) instead of the bundled one"
12
echo " --with-system-libmad : Use system libmad instead of the bundled one"
13
+ echo " --with-system-libmp4v2: Use system libmp4v2 instead of the bundled one"
14
echo "The end result will be in the install folder. You can then copy it to / or whatever"
15
config
16
17
18
--with-system-libmad)
19
external_libmad=1
20
;;
21
+ --with-system-libmp4v2)
22
+ external_libmp4v2=1
23
+ ;;
24
*)
25
echo "unknown parameter $config_option"
26
usage
27
28
if [ "x$external_libmad" = "x1" ]; then
29
export EXTRA_CMAKE_DEFS="-DUSE_EXTERNAL_LIBMAD=true $EXTRA_CMAKE_DEFS"
30
fi
31
+if [ "x$external_libmp4v2" = "x1" ]; then
32
+ export EXTRA_CMAKE_DEFS="-DUSE_EXTERNAL_MP4V2=true $EXTRA_CMAKE_DEFS"
33
+fi
34
echo "Top dir : $TOP"
35
echo "Fake installation directory=$FAKEROOT_DIR"
36
if [ "x$debug" = "x1" ] ; then echo
37
avidemux_2.6.16.tar.gz/cmake/avidemuxVersion.cmake -> avidemux_2.6.18.tar.gz/cmake/avidemuxVersion.cmake
Changed
10
1
2
include(admTimeStamp)
3
SET(CPACK_PACKAGE_VERSION_MAJOR "2")
4
SET(CPACK_PACKAGE_VERSION_MINOR "6")
5
-SET(CPACK_PACKAGE_VERSION_P "16")
6
+SET(CPACK_PACKAGE_VERSION_P "18")
7
SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_P}")
8
SET(AVIDEMUX_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
9
SET(AVIDEMUX_API_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
10
Refresh
No build results available
Refresh
No rpmlint results available
Login required, please
login
or
signup
in order to comment
Request History
enzokiel created request over 8 years ago
Update to version 2.6.18
enzokiel accepted request over 8 years ago
Please add a comment