Projects
Multimedia
avidemux3
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
Expand all
Collapse all
Changes of Revision 34
View file
avidemux3.changes
Changed
@@ -1,4 +1,15 @@ ------------------------------------------------------------------- +Sun Jan 08 13:23:21 UTC 2017 - joerg.lorenzen@ki.tng.de + +- Update to version 2.6.18 + * Fixed slider in preview mode + +- Version 2.6.17 + * Allow EAC3 in mp4 and mp4v2 (fiftyplus/euma) + * Fix behaviour of preview window when video size is ~ screen + size + +------------------------------------------------------------------- Fri Jan 06 14:24:15 UTC 2017 - joerg.lorenzen@ki.tng.de - Enabled support for fdk-aac.
View file
avidemux3.spec
Changed
@@ -25,7 +25,7 @@ Name: avidemux3 Summary: Graphical video editing and transcoding tool -Version: 2.6.16 +Version: 2.6.18 Release: 1 Url: http://avidemux.sourceforge.net/ Source0: avidemux_%{version}.tar.gz
View file
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
@@ -81,7 +81,7 @@ ResizeMethod _resizeMethod; uint64_t lastPts; double _computedZoom; - + int _usedWidth, _usedHeight; ADM_coreVideoFilter *_in; @@ -117,7 +117,9 @@ virtual ADM_colorspace toRgbColor(void); void updateZoom(void); void EndConstructor(void); - uint8_t cleanup(void); + uint8_t cleanup(void); + bool initializeSize(); + float calcZoomToBeDisplayable(uint32_t imageWidth, uint32_t imageHeight); /* Filter dependant : you have to implement them*/ // virtual void resetScaler(void)=0; // dont bother, implemented by yuv or rgb subclass @@ -143,7 +145,11 @@ virtual void postInit(uint8_t reInit); public: virtual uint8_t sliderChanged(void); + virtual void updateSlider(void); virtual bool goToTime(uint64_t tme); + +private: + virtual bool nextImageInternal(void); public slots: virtual bool nextImage(void);
View file
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
@@ -124,14 +124,18 @@ } /** - \fn sliderChanged - \brief callback to handle image changes + \fn goToTime */ bool ADM_flyDialog::goToTime(uint64_t tme) { _in->goToTime(tme); - return nextImage(); + return nextImageInternal(); } + +/** + \fn sliderChanged + \brief callback to handle image changes +*/ uint8_t ADM_flyDialog::sliderChanged(void) { uint32_t fn= sliderGet(); @@ -205,9 +209,10 @@ pushButton_back1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Back one minute", 0)); pushButton_back1mn->setText(QApplication::translate("seekablePreviewDialog", "<<", 0)); pushButton_play->setText(QApplication::translate("seekablePreviewDialog", "Play", 0)); - pushButton_next->setStatusTip(QApplication::translate("seekablePreviewDialog", "next image", 0)); + pushButton_next->setToolTip(QApplication::translate("seekablePreviewDialog", "Next image", 0)); pushButton_next->setText(QApplication::translate("seekablePreviewDialog", ">", 0)); pushButton_fwd1mn->setText(QApplication::translate("seekablePreviewDialog", ">>", 0)); + pushButton_fwd1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Forward one minute", 0)); radioButton_autoZoom->setText(QApplication::translate("seekablePreviewDialog", "A&utoZoom", 0)); QObject::connect(pushButton_next ,SIGNAL(clicked()),this,SLOT(nextImage())); @@ -232,9 +237,9 @@ return lastPts; } /** - \fn nextImage + \fn nextImageInternal */ -bool ADM_flyDialog::nextImage(void) +bool ADM_flyDialog::nextImageInternal(void) { uint32_t frameNumber; if(!_in->getNextFrame(&frameNumber,_yuvBuffer)) @@ -248,6 +253,88 @@ process(); return display(_rgbByteBufferDisplay.at(0)); } + +/** + \fn nextImage +*/ +bool ADM_flyDialog::nextImage(void) +{ + QSlider *slide=(QSlider *)_slider; + ADM_assert(slide); + bool oldState=slide->blockSignals(true); + bool r=nextImageInternal(); + if(r) + updateSlider(); + slide->blockSignals(oldState); + return r; +} + +/** + * + * @return + */ +bool ADM_flyDialog::initializeSize() +{ + _canvas->resize(1,1); + QSize qsize= _canvas->parentWidget()->parentWidget()->size(); + //_usedWidth = qsize.width(); + // Normally there is nothing interesting left and right, we can use a hardcoded value + _usedWidth=64; + _usedHeight= 32+qsize.height(); // keep a border margin + + if (_resizeMethod != RESIZE_NONE) + { + _zoom = calcZoomFactor(); + if (_zoom == 1) + { + _resizeMethod = RESIZE_NONE; + } + } + if (_resizeMethod == RESIZE_NONE) + { + _zoom = 1; + _zoomW = _w; + _zoomH = _h; + } else + { + _zoomW = uint32_t(_w * _zoom); + _zoomH = uint32_t(_h * _zoom); + } + + + ADM_info("xAutoZoom : base size= %d x %d\n",_usedWidth,_usedHeight); + return true; +} +/** + * \brief Calculate the zoom ratio required to fit the whole image on the screen. + * @param imageWidth + * @param imageHeight + * @return + */ +float ADM_flyDialog::calcZoomToBeDisplayable( uint32_t imageWidth, uint32_t imageHeight) +{ + uint32_t screenWidth, screenHeight; + QWidget *topWindow=_canvas->parentWidget()->parentWidget(); + UI_getPhysicalScreenSize(topWindow, &screenWidth, &screenHeight); + + // Usable width/height + int usableWidth =(int)screenWidth -_usedWidth; + int usableHeight=(int)screenHeight-_usedHeight; + + if(usableWidth<160) usableWidth=160; + if(usableHeight<160) usableHeight=160; + + + float widthRatio = (float)usableWidth / (float)imageWidth; + float heightRatio = (float)usableHeight / (float)imageHeight; + + ADM_info("autoZoom : Raw w=%f h=%f\n",widthRatio,heightRatio); + + float r= (widthRatio < heightRatio ? widthRatio : heightRatio); + return r; + +} + //************************************ // Implement the specific part // i.e. yuv processing or RGB processing @@ -258,6 +345,7 @@ { _yuvBufferOut=new ADMImageDefault(_w,_h); yuvToRgb=NULL; + initializeSize(); updateZoom(); postInit(false); } @@ -294,6 +382,7 @@ yuv2rgb =new ADMColorScalerSimple(_w,_h,ADM_COLOR_YV12, toRgbColor()); rgb2rgb=NULL; + initializeSize(); updateZoom(); postInit(false); @@ -335,7 +424,8 @@ return true; } -extern float UI_calcZoomToFitScreen(QWidget* window, QWidget* canvas, uint32_t imageWidth, uint32_t imageHeight); + + /** \fn FlyDialogEventFilter @@ -377,9 +467,10 @@ ADM_QCanvas *canvas, QSlider *slider, ResizeMethod resizeMethod) { ADM_assert(canvas); - - if (slider) - ADM_assert(in); + { + ADM_assert(in); + slider->setMaximum(ADM_FLY_SLIDER_MAX); + } _parent=parent; _w = width; _h = height; @@ -391,25 +482,9 @@ _resizeMethod = resizeMethod; _zoomChangeCount = 0; _yuvBuffer=new ADMImageDefault(_w,_h); + _usedWidth= _usedHeight=0; lastPts=0; - if (_resizeMethod != RESIZE_NONE) - { - _zoom = calcZoomFactor(); - if (_zoom == 1) - { - _resizeMethod = RESIZE_NONE; - } - } - if (_resizeMethod == RESIZE_NONE) - { - _zoom = 1; - _zoomW = _w; - _zoomH = _h; - } else - { - _zoomW = uint32_t(_w * _zoom); - _zoomH = uint32_t(_h * _zoom); - } + connect(&timer,SIGNAL(timeout()),this,SLOT(timeout())); timer.setSingleShot(true); @@ -451,22 +526,22 @@ \fn calcZoomFactor \brief */ - float ADM_flyDialog::calcZoomFactor(void) { +#define APPROXIMATE 20. if(_computedZoom) return _computedZoom; double zoom; - zoom=UI_calcZoomToFitScreen(((ADM_QCanvas*)_canvas)->parentWidget()->parentWidget(), ((ADM_QCanvas*)_canvas)->parentWidget(), _w, _h); + zoom=calcZoomToBeDisplayable(_w, _h); // Find the closest integer // zoom it ? - if((zoom+0.3)>1) + if((zoom)>1) { - _computedZoom=floor(2*(zoom+0.3))/2; + _computedZoom=floor(APPROXIMATE*(zoom))/APPROXIMATE; ADM_info("AutoZoom %f ->%f \n",(float)zoom,(float)_computedZoom); return _computedZoom; } double invertZoom=1/zoom; - _computedZoom=2./floor((2*(invertZoom+0.3))); + _computedZoom=APPROXIMATE/floor((1+APPROXIMATE*(invertZoom))); ADM_info("AutoZoom 1/%f\n",(float)(1./_computedZoom)); return _computedZoom; @@ -513,6 +588,24 @@ slide->setValue(value); return 1; } + +/** + \fn updateSlider + \brief +*/ +void ADM_flyDialog::updateSlider(void) +{ + ADM_assert(_in); + uint64_t dur=_in->getInfo()->totalDuration; + uint64_t pts=getCurrentPts(); + double pos; + pos=pts; + pos/=dur; + pos*=ADM_FLY_SLIDER_MAX; + pos+=0.5; // round up + sliderSet((uint32_t)pos); +} + /** \fn isRgbInverted \brief @@ -534,6 +627,7 @@ if(pts<JUMP_LENGTH) pts=0; else pts-=JUMP_LENGTH; goToTime(pts); + updateSlider(); } /** * @@ -543,18 +637,21 @@ uint64_t pts=getCurrentPts(); pts+=JUMP_LENGTH; goToTime(pts); - + updateSlider(); } /** * */ void ADM_flyDialog::play(bool state) { + QSlider *slide=(QSlider *)_slider; + ADM_assert(slide); if(state) { pushButton_back1mn->setEnabled(false); pushButton_fwd1mn->setEnabled(false); pushButton_next->setEnabled(false); + slide->setEnabled(false); timer.start(); }else { @@ -562,6 +659,8 @@ pushButton_back1mn->setEnabled(true); pushButton_fwd1mn->setEnabled(true); pushButton_next->setEnabled(true); + updateSlider(); + slide->setEnabled(true); } } @@ -589,7 +688,7 @@ void ADM_flyDialog::timeout() { - bool r=nextImage(); + bool r=nextImageInternal(); if(r) { timer.start();
View file
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
@@ -157,12 +157,13 @@ ADM_coreVideoFilter *filter=ADM_vf_getInstance(itag); ADM_assert(filter); if (previewDialog) - previewDialog->resetVideoStream(filter); - else { - previewDialog = new Ui_seekablePreviewWindow(this, filter, 0); - connect(previewDialog, SIGNAL(accepted()), this, SLOT(closePreview())); + delete previewDialog; + previewDialog=NULL; } + previewDialog = new Ui_seekablePreviewWindow(this, filter, 0); + previewDialog->setModal(true); + connect(previewDialog, SIGNAL(accepted()), this, SLOT(closePreview())); previewDialog->show(); } /**
View file
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
@@ -47,23 +47,16 @@ /** * - * @return - */ -bool Ui_seekablePreviewWindow::nextImage(void) -{ - return seekablePreview->nextImage(); -} -/** - * * @param videoStream */ void Ui_seekablePreviewWindow::resetVideoStream(ADM_coreVideoFilter *videoStream) { if (seekablePreview) delete seekablePreview; - + seekablePreview=NULL; if (canvas) delete canvas; + canvas=NULL; uint32_t canvasWidth = videoStream->getInfo()->width; uint32_t canvasHeight = videoStream->getInfo()->height; @@ -76,14 +69,6 @@ } /** * - * @param value - */ -void Ui_seekablePreviewWindow::sliderChanged(int value) -{ - seekablePreview->sliderChanged(); -} -/** - * * @return */ uint32_t Ui_seekablePreviewWindow::frameIndex() @@ -113,4 +98,13 @@ ui.label->setText(s); return true; } +/** + * + * @param value + */ +void Ui_seekablePreviewWindow::sliderChanged(int value) +{ + seekablePreview->sliderChanged(); +} + // EOF
View file
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
@@ -39,8 +39,8 @@ void resetVideoStream(ADM_coreVideoFilter *videoStream); uint32_t frameIndex(); bool setTime(uint64_t timestamp); - public slots: void sliderChanged(int value); - bool nextImage(void); + + };
View file
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
@@ -6,8 +6,8 @@ <rect> <x>0</x> <y>0</y> - <width>464</width> - <height>378</height> + <width>500</width> + <height>130</height> </rect> </property> <property name="sizePolicy"> @@ -26,8 +26,8 @@ <widget class="QFrame" name="frame"> <property name="minimumSize"> <size> - <width>320</width> - <height>240</height> + <width>16</width> + <height>16</height> </size> </property> <property name="frameShape">
View file
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
@@ -68,9 +68,9 @@ for(int i=0;i<nbAudioTrack;i++) { uint32_t acc=a[i]->getInfo()->encoding; - if(acc!=WAV_MP2 && acc!=WAV_MP3 && acc!=WAV_AAC && acc!=WAV_AC3) + if(acc!=WAV_MP2 && acc!=WAV_MP3 && acc!=WAV_AAC && acc!=WAV_AC3 && acc!=WAV_EAC3) { - GUI_Error_HIG(QT_TRANSLATE_NOOP("mp4muxer","Unsupported"),QT_TRANSLATE_NOOP("mp4muxer","Only AAC, AC3, and mpegaudio supported for audio")); + GUI_Error_HIG(QT_TRANSLATE_NOOP("mp4muxer","Unsupported"),QT_TRANSLATE_NOOP("mp4muxer","Only AAC, AC3, E-AC3 and mpegaudio supported for audio")); return false; } }
View file
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
@@ -6,11 +6,17 @@ muxerMp4v2Video.cpp muxerMp4v2Config.cpp ) -SUBDIRS(libmp4v2) +IF(NOT USE_EXTERNAL_MP4V2) + ADD_SUBDIRECTORY(libmp4v2) +ENDIF() ADD_LIBRARY(ADM_mx_mp4v2 SHARED ${ADM_mp4v2_SRCS}) -TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ADM_libmp4v2) +IF(USE_EXTERNAL_MP4V2) + TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ${MP4V2_LIBRARIES}) +ELSE() + TARGET_LINK_LIBRARIES(ADM_mx_mp4v2 ADM_libmp4v2) + INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmp4v2/include/) +ENDIF() INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/libmp4v2/include/) INIT_MUXER(ADM_mx_mp4v2) INSTALL_MUXER(ADM_mx_mp4v2)
View file
avidemux_2.6.16.tar.gz/avidemux_plugins/CMakeLists.txt -> avidemux_2.6.18.tar.gz/avidemux_plugins/CMakeLists.txt
Changed
@@ -70,6 +70,7 @@ OPTION(USE_EXTERNAL_LIBASS "Use system installed libass library." OFF) OPTION(USE_EXTERNAL_LIBMAD "Use system installed libmad library." OFF) OPTION(USE_EXTERNAL_LIBA52 "Use system installed liba52 library." OFF) +OPTION(USE_EXTERNAL_MP4V2 "Use system installed libmp4v2 library." OFF) INCLUDE(FindPkgConfig) @@ -93,6 +94,13 @@ INCLUDE_DIRECTORIES(SYSTEM ${LIBA52_INCLUDE_DIR}) ENDIF() +# libmp4v2 +IF(USE_EXTERNAL_MP4V2) + FIND_PATH(MP4V2_INCLUDE_DIR mp4v2/mp4v2.h) + FIND_LIBRARY(MP4V2_LIBRARIES mp4v2) + INCLUDE_DIRECTORIES(SYSTEM ${MP4V2_INCLUDE_DIR}) +ENDIF() + IF (FRESH_BUILD) MESSAGE("") ENDIF (FRESH_BUILD)
View file
avidemux_2.6.16.tar.gz/bootStrap.bash -> avidemux_2.6.18.tar.gz/bootStrap.bash
Changed
@@ -26,6 +26,7 @@ external_libass=0 external_liba52=0 external_libmad=0 +external_libmp4v2=0 fail() { @@ -120,6 +121,7 @@ echo " --with-system-libass : Use system libass instead of the bundled one" echo " --with-system-liba52 : Use system liba52 (a52dec) instead of the bundled one" echo " --with-system-libmad : Use system libmad instead of the bundled one" + echo " --with-system-libmp4v2: Use system libmp4v2 instead of the bundled one" echo "The end result will be in the install folder. You can then copy it to / or whatever" config @@ -239,6 +241,9 @@ --with-system-libmad) external_libmad=1 ;; + --with-system-libmp4v2) + external_libmp4v2=1 + ;; *) echo "unknown parameter $config_option" usage @@ -263,6 +268,9 @@ if [ "x$external_libmad" = "x1" ]; then export EXTRA_CMAKE_DEFS="-DUSE_EXTERNAL_LIBMAD=true $EXTRA_CMAKE_DEFS" fi +if [ "x$external_libmp4v2" = "x1" ]; then + export EXTRA_CMAKE_DEFS="-DUSE_EXTERNAL_MP4V2=true $EXTRA_CMAKE_DEFS" +fi echo "Top dir : $TOP" echo "Fake installation directory=$FAKEROOT_DIR" if [ "x$debug" = "x1" ] ; then echo
View file
avidemux_2.6.16.tar.gz/cmake/avidemuxVersion.cmake -> avidemux_2.6.18.tar.gz/cmake/avidemuxVersion.cmake
Changed
@@ -7,7 +7,7 @@ include(admTimeStamp) SET(CPACK_PACKAGE_VERSION_MAJOR "2") SET(CPACK_PACKAGE_VERSION_MINOR "6") -SET(CPACK_PACKAGE_VERSION_P "16") +SET(CPACK_PACKAGE_VERSION_P "18") SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_P}") SET(AVIDEMUX_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") SET(AVIDEMUX_API_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}")
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.