Changes of Revision 27

avidemux3.changes Changed
x
 
1
@@ -1,4 +1,19 @@
2
 -------------------------------------------------------------------
3
+Tue Mar 08 16:09:34 UTC 2016 - joerg.lorenzen@ki.tng.de
4
+
5
+- Update to version 2.6.12
6
+  + [H264] Fixed crash when saving h264 annexB in avi (Brundle)
7
+  + [Vdpau] Fixed VDPAU resize and deinterlace when height is padded
8
+  + [Mkv] Faster loading of VP9 and h265
9
+  + [MP4] Supports more flavors of H265
10
+  + [i18n] Spanish translation update by ringmaster
11
+  + [Edit] Another frame seeking bug fixed, happened rarely
12
+  + [All] Slightly better crash handler
13
+  + [FFmpeg]Update to 2.7.6
14
+  + [Muxer] Basic webm support
15
+  + [Jobs] Fixed right click menus with qt5
16
+
17
+-------------------------------------------------------------------
18
 Fri Feb 05 21:02:11 UTC 2016 - joerg.lorenzen@ki.tng.de
19
 
20
 - Update to version 2.6.11
21
avidemux3.spec Changed
54
 
1
@@ -27,7 +27,7 @@
2
 
3
 Name:           avidemux3
4
 Summary:        Graphical video editing and transcoding tool
5
-Version:        2.6.11
6
+Version:        2.6.12
7
 Release:        1
8
 Url:            http://avidemux.sourceforge.net/
9
 Source0:        avidemux_%{version}.tar.gz
10
@@ -48,9 +48,8 @@
11
 Patch4:         avidemux-package_version.patch
12
 Patch5:         avidemux-bootStrap.patch
13
 Patch6:         avidemux-cpu_armel.patch
14
-Patch7:         avidemux-ADM_VERSION.patch
15
-Patch8:         avidemux-cmake-permissions.patch
16
-Patch9:         avidemux-find-lrelease-qt5.patch
17
+Patch7:         avidemux-cmake-permissions.patch
18
+Patch8:         avidemux-find-lrelease-qt5.patch
19
 License:        GPL-2.0
20
 Group:          Productivity/Multimedia/Video/Editors and Convertors
21
 
22
@@ -258,8 +257,8 @@
23
 find ./ -name '*.sql' -exec dos2unix -q {} \;
24
 find ./ -name '*.txt' -exec dos2unix -q {} \;
25
 find . -type f -exec sed -i -e 's|intfloat_readwrite.h|intfloat.h|g' {} \;
26
-sed -i -e 's|set(FFMPEG_VERSION "2.7.2")|set(FFMPEG_VERSION "%{ffmpeg_version}")|g' cmake/admFFmpegBuild.cmake
27
-rm -f avidemux_core/ffmpeg_package/ffmpeg-2.7.2.tar.bz2
28
+sed -i -e 's|set(FFMPEG_VERSION "2.7.6")|set(FFMPEG_VERSION "%{ffmpeg_version}")|g' cmake/admFFmpegBuild.cmake
29
+rm -f avidemux_core/ffmpeg_package/ffmpeg-2.7.6.tar.bz2
30
 cp %{S:2} avidemux_core/ffmpeg_package/
31
 pushd avidemux_core/ffmpeg_package/patches
32
 rm -f config.mak.diff
33
@@ -288,10 +287,9 @@
34
 %patch4 -p0
35
 %patch5 -p0
36
 %patch6 -p0
37
-%patch7 -p0
38
-%patch8 -p1
39
+%patch7 -p1
40
 %if %{with build_qt5}
41
-%patch9 -p0
42
+%patch8 -p0
43
 %endif
44
 chmod 755 bootStrap.bash
45
 chmod 644 AUTHORS COPYING README
46
@@ -452,6 +450,7 @@
47
 %{_libdir}/ADM_plugins6/muxers/libADM_mx_mp4.so
48
 %{_libdir}/ADM_plugins6/muxers/libADM_mx_mp4v2.so
49
 %{_libdir}/ADM_plugins6/muxers/libADM_mx_raw.so
50
+%{_libdir}/ADM_plugins6/muxers/libADM_mx_Webm.so
51
 %{_libdir}/ADM_plugins6/pluginSettings/x264/3/ultraFast.json
52
 %{_libdir}/ADM_plugins6/pluginSettings/x264/3/PSP.json
53
 %{_libdir}/ADM_plugins6/pluginSettings/x264/3/veryFast.json
54
avidemux-ADM_VERSION.patch Deleted
23
 
1
@@ -1,21 +0,0 @@
2
---- avidemux/common/main.cpp.orig  2014-11-28 22:27:34.739989392 +0100
3
-+++ avidemux/common/main.cpp   2014-11-28 22:27:19.253254919 +0100
4
-@@ -137,7 +137,7 @@
5
- int startAvidemux(int argc, char *argv[])
6
- {
7
-     printf("*************************\n");
8
--    printf("  Avidemux v"ADM_VERSION);
9
-+    printf("  Avidemux v",ADM_VERSION);
10
- 
11
- #if defined( ADM_SUBVERSION )
12
- #define MKSTRING(x) x
13
---- avidemux/gtk/CMakeLists.txt.orig   2014-11-28 22:42:25.006820533 +0100
14
-+++ avidemux/gtk/CMakeLists.txt    2014-11-28 22:42:25.039819908 +0100
15
-@@ -34,6 +34,7 @@
16
- 
17
- SDLify(../common/main.cpp)
18
- ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_SUBVERSION=\"${ADM_SUBVERSION}\"")
19
-+ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_VERSION='\"${AVIDEMUX_VERSION}\"'")
20
- 
21
- ###########################################
22
- # Version Info
23
avidemux_2.6.11.tar.gz/avidemux_core/ffmpeg_package/ffmpeg-2.7.2.tar.bz2 Deleted
avidemux_2.6.11.tar.gz/avidemux/common/ADM_editor/include/ADM_edit.hxx -> avidemux_2.6.12.tar.gz/avidemux/common/ADM_editor/include/ADM_edit.hxx Changed
9
 
1
@@ -116,6 +116,7 @@
2
                     bool        updateImageTiming(_SEGMENT *seg,ADMImage *image);
3
                     // Need to get the image just before targetPts
4
                     bool        decodeTillPictureAtPts(uint64_t targetPts,ADMImage *image);
5
+                    bool        getFrameNumFromPtsOrBefore(_VIDEOS *v,uint64_t refTime,int &frameNumber);
6
 
7
 protected:
8
                                 /// Decode frame and on until frame is popped out of decoders
9
avidemux_2.6.11.tar.gz/avidemux/common/ADM_editor/src/ADM_edSearch.cpp -> avidemux_2.6.12.tar.gz/avidemux/common/ADM_editor/src/ADM_edSearch.cpp Changed
165
 
1
@@ -20,6 +20,9 @@
2
 #include "fourcc.h"
3
 #include "ADM_edit.hxx"
4
 #include "ADM_vidMisc.h"
5
+
6
+#define pivotPrintf(...) {}
7
+
8
 /**
9
     \fn getNKFramePTS
10
 */
11
@@ -216,6 +219,59 @@
12
     }
13
     return false;
14
 }
15
+/** 
16
+ * \fn getFrameNumberBeforePts
17
+ * \brief Search the framenumber that has a valid PTS = what's given or  before
18
+ *         it can be equal to refTime
19
+ * @param v
20
+ * @param refTime
21
+ * @param frameNumber
22
+ * @return 
23
+ */
24
+bool ADM_Composer::getFrameNumFromPtsOrBefore(_VIDEOS *v,uint64_t refTime,int &frameNumber)
25
+{
26
+    uint32_t nbFrame = v->_nb_video_frames;
27
+    uint64_t pts, dts;
28
+    uint32_t curFrame=nbFrame >> 1;
29
+    uint32_t splitMoval = curFrame >> 1;
30
+    pivotPrintf("Looking for frame with a pts   %s\n",ADM_us2plain(refTime));
31
+    // Try to find the frame that as the timestamp close enough to refTime, while being smaller
32
+    do 
33
+    {
34
+        // seems like the pts determination, not always works -> retry if necessary
35
+        bool worked;
36
+        do {
37
+                pts=ADM_NO_PTS;
38
+                worked = v->_aviheader->getPtsDts(curFrame,&pts,&dts);
39
+                if (worked && pts != ADM_NO_PTS) 
40
+                    break; // found                
41
+                curFrame--;
42
+                if (!curFrame)
43
+                {
44
+                        ADM_warning("The whole segment is corrupted. Abort the search");
45
+                        return false;
46
+                }
47
+        } while(true);
48
+        pivotPrintf("SplitMoval=%d\n",splitMoval);
49
+        if(pts==refTime)
50
+            break;
51
+        if (!splitMoval) 
52
+            break;        
53
+        pivotPrintf("Pivot time is %d, %s\n",curFrame,ADM_us2plain(pts));
54
+        if (pts >= refTime)
55
+                curFrame -= splitMoval;
56
+        else
57
+                curFrame += splitMoval;
58
+        splitMoval >>= 1;
59
+        pivotPrintf("Split=%d\n",splitMoval);        
60
+    } while(refTime != pts);
61
+
62
+    pivotPrintf("-Matching frame is %d, time is  %s\n",curFrame,ADM_us2plain(pts));
63
+    if (pts > refTime && curFrame)
64
+            curFrame--;
65
+    frameNumber=curFrame;
66
+    return true;
67
+}
68
 /**
69
     \fn searchPreviousKeyFrameInRef
70
     \brief Search next key frame in ref video ref
71
@@ -224,57 +280,49 @@
72
     @param nkTime : Time of the ref video
73
 
74
 */
75
+
76
 bool ADM_Composer::searchPreviousKeyFrameInRef(int ref,uint64_t refTime,uint64_t *nkTime)
77
 {
78
     // Search for the current frame with quick search
79
     _VIDEOS *v = _segments.getRefVideo(ref);
80
     uint32_t nbFrame = v->_nb_video_frames;
81
     uint64_t pts, dts;
82
-   uint32_t curFrame=nbFrame >> 1;
83
-   uint32_t splitMoval = curFrame >> 1;
84
-   do {
85
-       // seems like the pts determination, not always works -> retry if necessary
86
-       bool worked;
87
-       do {
88
-           worked = v->_aviheader->getPtsDts(curFrame,&pts,&dts);
89
-           if (!worked || pts == ADM_NO_PTS) {
90
-               curFrame++;
91
-               if (curFrame == nbFrame) {
92
-                   ADM_warning("The whole segment is corrupted. Abort the search");
93
-                   return false;
94
-               }
95
-           } else
96
-               break;
97
-       } while(true);
98
-
99
-       if (splitMoval != 0) {
100
-           if (pts >= refTime)
101
-               curFrame -= splitMoval;
102
-           else
103
-               curFrame += splitMoval;
104
-           splitMoval >>= 1;
105
-       } else
106
-           break;
107
-   } while(refTime != pts);
108
+    int curFrame;
109
 
110
-   if (pts < refTime)
111
-       curFrame++;
112
-   for (int i=curFrame; i>=0; i--) 
113
-        {
114
-        uint64_t p;
115
-        uint32_t flags;
116
-                v->_aviheader->getFlags(i,&flags);
117
-                if(!(flags & AVI_KEY_FRAME)) continue;
118
-       if(!v->_aviheader->getPtsDts(i,&pts,&dts) || pts == ADM_NO_PTS)
119
-                {
120
-           ADM_warning("The keyframe with PTS less than %"PRIu32"ms is corrupted\n",refTime/1000);
121
-                        continue;
122
-                }
123
-                if(pts>=refTime) continue;
124
-       *nkTime = pts;
125
-       return true;
126
-   }
127
-    ADM_warning("Cannot find keyframe with PTS less than %"PRIu32"ms\n",refTime/1000);
128
+    // look up the frame we are starting from...
129
+    if(!getFrameNumFromPtsOrBefore(v,refTime,curFrame))
130
+    {
131
+        ADM_warning("Cannot locate the frame we are talking about at PTS=%s\n",ADM_us2plain(refTime));
132
+        return false;
133
+    }
134
+    // rewind until we find a keyframe
135
+    for (int i=curFrame; i>=0; i--) 
136
+    {
137
+    uint64_t p;
138
+    uint32_t flags;
139
+            v->_aviheader->getFlags(i,&flags);
140
+            if(!(flags & AVI_KEY_FRAME)) 
141
+                continue;
142
+            if(!v->_aviheader->getPtsDts(i,&pts,&dts))
143
+                continue;
144
+            if(pts == ADM_NO_PTS)
145
+                continue;
146
+            pivotPrintf("-- Previous Kf ! This one is %s\n",ADM_us2plain(pts));
147
+            pivotPrintf("-- Ref is %s\n",ADM_us2plain(refTime));
148
+            pivotPrintf("-- DTS %s\n",ADM_us2plain(dts));
149
+            if(pts>=refTime) 
150
+                continue;
151
+            *nkTime = pts; // ok found it
152
+#if 0            
153
+            for(int j=0;j<5;j++)
154
+            {
155
+                 if(!v->_aviheader->getPtsDts(i+j,&pts,&dts)) continue ;
156
+                 printf("Neighbor [%d] = %s\n",j,ADM_us2plain(pts));
157
+            }
158
+#endif            
159
+            return true;
160
+    }
161
+    ADM_warning("Cannot find keyframe with PTS less than %s\n",ADM_us2plain(refTime));
162
     return false;
163
 }
164
 
165
avidemux_2.6.11.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioPcm.cpp -> avidemux_2.6.12.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioPcm.cpp Changed
13
 
1
@@ -105,8 +105,9 @@
2
     {
3
         if(labs((int64_t)lastDts-(int64_t)packetBufferDts)>ADM_ALLOWED_DRIFT_US)
4
         {
5
-            printf("[Composer::getPCMPacket] Track %d,%"PRIx64" : drift %d, computed :%"PRIu64" got %"PRIu64"\n",
6
-                        (int)myTrackNumber,(uint64_t)trk,(int)(lastDts-packetBufferDts),lastDts,packetBufferDts);
7
+            ADM_info("[Composer::getPCMPacket] Track %d,%"PRIx64" : drift %d, computed :%s",
8
+                        (int)myTrackNumber,(uint64_t)trk,(int)(lastDts-packetBufferDts),ADM_us2plain(lastDts));
9
+            ADM_info(" got %s\n", ADM_us2plain(packetBufferDts));
10
             if(packetBufferDts<lastDts)
11
             {
12
                 printf("[Composer::getPCMPacket] Track %d:%"PRIx64" : Dropping packet %"PRIu32" last =%"PRIu32"\n",myTrackNumber,(uint64_t)trk,(uint32_t)(lastDts/1000),(uint32_t)(packetBufferDts/1000));
13
avidemux_2.6.11.tar.gz/avidemux/common/ADM_muxerGate/src/ADM_videoCopyFromAnnexB.cpp -> avidemux_2.6.12.tar.gz/avidemux/common/ADM_muxerGate/src/ADM_videoCopyFromAnnexB.cpp Changed
12
 
1
@@ -249,7 +249,9 @@
2
     context->pix_fmt = PIX_FMT_YUV420P;
3
     
4
     video_body->getExtraHeaderData(&extraLen,&extraData);
5
-    context->extradata=extraData;
6
+    // duplicate extraData with malloc scheme, it will be freed by the bitstream filter
7
+    context->extradata=(uint8_t*)av_malloc(extraLen);
8
+    memcpy( context->extradata,extraData,extraLen);
9
     context->extradata_size=extraLen;
10
     codecContext=(void *)context;
11
     
12
avidemux_2.6.11.tar.gz/avidemux/common/gui_savenew.cpp -> avidemux_2.6.12.tar.gz/avidemux/common/gui_savenew.cpp Changed
43
 
1
@@ -250,24 +250,27 @@
2
         uint32_t extraLen;
3
         video_body->getExtraHeaderData(&extraLen,&extra);
4
 //#warning do something better
5
-        ADM_videoStreamCopy *copy=NULL;
6
+        ADM_videoStreamCopy *copy=NULL;        
7
         if(isH264Compatible(info.fcc))
8
         {
9
+            bool isAnnexB=!extraLen; // this is not very good
10
             if(muxer->preferH264AnnexB())
11
             {
12
-                ADM_info("The video stream is H264\n");
13
+                ADM_info("The video stream is a flavor of H264\n");
14
                 ADM_info("The muxer prefers AnnexB H264 bitstream\n");
15
-                if(extraLen)
16
+                if(!isAnnexB)
17
                 {
18
                     // Need to do mp4 to annexB    
19
-                    ADM_info("Probably AnnexB bitstream\n");
20
+                    ADM_info("Input is probably MP4 bitstream\n");
21
                     copy=new ADM_videoStreamCopyToAnnexB(markerA,markerB);
22
                 }
23
             }else
24
             {
25
-                if(!extraLen)
26
+                ADM_info("The video stream is a flavor of H264\n");
27
+                ADM_info("The muxer prefers MP4 style H264 bitstream\n");
28
+                if(isAnnexB)
29
                 {
30
-                    ADM_info("Probably AnnexB bitstream\n");
31
+                    ADM_info("Input is probably AnnexB bitstream\n");
32
                     copy=new ADM_videoStreamCopyFromAnnexB(markerA,markerB);
33
                 }
34
             }
35
@@ -275,6 +278,7 @@
36
         
37
         if(!copy)
38
         {
39
+            ADM_info("Simple copy mode engaged\n");
40
             copy=new ADM_videoStreamCopy(markerA,markerB);
41
         }
42
         video=copy;
43
avidemux_2.6.11.tar.gz/avidemux/common/main.cpp -> avidemux_2.6.12.tar.gz/avidemux/common/main.cpp Changed
10
 
1
@@ -172,7 +172,7 @@
2
 int startAvidemux(int argc, char *argv[])
3
 {
4
     printf("*************************\n");
5
-    printf("  Avidemux v"ADM_VERSION);
6
+    printf("  Avidemux v%s", ADM_VERSION);
7
 
8
 #if defined( ADM_SUBVERSION )
9
 #define MKSTRING(x) x
10
avidemux_2.6.11.tar.gz/avidemux/gtk/ADM_userInterfaces/ADM_gui2/GUI_bindings.cpp -> avidemux_2.6.12.tar.gz/avidemux/gtk/ADM_userInterfaces/ADM_gui2/GUI_bindings.cpp Changed
16
 
1
@@ -1605,4 +1605,14 @@
2
 {
3
         return;
4
 }
5
+/**
6
+*/
7
+bool UI_setDisplayName(const char *name)
8
+{
9
+        return true;
10
+}
11
+bool         UI_reset(void)
12
+{
13
+        return true;
14
+}
15
 // EOF
16
avidemux_2.6.11.tar.gz/avidemux/gtk/ADM_userInterfaces/ADM_gui2/GUI_gtkRender.cpp -> avidemux_2.6.12.tar.gz/avidemux/gtk/ADM_userInterfaces/ADM_gui2/GUI_gtkRender.cpp Changed
10
 
1
@@ -112,7 +112,7 @@
2
        xinfo->display = 0;
3
        xinfo->window = getMainNSWindow();
4
 #else
5
-       xinfo->window = GDK_WINDOW_XID(win);
6
+       xinfo->systemWindowId = GDK_WINDOW_XID(win);
7
        xinfo->display = GDK_WINDOW_XDISPLAY(parentWin);
8
 #endif
9
 
10
avidemux_2.6.11.tar.gz/avidemux/gtk/CMakeLists.txt -> avidemux_2.6.12.tar.gz/avidemux/gtk/CMakeLists.txt Changed
11
 
1
@@ -33,7 +33,8 @@
2
 ADD_SUBDIRECTORY(ADM_userInterfaces ./ADM_userInterfacesGtk)
3
 
4
 SDLify(../common/main.cpp)
5
-ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_SUBVERSION=\"${ADM_SUBVERSION}\"")
6
+ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_SUBVERSION='\"${ADM_SUBVERSION}\"'")
7
+ADD_SOURCE_CFLAGS(../common/main.cpp "-DADM_VERSION='\"${AVIDEMUX_VERSION}\"'")
8
 
9
 ###########################################
10
 # Version Info
11
avidemux_2.6.11.tar.gz/avidemux/qt4/ADM_jobs/src/ADM_jobControl.cpp -> avidemux_2.6.12.tar.gz/avidemux/qt4/ADM_jobs/src/ADM_jobControl.cpp Changed
39
 
1
@@ -153,10 +153,10 @@
2
    ui.tableWidget->addAction(runNow);
3
    ui.tableWidget->addAction(setOk);
4
    ui.tableWidget->addAction(setReady);
5
-   connect(del,SIGNAL(activated()),this,    SLOT(del()));
6
-   connect(runNow,SIGNAL(activated()),this, SLOT(runNow()));
7
-   connect(setOk,SIGNAL(activated()),this,  SLOT(setOk()));
8
-   connect(setReady,SIGNAL(activated()),this,SLOT(setReady()));
9
+   connect(del,SIGNAL(triggered()),this,    SLOT(del()));
10
+   connect(runNow,SIGNAL(triggered()),this, SLOT(runNow()));
11
+   connect(setOk,SIGNAL(triggered()),this,  SLOT(setOk()));
12
+   connect(setReady,SIGNAL(triggered()),this,SLOT(setReady()));
13
 
14
    connect(ui.pushButtonQuit,SIGNAL(pressed()),this,SLOT(quit()));
15
    connect(ui.pushButtonRunAll,SIGNAL(pressed()),this,SLOT(runAllJob()));
16
@@ -263,18 +263,22 @@
17
 
18
 void jobWindow::del(void)
19
 {
20
+    ADM_info("Del\n");
21
     runAction(JobAction_delete);
22
 }
23
 void jobWindow::setOk(void)
24
 {
25
+    ADM_info("Ok\n");
26
     runAction(JobAction_setOk);
27
 }
28
 void jobWindow::setReady(void)
29
 {
30
+    ADM_info("setReady\n");
31
     runAction(JobAction_setReady);
32
 }
33
 void jobWindow::runNow(void)
34
 {
35
+    ADM_info("runNow\n");
36
     runAction(JobAction_runNow);
37
 }
38
  
39
avidemux_2.6.11.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp -> avidemux_2.6.12.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp Changed
28
 
1
@@ -18,6 +18,7 @@
2
 #include <QKeyEvent>
3
 #include <QGraphicsView>
4
 #include <QtCore/QDir>
5
+#include <QMessageBox>
6
 #include "ADM_cpp.h"
7
 #define MENU_DECLARE
8
 #include "Q_gui2.h"
9
@@ -928,7 +929,17 @@
10
 */
11
 static void FatalFunctionQt(const char *title, const char *info)
12
 {
13
-   GUI_Info_HIG(ADM_LOG_IMPORTANT, title, info);
14
+    printf("Crash Dump for %s\n",title);
15
+    printf("%s\n",info);
16
+    fflush(stdout);
17
+    
18
+    QMessageBox msgBox;
19
+    msgBox.setText(title);
20
+    msgBox.setInformativeText(QT_TR_NOOP("The application has encountered a fatal problem\nThe current editing has been saved and will be reloaded at next start"));
21
+    msgBox.setDetailedText(info);
22
+    msgBox.setIcon(QMessageBox::Critical);
23
+    msgBox.exec();
24
+    abort();
25
 }
26
 
27
 /**
28
avidemux_2.6.11.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/file_qt4.cpp -> avidemux_2.6.12.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/file_qt4.cpp Changed
10
 
1
@@ -84,7 +84,7 @@
2
                                         label,  // caption
3
                                         str,    // folder
4
                                         filterFile,   // filter
5
-                                        NULL);   // selected filter
6
+                                        NULL,QFileDialog::DontConfirmOverwrite);   // selected filter
7
                                         
8
                 
9
        if (fileName.isNull() ) return;
10
avidemux_2.6.11.tar.gz/avidemux/qt4/i18n/avidemux_es.ts -> avidemux_2.6.12.tar.gz/avidemux/qt4/i18n/avidemux_es.ts Changed
201
 
1
@@ -13,12 +13,11 @@
2
     </message>
3
     <message>
4
         <source>MPEG-2 requant</source>
5
-        <translation type="obsolete">Cuantizador MPEG</translation>
6
+        <translation type="obsolete">recuantizar MPEG-2</translation>
7
     </message>
8
     <message>
9
         <source>dummy</source>
10
-        <translation type="obsolete">
11
-            </translation>
12
+        <translation type="obsolete">vacio</translation>
13
     </message>
14
     <message>
15
         <source>Copy</source>
16
@@ -30,8 +29,7 @@
17
     </message>
18
     <message>
19
         <source>Dummy</source>
20
-        <translation type="obsolete">
21
-            </translation>
22
+        <translation type="obsolete">Vacio</translation>
23
     </message>
24
     <message>
25
         <source>None</source>
26
@@ -56,16 +54,16 @@
27
     <message>
28
         <source>The beginning frame is not a key frame.
29
 Please move the A marker.</source>
30
-        <translation type="obsolete">La imagen inicial no es un Imagen-Clave
31
+        <translation type="obsolete">La imagen inicial no es una Imagen-Clave
32
 Desplace el marcador A.</translation>
33
     </message>
34
     <message>
35
         <source>_Use systray while encoding</source>
36
-        <translation type="obsolete">Minimizar en el tray al codificar</translation>
37
+        <translation type="obsolete">_Minimizar al codificar</translation>
38
     </message>
39
     <message>
40
         <source>_Accept non-standard audio frequency for DVD</source>
41
-        <translation type="obsolete">Permitir frecuencia de sonido no estándar para DVD</translation>
42
+        <translation type="obsolete">_Permitir frecuencia de sonido no estándar para DVD</translation>
43
     </message>
44
     <message>
45
         <source>Create _OpenDML files</source>
46
@@ -73,27 +71,27 @@
47
     </message>
48
     <message>
49
         <source>Automatically _index MPEG files</source>
50
-        <translation type="obsolete">Indexar automáticamente archivos MPEG</translation>
51
+        <translation type="obsolete">_Indexar automáticamente archivos MPEG</translation>
52
     </message>
53
     <message>
54
         <source>Automatically _swap A and B if A&gt;B</source>
55
-        <translation type="obsolete">Indexar automáticamente archivos MPEG</translation>
56
+        <translation type="obsolete">Intercambiar _automaticamente A y B si A&gt;B</translation>
57
     </message>
58
     <message>
59
         <source>_Disable NUV audio sync</source>
60
-        <translation type="obsolete">Desactivar sincronización de audio NUV</translation>
61
+        <translation type="obsolete">_Desactivar sincronización de audio NUV</translation>
62
     </message>
63
     <message>
64
         <source>Automatically _build VBR map</source>
65
-        <translation type="obsolete">Construir automáticamente mapa VBR</translation>
66
+        <translation type="obsolete">_Construir automáticamente mapa VBR</translation>
67
     </message>
68
     <message>
69
         <source>Automatically _rebuild index</source>
70
-        <translation type="obsolete">Reconstruir automáticamente el índice</translation>
71
+        <translation type="obsolete">_Reconstruir automáticamente el índice</translation>
72
     </message>
73
     <message>
74
         <source>Automatically remove _packed bitstream</source>
75
-        <translation type="obsolete">Eliminar automáticamente el empaquetado bitstream</translation>
76
+        <translation type="obsolete">Eliminar automáticamente el em_paquetado bitstream</translation>
77
     </message>
78
     <message>
79
         <source>SIMD</source>
80
@@ -137,11 +135,11 @@
81
     </message>
82
     <message>
83
         <source>_lavc threads:</source>
84
-        <translation type="obsolete">Procesos Xvid:</translation>
85
+        <translation type="obsolete">Hilos _lavc:</translation>
86
     </message>
87
     <message>
88
         <source>Multi-threading</source>
89
-        <translation type="obsolete">Multi-tarea</translation>
90
+        <translation type="obsolete">Multi-hilo</translation>
91
     </message>
92
     <message>
93
         <source>Above normal</source>
94
@@ -157,15 +155,15 @@
95
     </message>
96
     <message>
97
         <source>_Encoding priority:</source>
98
-        <translation type="obsolete">Prioridad de codificación:</translation>
99
+        <translation type="obsolete">_Prioridad de codificación:</translation>
100
     </message>
101
     <message>
102
         <source>_Indexing/unpacking priority:</source>
103
-        <translation type="obsolete">Prioridad de Indexado/descompresión:</translation>
104
+        <translation type="obsolete">Prioridad de _Indexado/descompresión:</translation>
105
     </message>
106
     <message>
107
         <source>_Playback priority:</source>
108
-        <translation type="obsolete">Prioridad de reproducción:</translation>
109
+        <translation type="obsolete">Prioridad de _reproducción:</translation>
110
     </message>
111
     <message>
112
         <source>Prioritisation</source>
113
@@ -173,7 +171,7 @@
114
     </message>
115
     <message>
116
         <source>_Use alternative tag for MP3 in .mp4</source>
117
-        <translation type="obsolete">Usar un tag alternativo para MP3 en .mp4</translation>
118
+        <translation type="obsolete">_Usar tag alternativo para MP3 en .mp4</translation>
119
     </message>
120
     <message>
121
         <source>XVideo (best)</source>
122
@@ -185,7 +183,7 @@
123
     </message>
124
     <message>
125
         <source>Video _display:</source>
126
-        <translation type="obsolete">Bitrate vídeo:</translation>
127
+        <translation type="obsolete">Mostrar _Video:</translation>
128
     </message>
129
     <message>
130
         <source>No alerts</source>
131
@@ -201,7 +199,7 @@
132
     </message>
133
     <message>
134
         <source>_Message level:</source>
135
-        <translation type="obsolete">Nivel de mensaje:</translation>
136
+        <translation type="obsolete">Nivel de _mensaje:</translation>
137
     </message>
138
     <message>
139
         <source>Master</source>
140
@@ -209,11 +207,11 @@
141
     </message>
142
     <message>
143
         <source>_Volume control:</source>
144
-        <translation type="obsolete">Control de volumen:</translation>
145
+        <translation type="obsolete">Control de _Volumen:</translation>
146
     </message>
147
     <message>
148
         <source>No downmixing</source>
149
-        <translation type="obsolete">Sin downmixing (multicanal)</translation>
150
+        <translation type="obsolete">Sin downmixing</translation>
151
     </message>
152
     <message>
153
         <source>Pro Logic</source>
154
@@ -225,7 +223,7 @@
155
     </message>
156
     <message>
157
         <source>_Local playback downmixing:</source>
158
-        <translation type="obsolete">Downmixing de reproducción Local:</translation>
159
+        <translation type="obsolete">Downmixing de reproducción _Local:</translation>
160
     </message>
161
     <message>
162
         <source>De_ringing</source>
163
@@ -304,7 +302,7 @@
164
     </message>
165
     <message>
166
         <source>Timecode:</source>
167
-        <translation type="obsolete">Marca de tiempo:</translation>
168
+        <translation type="obsolete">Marcador de tiempo:</translation>
169
     </message>
170
     <message>
171
         <source>_Dynamic range compression</source>
172
@@ -901,7 +899,7 @@
173
     </message>
174
     <message>
175
         <source>Marker A &gt; B</source>
176
-        <translation type="obsolete">Marcador A &gt; B</translation>
177
+        <translation type="obsolete">Marcadordor A &gt; B</translation>
178
     </message>
179
     <message>
180
         <source>Cannot copy.</source>
181
@@ -2140,8 +2138,7 @@
182
     </message>
183
     <message>
184
         <source>Smart Copy</source>
185
-        <translation type="obsolete">
186
-            </translation>
187
+        <translation type="obsolete">Copia Inteligente</translation>
188
     </message>
189
     <message>
190
         <source>Trouble initializing audio device</source>
191
@@ -4262,7 +4259,7 @@
192
     </message>
193
     <message>
194
         <source>Timecode:</source>
195
-        <translation type="unfinished">Marca de tiempo:</translation>
196
+        <translation type="unfinished">Marcador de tiempo:</translation>
197
     </message>
198
     <message>
199
         <source>0/0</source>
200
@@ -5640,35 +5637,35 @@
201
avidemux_2.6.11.tar.gz/avidemux/winInstaller/avidemux_crossQt5.nsi -> avidemux_2.6.12.tar.gz/avidemux/winInstaller/avidemux_crossQt5.nsi Changed
14
 
1
@@ -588,6 +588,12 @@
2
        SetOutPath $INSTDIR\plugins\muxers
3
        ${File} ${ROOT_FOLDER}/plugins/muxers/libADM_mx_raw.dll
4
    ${MementoSectionEnd}
5
+   ${MementoSection} "Raw Video" SecMuxWebm
6
+       SectionIn 1 2
7
+       SetOverwrite on
8
+       SetOutPath $INSTDIR\plugins\muxers
9
+       ${File} ${ROOT_FOLDER}/plugins/muxers/libADM_mx_Webm.dll
10
+   ${MementoSectionEnd}
11
 SectionGroupEnd
12
 SectionGroup "Script Engines" SecGrpScriptEngine
13
    #${MementoSection} "QtScript" SecScriptQt
14
avidemux_2.6.11.tar.gz/avidemux_core/ADM_core/include/ADM_crashdump_mingw.h -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_core/include/ADM_crashdump_mingw.h Changed
27
 
1
@@ -1,17 +1,11 @@
2
-#if defined(__MINGW32__) && !defined ADM_CRASHDUMP_MINGW_H
3
-#define ADM_CRASHDUMP_MINGW_H
4
+/**
5
+ * \file ADM_crashdump_mingw
6
+ * \brief Catch low level error, mingw version
7
+ */
8
+#if defined(__MINGW32__) 
9
 
10
-#include <windows.h>
11
-#include <excpt.h>
12
-
13
-#if defined(_WIN64)
14
-ADM_CORE6_EXPORT LONG WINAPI ExceptionFilter(struct _EXCEPTION_POINTERS *exceptionInfo);
15
-#define installSigHandler() SetUnhandledExceptionFilter(ExceptionFilter)
16
-#define uninstallSigHandler()
17
-#else
18
-ADM_CORE6_EXPORT EXCEPTION_DISPOSITION ExceptionHandler(struct _EXCEPTION_RECORD *exceptionRecord, void *establisherFrame, struct _CONTEXT *contextRecord, void *dispatcherContext);
19
-#define installSigHandler() __try1(ExceptionHandler)
20
-#define uninstallSigHandler() __except1
21
-#endif
22
+#pragma once
23
+ADM_CORE6_EXPORT void installSigHandler(void);
24
+ADM_CORE6_EXPORT void uninstallSigHandler(void);
25
 
26
 #endif
27
avidemux_2.6.11.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_mingw.cpp -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_mingw.cpp Changed
123
 
1
@@ -13,6 +13,8 @@
2
  *   (at your option) any later version.                                   *
3
  *                                                                         *
4
  ***************************************************************************/
5
+#include <windows.h>
6
+#include <excpt.h>
7
 
8
 #include "ADM_crashdump.h"
9
 #include <stdio.h>
10
@@ -20,8 +22,30 @@
11
 #include <imagehlp.h>
12
 #include <cxxabi.h>
13
 
14
+
15
+static LONG WINAPI ExceptionFilter(struct _EXCEPTION_POINTERS *exceptionInfo);
16
 static ADM_saveFunction *mysaveFunction = NULL;
17
 static ADM_fatalFunction *myFatalFunction = NULL;
18
+
19
+
20
+/**
21
+ * \fn installSigHandler
22
+ * \brief add hook to catch exception (null pointers etc...)
23
+ */
24
+void installSigHandler(void)
25
+{    
26
+    SetUnhandledExceptionFilter(ExceptionFilter);
27
+}
28
+/**
29
+ * \fn uninstallSigHandler
30
+ * \brief
31
+ */
32
+void uninstallSigHandler(void)
33
+{
34
+    
35
+}
36
+
37
+
38
 /**
39
  * 
40
  * @param save
41
@@ -225,7 +249,7 @@
42
    RtlCaptureContext_* contextFunc = (RtlCaptureContext_*)GetProcAddress(hinstLib, "RtlCaptureContext");
43
    STACKFRAME frame;
44
    CONTEXT context;
45
-   int limit = 50;
46
+   int limit = 70;
47
    DWORD machineType;
48
 
49
    memset(&frame, 0, sizeof(STACKFRAME));
50
@@ -267,7 +291,7 @@
51
  * @param exceptionRecord
52
  * @param contextRecord
53
  */
54
-void HandleException(struct _EXCEPTION_RECORD *exceptionRecord, struct _CONTEXT *contextRecord)
55
+void HandleException(const char *message,struct _EXCEPTION_RECORD *exceptionRecord, struct _CONTEXT *contextRecord)
56
 {
57
     std::string s;
58
    fflush(stderr);
59
@@ -293,12 +317,21 @@
60
    {
61
        s+=DumpExceptionInfo(process, exceptionRecord, contextRecord);
62
    }
63
+        fflush(stderr);
64
+   fflush(stdout); 
65
 
66
    s+=DumpBackTrace(process);
67
+        fflush(stderr);
68
+   fflush(stdout); 
69
+        
70
+        const char *title;
71
+        if(!message) title="Crash";
72
+            else     title=message;
73
         if (myFatalFunction)
74
-       myFatalFunction("Crash", s.c_str());
75
+       myFatalFunction(title, s.c_str());
76
    SymCleanup(process);
77
-
78
+        fflush(stderr);
79
+   fflush(stdout); 
80
    exit(1);
81
 }
82
 /**
83
@@ -311,7 +344,7 @@
84
  */
85
 EXCEPTION_DISPOSITION ExceptionHandler(struct _EXCEPTION_RECORD *exceptionRecord, void *establisherFrame, struct _CONTEXT *contextRecord, void *dispatcherContext)
86
 {
87
-   HandleException(exceptionRecord, contextRecord);
88
+   HandleException("ExceptionHandler",exceptionRecord, contextRecord);
89
 }
90
 /**
91
  * 
92
@@ -320,8 +353,20 @@
93
  */
94
 LONG WINAPI ExceptionFilter(struct _EXCEPTION_POINTERS *exceptionInfo)
95
 {
96
-   HandleException(exceptionInfo->ExceptionRecord, exceptionInfo->ContextRecord);
97
+   HandleException("ExceptionFilter",exceptionInfo->ExceptionRecord, exceptionInfo->ContextRecord);
98
+        return EXCEPTION_CONTINUE_SEARCH;
99
+}
100
+/**
101
+ * 
102
+ * @param pExceptionInfo
103
+ * @return 
104
+ */
105
+LONG WINAPI TopLevelExceptionHandler(struct _EXCEPTION_POINTERS *exceptionInfo)
106
+{
107
+    HandleException("TopLevelExceptionHandler",exceptionInfo->ExceptionRecord, exceptionInfo->ContextRecord);
108
+    return EXCEPTION_CONTINUE_SEARCH;
109
 }
110
+
111
 /**
112
  * 
113
  * @param info
114
@@ -330,5 +375,7 @@
115
  */
116
 void ADM_backTrack(const char *info, int lineno, const char *file)
117
 {  
118
-   HandleException(NULL, NULL);
119
+    char title[2048]={0};
120
+        snprintf(title,2000,"%s at line %d, file %s",info,lineno,file);
121
+   HandleException(title,NULL, NULL);
122
 }
123
avidemux_2.6.11.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_unix.cpp -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_unix.cpp Changed
74
 
1
@@ -164,49 +164,42 @@
2
 {
3
    if(mysaveFunction)
4
        mysaveFunction();
5
-
6
-#if !defined(__HAIKU__)
7
-   char wholeStuff[2048];
8
-#if !defined(__sun__)
9
+#define MAX_BACKTRACK 30
10
+#if !defined(__HAIKU__) && !defined(__sun__)
11
+    char wholeStuff[2048];
12
     char buffer[4096];
13
     char in[2048];
14
-   void *stack[20];
15
+   void *stack[MAX_BACKTRACK+1];
16
    char **functions;
17
    int count, i;
18
-#endif
19
    wholeStuff[0]=0;
20
 
21
    printf("\n*********** BACKTRACK **************\n");
22
 
23
-#if !defined(__sun__)
24
-   count = backtrace(stack, 20);
25
+   count = backtrace(stack, MAX_BACKTRACK);
26
    functions = backtrace_symbols(stack, count);
27
-#endif
28
    sprintf(wholeStuff,"%s\n at line %d, file %s",info,lineno,file);
29
-#if !defined(__sun__)
30
-    int status;
31
-    size_t size=2047;
32
+        int status;
33
+        size_t size=2047;
34
     // it looks like that xxxx (functionName+0x***) XXXX
35
    for (i=0; i < count; i++)
36
    {
37
-        char *s=strstr(functions[i],"(");
38
-        buffer[0]=0;
39
-        if(s && strstr(s+1,"+"))
40
-        {
41
-            strcpy(in,s+1);
42
-            char *e=strstr(in,"+");
43
-            *e=0;
44
-            __cxxabiv1::__cxa_demangle(in,buffer,&size,&status);
45
-            if(status) strcpy(buffer,in);
46
-        }else
47
-            strcpy(buffer,functions[i]);
48
-        printf("%s:%d:<%s>:%d\n",functions[i],i,buffer,status);
49
-       strcat(wholeStuff,buffer);
50
-       strcat(wholeStuff,"\n");
51
-   }
52
-#else
53
-   backtrace(fileno(stdout));
54
-#endif
55
+            char *s=strstr(functions[i],"(");
56
+            buffer[0]=0;
57
+            if(s && strstr(s+1,"+"))
58
+            {
59
+                strcpy(in,s+1);
60
+                char *e=strstr(in,"+");
61
+                *e=0;
62
+                __cxxabiv1::__cxa_demangle(in,buffer,&size,&status);
63
+                if(status) 
64
+                    strcpy(buffer,in);
65
+            }else
66
+                strcpy(buffer,functions[i]);
67
+            printf("%s:%d:<%s>:%d\n",functions[i],i,buffer,status);
68
+            strcat(wholeStuff,buffer);
69
+            strcat(wholeStuff,"\n");
70
+        }
71
    printf("*********** BACKTRACK **************\n");
72
 
73
    if(myFatalFunction)
74
avidemux_2.6.11.tar.gz/avidemux_core/ADM_core/src/CMakeLists.txt -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_core/src/CMakeLists.txt Changed
12
 
1
@@ -44,8 +44,8 @@
2
 ENDIF (WIN32)
3
 
4
 if (HAVE_EXECINFO)
5
-   include_directories("${LIBEXECINFO_INCLUDE_DIR}")
6
-   target_link_libraries(ADM_core6 "${LIBEXECINFO_LIBRARY_DIR}")
7
+   include_directories("${EXECINFO_INCLUDE_DIR}")
8
+   target_link_libraries(ADM_core6 "${EXECINFO_LIBRARY_DIR}")
9
 endif (HAVE_EXECINFO)
10
 
11
 if (ADM_DEBUG AND FIND_LEAKS)
12
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreSocket/include/ADM_coreSocket.h -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreSocket/include/ADM_coreSocket.h Changed
12
 
1
@@ -15,6 +15,10 @@
2
 #ifndef ADM_CORE_SOCKET_H
3
 #define ADM_CORE_SOCKET_H
4
 
5
+#ifdef _WIN32
6
+#include "winsock2.h"
7
+#endif
8
+
9
 #include "ADM_coreSocket6_export.h"
10
 #include "ADM_threads.h"
11
 
12
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpau.h -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpau.h Changed
25
 
1
@@ -86,10 +86,11 @@
2
     static VdpStatus mixerCreate(uint32_t width,uint32_t height, VdpVideoMixer *mixer,bool deinterlace=false);
3
     static VdpStatus mixerDestroy(VdpVideoMixer mixer);
4
     static VdpStatus mixerRender(VdpVideoMixer mixer,VdpVideoSurface sourceSurface,VdpOutputSurface targetOutputSurface, uint32_t targetWidth, uint32_t targetHeight );
5
+    static VdpStatus mixerRenderWithCropping(VdpVideoMixer mixer,VdpVideoSurface sourceSurface,VdpOutputSurface targetOutputSurface, uint32_t targetWidth, uint32_t targetHeight ,
6
+                                            uint32_t sourceWidth, uint32_t sourceHeight);
7
     static VdpStatus mixerRenderWithPastAndFuture(bool topField,VdpVideoMixer mixer,
8
                                 VdpVideoSurface sourceSurface[3], // Past present future
9
-                                VdpOutputSurface targetOutputSurface,
10
-                                uint32_t targetWidth, uint32_t targetHeight );
11
+                                VdpOutputSurface targetOutputSurface, uint32_t targetWidth,     uint32_t targetHeight,uint32_t sourceWidth,     uint32_t sourceHeight );
12
     static VdpStatus mixerGetAttributesValue(VdpVideoMixer mixer,
13
                                 uint32_t attrCount,
14
                                 const  VdpVideoMixerAttribute *xkeys,
15
@@ -102,6 +103,9 @@
16
     {
17
                 return (x+15) & ~15;
18
     }
19
+    static VdpStatus outputSurfaceGetParameters(  VdpOutputSurface surface,    VdpRGBAFormat *  rgba_format,
20
+                            uint32_t *       width,    uint32_t *       height);
21
+    static VdpStatus surfaceGetParameters(VdpVideoSurface surface,VdpChromaType *chomra,uint32_t *w,uint32_t *h);
22
 
23
 #endif
24
 };
25
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpauInternal.h -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpauInternal.h Changed
11
 
1
@@ -57,6 +57,9 @@
2
     VdpVideoMixerGetAttributeValues   *mixerGetAttributesValue;
3
     VdpVideoMixerSetAttributeValues   *mixerSetAttributesValue;
4
 
5
+    VdpOutputSurfaceGetParameters     *mixerGetOutputSurfaceParameters;
6
+    VdpVideoSurfaceGetParameters      *mixerGetSurfaceParameters;
7
+    
8
     VdpPresentationQueueTargetCreateX11 *presentationQueueDisplayX11Create;
9
 }VdpFunctions;
10
 
11
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpau.cpp -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpau.cpp Changed
45
 
1
@@ -102,6 +102,8 @@
2
     GetMe(putBitsYV12OutputSurface,VDP_FUNC_ID_OUTPUT_SURFACE_PUT_BITS_Y_CB_CR);
3
     GetMe(putBitsCapsOutputSurface,VDP_FUNC_ID_OUTPUT_SURFACE_QUERY_PUT_BITS_Y_CB_CR_CAPABILITIES);
4
     GetMe(getBitsNativeOutputSurface,VDP_FUNC_ID_OUTPUT_SURFACE_GET_BITS_NATIVE);
5
+    
6
+    
7
 
8
     GetMe(presentationQueueDestroy,VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY);
9
     GetMe(presentationQueueCreate,VDP_FUNC_ID_PRESENTATION_QUEUE_CREATE);
10
@@ -119,7 +121,8 @@
11
 
12
     GetMe(mixerGetAttributesValue,VDP_FUNC_ID_VIDEO_MIXER_GET_ATTRIBUTE_VALUES);
13
     GetMe(mixerSetAttributesValue,VDP_FUNC_ID_VIDEO_MIXER_SET_ATTRIBUTE_VALUES);
14
-
15
+    GetMe(mixerGetOutputSurfaceParameters,VDP_FUNC_ID_OUTPUT_SURFACE_GET_PARAMETERS); ///
16
+    GetMe(mixerGetSurfaceParameters,VDP_FUNC_ID_VIDEO_SURFACE_GET_PARAMETERS); ///
17
     if(VDP_STATUS_OK!=ADM_coreVdpau::funcs.presentationQueueDisplayX11Create(ADM_coreVdpau::vdpDevice,x->systemWindowId,&queueX11))
18
     {
19
         ADM_warning("Cannot create X11 Presentation Queue\n");
20
@@ -335,6 +338,24 @@
21
      ( void * const *)ptr,
22
     pitches));
23
 }
24
+
25
+
26
+/**
27
+    \fn
28
+    \brief
29
+*/
30
+VdpStatus admVdpau::outputSurfaceGetParameters(  VdpOutputSurface surface,    VdpRGBAFormat *  rgba_format,
31
+                            uint32_t *       width,    uint32_t *       height)
32
+{
33
+    CHECK(ADM_coreVdpau::funcs.mixerGetOutputSurfaceParameters(surface,rgba_format,width,height));
34
+}
35
+/**
36
+ */
37
+VdpStatus admVdpau::surfaceGetParameters(VdpVideoSurface surface,VdpChromaType *chroma,uint32_t *w,uint32_t *h)
38
+{
39
+    CHECK(ADM_coreVdpau::funcs.mixerGetSurfaceParameters(surface,chroma,w,h));
40
+}
41
+
42
 /**
43
     \fn
44
     \brief
45
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpauMixer.cpp -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpauMixer.cpp Changed
143
 
1
@@ -15,11 +15,11 @@
2
 #include "ADM_default.h"
3
 #include "../include/ADM_coreVdpau.h"
4
 
5
-#ifdef USE_VDPAU
6
+#if defined(USE_VDPAU) 
7
 #include "../include/ADM_coreVdpauInternal.h"
8
 #include "ADM_dynamicLoading.h"
9
 
10
-#if 1
11
+#if 0
12
     #define aprintf ADM_info
13
 #else
14
     #define aprintf(...) {}
15
@@ -77,6 +77,7 @@
16
 uint32_t color=VDP_CHROMA_TYPE_420;
17
 void    *values[MIXER_NB_PARAM]={&width,&height,&color};
18
     int nbFeature=0;
19
+    ADM_info("Creating vdpauMixer with width=%d, height=%d color=%d\n",width,height,color);
20
     //features[nbFeature++]=VDP_VIDEO_MIXER_FEATURE_HIGH_QUALITY_SCALING_L5;
21
     if(deinterlace)
22
     {
23
@@ -131,6 +132,79 @@
24
                 NULL,                               // dest video Rec
25
                 0,NULL);                            // Layers
26
                 
27
+#if 0      
28
+  ADM_info("Target width=%d height=%d\n", targetWidth,targetHeight);
29
+  VdpRGBAFormat fmt;
30
+  VdpChromaType chroma;
31
+  uint32_t tw,th;
32
+  
33
+  if(VDP_STATUS_OK!=ADM_coreVdpau::funcs.mixerGetOutputSurfaceParameters(targetOutputSurface,&fmt,&tw,&th))
34
+  {
35
+      ADM_warning("VdpOutputSurfaceGetParameters failed\n");
36
+  }
37
+  ADM_info("output surface width=%d height=%d fmt=%d\n", tw,th,fmt);
38
+  if(VDP_STATUS_OK!=ADM_coreVdpau::funcs.mixerGetSurfaceParameters(sourceSurface,&chroma,&tw,&th))
39
+  {
40
+        ADM_warning("mixerGetSurfaceParameters failed\n");
41
+  }
42
+  ADM_info("input surface width=%d height=%d fmt=%d\n", tw,th,chroma);
43
+#endif
44
+  if(VDP_STATUS_OK!=e)
45
+    {
46
+        
47
+        ADM_warning("MixerRender  failed :%s\n",getErrorString(e));
48
+        
49
+    }
50
+    return e;
51
+}
52
+/**
53
+ * \fn mixerRenderWithCropping
54
+ * \brief Same as above but allow to take only top/left of the input image
55
+ * @param mixer
56
+ * @param sourceSurface
57
+ * @param targetOutputSurface
58
+ * @param targetWidth
59
+ * @param targetHeight
60
+ * @param sourceWidth
61
+ * @param sourceHeight
62
+ * @return 
63
+ */
64
+VdpStatus admVdpau::mixerRenderWithCropping(VdpVideoMixer mixer,
65
+                                VdpVideoSurface sourceSurface,
66
+                                VdpOutputSurface targetOutputSurface, 
67
+                                uint32_t targetWidth, 
68
+                                uint32_t targetHeight,uint32_t sourceWidth, uint32_t sourceHeight )
69
+{
70
+const VdpVideoSurface listOfInvalidSurface[1]={VDP_INVALID_HANDLE};
71
+
72
+    VdpRect rect;
73
+    rect.x0=rect.y0=0;
74
+    rect.x1=sourceWidth;
75
+    rect.y1=sourceHeight;
76
+#if 0
77
+    VdpChromaType sourceChroma;
78
+    uint32_t sourceW,sourceH;
79
+    ADM_coreVdpau::funcs.mixerGetSurfaceParameters(sourceSurface,&sourceChroma,&sourceW,&sourceH);
80
+    ADM_info("Source is %d %d x %d\n",sourceChroma,sourceW,sourceH);
81
+    VdpRGBAFormat rgb;
82
+    ADM_coreVdpau::funcs.mixerGetOutputSurfaceParameters(targetOutputSurface,&rgb,&sourceW,&sourceH);
83
+    ADM_info("Target is %d %d x %d\n",rgb,sourceW,sourceH);
84
+    ADM_info("Cropped to %d x %d ==> %d x %d\n",sourceWidth,sourceHeight,targetWidth,targetHeight);
85
+    ADM_info("Rect %d %d %d %d\n",rect.x0,rect.y0,rect.x1,rect.y1);
86
+#endif    
87
+      VdpStatus e=ADM_coreVdpau::funcs.mixerRender(mixer,
88
+                VDP_INVALID_HANDLE,NULL,    // Background
89
+                VDP_VIDEO_MIXER_PICTURE_STRUCTURE_FRAME,
90
+                
91
+                0,            listOfInvalidSurface, // Past...
92
+                sourceSurface,                      // current
93
+                0,            listOfInvalidSurface, // Future
94
+                &rect,                               // source RECT
95
+                targetOutputSurface,
96
+                NULL,                               // dest Rec
97
+                NULL,                               // dest video Rec
98
+                0,NULL);                            // Layers
99
+                
100
             
101
   if(VDP_STATUS_OK!=e)
102
     {
103
@@ -140,6 +214,7 @@
104
     }
105
     return e;
106
 }
107
+
108
 /**
109
     \fn mixerGetAttributesValue
110
 */
111
@@ -187,7 +262,9 @@
112
                                 VdpVideoSurface sourceSurface[3], // Past present future
113
                                 VdpOutputSurface targetOutputSurface, 
114
                                 uint32_t targetWidth, 
115
-                                uint32_t targetHeight )
116
+                                uint32_t targetHeight,
117
+                                uint32_t sourceWidth, 
118
+                                uint32_t sourceHeight        )
119
 {
120
     int nbPrev=2,nbNext=2;
121
     VdpVideoMixerPictureStructure fieldType=VDP_VIDEO_MIXER_PICTURE_STRUCTURE_TOP_FIELD;
122
@@ -198,6 +275,11 @@
123
     VdpVideoSurface future[2]={VDP_INVALID_HANDLE,VDP_INVALID_HANDLE};
124
     VdpVideoSurface present;
125
 
126
+    VdpRect rect;
127
+    rect.x0=rect.y0=0;
128
+    rect.x1=sourceWidth;
129
+    rect.y1=sourceHeight;
130
+    
131
     present=sourceSurface[1];
132
     int index=0;
133
     if(!topField) index=1;
134
@@ -224,7 +306,7 @@
135
                 nbPrev,       past, // Past...
136
                               present, // current
137
                 nbNext,       future, // Future
138
-                NULL,                               // source RECT
139
+                &rect,                               // source RECT
140
                 targetOutputSurface,
141
                 NULL,                               // dest Rec
142
                 NULL,                               // dest video Rec
143
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/include/ADM_ffmp43.h -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/include/ADM_ffmp43.h Changed
13
 
1
@@ -20,9 +20,11 @@
2
 #pragma once
3
 
4
 #include "ADM_coreVideoCodec6_export.h"
5
+typedef void (AV_FATAL_HANDLER)(const char *why,int fileno,const char *filewhereitcrashed);
6
 
7
 extern "C" {
8
 #include "libavcodec/avcodec.h"
9
+extern void av_setFatalHandler(AV_FATAL_HANDLER *func);
10
 }
11
 
12
 #include "ADM_codec.h"
13
avidemux_2.6.11.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_ffmp43.cpp -> avidemux_2.6.12.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_ffmp43.cpp Changed
27
 
1
@@ -616,6 +616,16 @@
2
 {
3
   void adm_lavLogCallback(void  *instance, int level, const char* fmt, va_list list);
4
 }
5
+
6
+
7
+extern "C" 
8
+{
9
+static  void ffFatalError(const char *what,int lineno, const char *filez)
10
+{
11
+        ADM_backTrack(what,lineno,filez);
12
+}
13
+
14
+}
15
 /**
16
     \fn ADM_lavInit
17
     \brief Init both lavcodec and lavformat
18
@@ -624,7 +634,7 @@
19
 {
20
     avcodec_register_all();
21
     av_log_set_callback(adm_lavLogCallback);
22
-
23
+    av_setFatalHandler(ffFatalError);
24
 #ifdef ADM_DEBUG
25
     av_log_set_level(AV_LOG_DEBUG);
26
 #endif
27
avidemux_2.6.12.tar.gz/avidemux_core/ffmpeg_package/ffmpeg-2.7.6.tar.bz2 Added
avidemux_2.6.12.tar.gz/avidemux_core/ffmpeg_package/patches/libavutil_avassert_h.patch Added
24
 
1
@@ -0,0 +1,22 @@
2
+--- libavutil/avassert.h.old   2016-01-31 00:43:51.000000000 +0100
3
++++ libavutil/avassert.h   2016-02-16 21:21:02.768117422 +0100
4
+@@ -30,14 +30,17 @@
5
+ #include <stdlib.h>
6
+ #include "avutil.h"
7
+ #include "log.h"
8
++extern void av_fatalHandler(const char *why,const char *file, int lineno);
9
++typedef void (AV_FATAL_HANDLER)(const char *why,int lineno, const char *file);
10
++
11
++extern void av_setFatalHandler(AV_FATAL_HANDLER *func);
12
+ 
13
+ /**
14
+  * assert() equivalent, that is always enabled.
15
+  */
16
+ #define av_assert0(cond) do {                                           \
17
+     if (!(cond)) {                                                      \
18
+-        av_log(NULL, AV_LOG_PANIC, "Assertion %s failed at %s:%d\n",    \
19
+-               AV_STRINGIFY(cond), __FILE__, __LINE__);                 \
20
++        av_fatalHandler( AV_STRINGIFY(cond),__FILE__,__LINE__);         \
21
+         abort();                                                        \
22
+     }                                                                   \
23
+ } while (0)
24
avidemux_2.6.12.tar.gz/avidemux_core/ffmpeg_package/patches/libavutil_log_c.patch Added
43
 
1
@@ -0,0 +1,41 @@
2
+--- libavutil/log.c.old    2016-01-31 00:43:51.000000000 +0100
3
++++ libavutil/log.c    2016-02-16 21:24:19.943656163 +0100
4
+@@ -39,6 +39,7 @@
5
+ #include "common.h"
6
+ #include "internal.h"
7
+ #include "log.h"
8
++#include "avassert.h" // MEANX
9
+ 
10
+ #if HAVE_PTHREADS
11
+ #include <pthread.h>
12
+@@ -121,7 +122,7 @@
13
+ 
14
+ #endif
15
+ static int use_color = -1;
16
+-
17
++static AV_FATAL_HANDLER *fatalHandler=NULL; // MEANX
18
+ static void check_color_terminal(void)
19
+ {
20
+ #if defined(_WIN32) && !defined(__MINGW32CE__) && HAVE_SETCONSOLETEXTATTRIBUTE
21
+@@ -430,7 +431,21 @@
22
+     missing_feature_sample(0, avc, msg, argument_list);
23
+     va_end(argument_list);
24
+ }
25
++// MEANX
26
+ 
27
++void av_fatalHandler(const char *why,const char *filez, int lineno)
28
++{
29
++char *cleartext[2048];
30
++        if(!fatalHandler)
31
++                printf("[CRASH] %s, file %s, lineno=%d\n",cleartext,filez,lineno);
32
++        else
33
++                (fatalHandler)(cleartext,lineno,filez);
34
++}
35
++void av_setFatalHandler(AV_FATAL_HANDLER *func)
36
++{
37
++        fatalHandler=func;
38
++}
39
++//
40
+ #ifdef TEST
41
+ // LCOV_EXCL_START
42
+ #include <string.h>
43
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_opus/ADM_opus.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_opus/ADM_opus.cpp Changed
10
 
1
@@ -80,7 +80,7 @@
2
 
3
 
4
     int err=opus_decode_float(opus_handle,inptr,nbIn,outptr,5760,false); //??
5
-    ADM_info("Incoming = %d bytes, out samples=%d\n",nbIn,err);
6
+    //ADM_info("Incoming = %d bytes, out samples=%d\n",nbIn,err);
7
     if(err>0)
8
     {
9
         *nbOut=err*wavHeader.channels;
10
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_ebml.h -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_ebml.h Changed
51
 
1
@@ -39,11 +39,12 @@
2
              uint32_t readu32(void);  
3
              int32_t  reads32(void);
4
         /***********************************/
5
-        virtual     uint8_t  readBin(uint8_t *whereto,uint32_t len)=0;
6
-        virtual     uint8_t  skip(uint32_t nbBytes)=0;
7
+        virtual     bool     readBin(uint8_t *whereto,uint32_t len)=0;
8
+        virtual     bool     skip(uint32_t nbBytes)=0;
9
         virtual     uint64_t tell(void)=0;
10
 };
11
-
12
+/**
13
+ */
14
 class ADM_ebml_file : public ADM_ebml
15
 {
16
   protected:
17
@@ -52,21 +53,21 @@
18
                 uint64_t  _size;
19
                 uint32_t  _close;
20
   public: 
21
-                            ADM_ebml_file();
22
-                            ADM_ebml_file(ADM_ebml_file *father,uint64_t size);
23
-                            ~ADM_ebml_file();
24
-                    uint8_t open(const char *fn);
25
+                              ADM_ebml_file();
26
+                              ADM_ebml_file(ADM_ebml_file *father,uint64_t size);
27
+                              ~ADM_ebml_file();
28
+                    bool      open(const char *fn);
29
        
30
-        virtual     uint8_t   readBin(uint8_t *whereto,uint32_t len);
31
-        virtual     uint8_t   skip(uint32_t nbBytes);
32
+        virtual     bool      readBin(uint8_t *whereto,uint32_t len);
33
+        virtual     bool      skip(uint32_t nbBytes);
34
                     uint64_t  tell(void);
35
-                    uint8_t   seek(uint64_t pos);
36
-                    uint8_t   finished(void);
37
+                    bool      seek(uint64_t pos);
38
+                    bool      finished(void);
39
                     uint64_t  getFileSize(void) {return _size;};
40
-                    uint8_t   find(ADM_MKV_SEARCHTYPE search,
41
-                                        MKV_ELEM_ID  prim,MKV_ELEM_ID second,uint64_t *len,uint32_t rewind=1);
42
-                    uint8_t   simplefind(MKV_ELEM_ID  prim,uint64_t *len,uint32_t rewind=1);
43
-                    uint64_t remaining(void);
44
+                    bool      find(ADM_MKV_SEARCHTYPE search,
45
+                                        MKV_ELEM_ID  prim,MKV_ELEM_ID second,uint64_t *len,bool rewind=1);
46
+                    bool      simplefind(MKV_ELEM_ID  prim,uint64_t *len,bool rewind=true);
47
+                    uint64_t  remaining(void);
48
 };
49
 
50
 void bigHexPrint(uint64_t v);
51
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.cpp Changed
201
 
1
@@ -63,14 +63,23 @@
2
             _timeBase=timeBase/1000; // We work in us
3
         }
4
   }
5
-  /* Now find tracks */
6
-  if(!ebml.find(ADM_MKV_SECONDARY,MKV_SEGMENT,MKV_TRACKS,&alen))
7
+  /* --*/
8
+  if(!ebml.simplefind(MKV_SEGMENT,&len,true))
9
   {
10
-     printf("[MKV] Cannot find tracks\n");
11
-    return 0;
12
+      printf("[MKV] Cannot find Segment\n");      
13
+      return false;
14
+  }
15
+  _segmentPosition=ebml.tell();
16
+  printf("[MKV] found Segment at 0x%llx\n",(uint64_t)_segmentPosition);
17
+   /* Now find tracks */
18
+  if(ebml.find(ADM_MKV_SECONDARY,MKV_SEGMENT,MKV_SEEK_HEAD,&alen))
19
+  {
20
+       ADM_ebml_file seekHead( &ebml,alen);
21
+       readSeekHead(&seekHead);       
22
   }
23
+  /* Now find tracks */
24
   /* And analyze them */
25
-  if(!analyzeTracks(&ebml,alen))
26
+  if(!analyzeTracks(&ebml))
27
   {
28
       printf("[MKV] incorrect tracks\n");
29
   }
30
@@ -80,13 +89,13 @@
31
     printf("[MKV] No video\n");
32
     return 0;
33
   }
34
+  readCue(&ebml);
35
   printf("[MKV] Indexing clusters\n");
36
   if(!indexClusters(&ebml))
37
   {
38
     printf("[MKV] Cluster indexing failed\n");
39
     return 0;
40
-  }
41
-  readCue(&ebml);
42
+  }  
43
   printf("[MKV]Found %u clusters\n",_clusters.size());
44
   printf("[MKV] Indexing video\n");
45
     if(!videoIndexer(&ebml))
46
@@ -343,18 +352,62 @@
47
  return 1;
48
 
49
 }
50
+
51
+/**
52
+ * \fn goBeforeAtomAtPosition
53
+ * \brief check and position the read at the payload for atom searchedId, return payloadSize in outputLen
54
+ */
55
+bool mkvHeader::goBeforeAtomAtPosition(ADM_ebml_file *parser, uint64_t position,uint64_t &outputLen, MKV_ELEM_ID searchedId,const char *txt)
56
+{
57
+    uint64_t id,len;
58
+    ADM_MKV_TYPE type;
59
+    const char *ss;
60
+
61
+    if(!position)
62
+    {
63
+        ADM_warning("No offset available for %s\n",txt);
64
+        return false;
65
+    }
66
+    parser->seek(position);
67
+    if(!parser->readElemId(&id,&len))
68
+    {
69
+        ADM_warning("No element  available for %s\n",txt);
70
+        return false;
71
+    }
72
+    if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
73
+    {
74
+      printf("[MKV/SeekHead] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
75
+      return false;
76
+    }
77
+    if(id!=searchedId)
78
+    {
79
+        printf("Found %s instead of %s, ignored \n",ss,txt);
80
+        return false;
81
+    }    
82
+    outputLen=len;
83
+    return true;
84
+}
85
+
86
 /**
87
     \fn analyzeTracks
88
     \brief Read Tracks Info.
89
 */
90
-uint8_t mkvHeader::analyzeTracks(void *head,uint32_t headlen)
91
+bool mkvHeader::analyzeTracks(ADM_ebml_file *parser)
92
 {
93
-  uint64_t id,len;
94
-  ADM_MKV_TYPE type;
95
+  uint64_t len;
96
+  uint64_t id;
97
   const char *ss;
98
- ADM_ebml_file father( (ADM_ebml_file *)head,headlen);
99
- while(!father.finished())
100
- {
101
+  ADM_MKV_TYPE type;
102
+  
103
+  if(!goBeforeAtomAtPosition(parser, _trackPosition,len, MKV_TRACKS,"MKV_TRACKS"))
104
+  {
105
+      ADM_warning("Cannot go to the TRACKS atom\n");
106
+      return false;
107
+  }
108
+  
109
+    ADM_ebml_file father( parser,len);
110
+    while(!father.finished())
111
+    {
112
       father.readElemId(&id,&len);
113
       if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
114
       {
115
@@ -370,7 +423,7 @@
116
         continue;
117
       }
118
       if(!analyzeOneTrack(&father,len)) return 0;
119
- }
120
+    }
121
  return 1;
122
 }
123
 
124
@@ -543,6 +596,9 @@
125
   _audioStreams=NULL;
126
   
127
   readBuffer=NULL;
128
+  _cuePosition=0;
129
+  _segmentPosition=0;
130
+  _trackPosition=0;
131
 }
132
 /**
133
     \fn ~mkvHeader
134
@@ -765,8 +821,76 @@
135
     return true;
136
 
137
 }
138
-
139
-
140
+/**
141
+ * \fn readSeekHead
142
+ * \bried used to locate the interesting parts of the file
143
+ */
144
+bool    mkvHeader::readSeekHead(ADM_ebml_file *body)
145
+{
146
+    uint64_t vlen,len;
147
+    ADM_info("Parsing SeekHead\n");
148
+    while(!body->finished())
149
+    {
150
+        if(!body->simplefind(MKV_SEEK,&vlen,false))
151
+             break;         
152
+        ADM_ebml_file item(body,vlen);              
153
+        uint64_t id;
154
+        ADM_MKV_TYPE type;
155
+        const char *ss;
156
+
157
+        item.readElemId(&id,&len);
158
+        if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
159
+        {
160
+          printf("[MKV/SeekHead] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
161
+          return false;
162
+        }
163
+        if(id!=MKV_ID)
164
+        {
165
+          printf("Found %s in CUES, ignored \n",ss);
166
+          item.skip(len);
167
+          return false;
168
+        }
169
+        // read id
170
+        uint64_t t=item.readEBMCode_Full();
171
+        if(!ADM_searchMkvTag( (MKV_ELEM_ID)t,&ss,&type))
172
+        {
173
+          printf("[MKV/SeekHead] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
174
+          return false;
175
+        }
176
+        ADM_info("Found entry for %s\n",ss);
177
+        item.readElemId(&id,&len);
178
+        if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
179
+        {
180
+          printf("[MKV/SeekHead] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
181
+          return false;
182
+        }
183
+        if(id!=MKV_SEEK_POSITION)
184
+        {
185
+          printf("Found %s in CUES, ignored \n",ss);
186
+          item.skip(len);
187
+          return false;
188
+        }
189
+        uint64_t position=item.readUnsignedInt(len);
190
+        switch(t)
191
+        {
192
+            case MKV_CUES:
193
+                    _cuePosition=position+_segmentPosition;
194
+                    ADM_info("   at position  0x%llx\n",_cuePosition);
195
+                    break;
196
+            case MKV_TRACKS:
197
+                    _trackPosition=position+_segmentPosition;;
198
+                    ADM_info("   at position at 0x%llx\n",_trackPosition);
199
+            case MKV_INFO:
200
+            default:
201
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.h -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.h Changed
39
 
1
@@ -157,13 +157,18 @@
2
     uint32_t                _nbAudioTrack;
3
     uint32_t                _currentAudioTrack;
4
     uint32_t                _reordered;
5
+    //
6
+    uint64_t                _segmentPosition;
7
+    uint64_t                _cuePosition;
8
+    uint64_t                _trackPosition;
9
 
10
     uint8_t                 checkHeader(void *head,uint32_t headlen);
11
-    uint8_t                 analyzeTracks(void *head,uint32_t headlen);
12
+    bool                    analyzeTracks(ADM_ebml_file *parser);
13
     uint8_t                 analyzeOneTrack(void *head,uint32_t headlen);
14
     uint8_t                 walk(void *seed);
15
     uint64_t                walkAndFind(void *seed,MKV_ELEM_ID searched);
16
     int                     searchTrackFromTid(uint32_t tid);
17
+    bool                    readSeekHead(ADM_ebml_file *body);
18
     //
19
     uint8_t                 reformatVorbisHeader(mkvTrak *trk);
20
     // Indexers
21
@@ -171,7 +176,7 @@
22
     uint8_t                 addIndexEntry(uint32_t track,ADM_ebml_file *parser,uint64_t where, uint32_t size,uint32_t flags,
23
                                             uint32_t timecodeMS);
24
     uint8_t                 videoIndexer(ADM_ebml_file *parser);
25
-    uint8_t                 readCue(ADM_ebml_file *parser);
26
+    bool                    readCue(ADM_ebml_file *parser);
27
     uint8_t                 indexClusters(ADM_ebml_file *parser);
28
     uint8_t                 indexBlock(ADM_ebml_file *parser,uint32_t count,uint32_t timecodeMS);
29
 
30
@@ -182,6 +187,8 @@
31
     bool                    ComputeDeltaAndCheckBFrames(uint32_t *minDeltaX, uint32_t *maxDeltaX, bool *bFramePresent);
32
     bool                    updateFlagsWithCue(void); // in case we can trust it, update KEY_FRAME_FLAGS
33
     bool                    dumpVideoIndex(int maxIndex);
34
+    bool                    goBeforeAtomAtPosition(ADM_ebml_file *parser, uint64_t position,uint64_t &outputLen, 
35
+                                                MKV_ELEM_ID searchedId,const char *txt);
36
   public:
37
 
38
 
39
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvIndexer.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvIndexer.cpp Changed
201
 
1
@@ -178,6 +178,16 @@
2
         }
3
         return -1;
4
 }
5
+
6
+static bool canRederiveFrameType(uint32_t fcc)
7
+{
8
+    if(isMpeg4Compatible(fcc)) return true;
9
+    if(isH264Compatible(fcc)) return true;
10
+    if(isMpeg12Compatible(fcc)) return true;
11
+    return false;
12
+    
13
+}
14
+
15
 /**
16
     \fn addVideoEntry
17
     \brief add an entry to the video index
18
@@ -211,7 +221,7 @@
19
   // For the 2 most common cases : mp4 & h264.
20
   // Hackish, we already read the 3 bytes header
21
   // But they are already taken into account in the size part 
22
-  if(!track) // Track 0 is video
23
+  if(!track && canRederiveFrameType(_videostream.fccHandler)) // Track 0 is video
24
   {
25
     if( isMpeg4Compatible(_videostream.fccHandler))
26
     {
27
@@ -322,93 +332,98 @@
28
   \brief Update index with cue content
29
 
30
 */
31
-uint8_t                 mkvHeader::readCue(ADM_ebml_file *parser)
32
+bool     mkvHeader::readCue(ADM_ebml_file *parser)
33
 {
34
-  uint64_t fileSize,len,bsize;
35
-  uint64_t alen,vlen;
36
+  uint64_t len,vlen;
37
   uint64_t id;
38
   ADM_MKV_TYPE type;
39
   const char *ss;
40
   uint64_t time;
41
-  uint64_t segmentPos;
42
+  
43
+  
44
 
45
-   parser->seek(0);
46
+  if(!goBeforeAtomAtPosition(parser, _cuePosition,vlen, MKV_CUES,"MKV_CUES"))
47
+  {
48
+      ADM_warning("Cannot go to the CUES atom\n");
49
+      return false;
50
+  }
51
 
52
-   if(!parser->simplefind(MKV_SEGMENT,&vlen,1))
53
-   {
54
-     printf("[MKV] Cannot find CLUSTER atom\n");
55
-     return 0;
56
-   }
57
-   ADM_ebml_file segment(parser,vlen);
58
-   segmentPos=segment.tell();
59
+    ADM_ebml_file cues(parser,vlen);
60
+    while(!cues.finished())
61
+    {
62
+           cues.readElemId(&id,&len);
63
+           if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
64
+           {
65
+             printf("[MKV] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
66
+             cues.skip(len);
67
+             continue;
68
+           }
69
+           if(id!=MKV_CUE_POINT)
70
+           {
71
+             printf("Found %s in CUES, ignored \n",ss);
72
+             cues.skip(len);
73
+             continue;
74
+           }
75
+           ADM_ebml_file cue(&cues,len);
76
+           // Cue TIME normally
77
+            cue.readElemId(&id,&len);
78
+            if(id!=MKV_CUE_TIME)
79
+            {
80
+               ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
81
+               printf("Found %s(0x%"PRIx64"), expected CUE_TIME  (0x%x)\n", ss,id,MKV_CUE_TIME);
82
+               cue.skip(cue.remaining());
83
+               continue;
84
+            }
85
+            time=cue.readUnsignedInt(len);
86
 
87
-   while(segment.simplefind(MKV_CUES,&alen,0))
88
-  {
89
-   ADM_ebml_file cues(&segment,alen);
90
-   while(!cues.finished())
91
-   {
92
-      cues.readElemId(&id,&len);
93
-      if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
94
-      {
95
-        printf("[MKV] Tag 0x%"PRIx64" not found (len %"PRIu64")\n",id,len);
96
-        cues.skip(len);
97
-        continue;
98
-      }
99
-      if(id!=MKV_CUE_POINT)
100
-      {
101
-        printf("Found %s in CUES, ignored \n",ss);
102
-        cues.skip(len);
103
-        continue;
104
-      }
105
-      ADM_ebml_file cue(&cues,len);
106
-      // Cue TIME normally
107
-       cue.readElemId(&id,&len);
108
-       if(id!=MKV_CUE_TIME)
109
-       {
110
-          ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
111
-          printf("Found %s(0x%"PRIx64"), expected CUE_TIME  (0x%x)\n", ss,id,MKV_CUE_TIME);
112
-          cue.skip(cue.remaining());
113
-          continue;
114
-       }
115
-       time=cue.readUnsignedInt(len);
116
 
117
+            cue.readElemId(&id,&len);
118
+            if(id!=MKV_CUE_TRACK_POSITION)
119
+            {
120
+               ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
121
+               printf("Found %s (0x%"PRIx64"), expected MKV_CUE_TRACK_POSITION (0x%x)\n", ss,id,MKV_CUE_TRACK_POSITION);
122
+               cue.skip(cues.remaining());
123
+               continue;
124
+            }
125
+            ADM_ebml_file trackPos(&cue,len);
126
+            uint64_t tid=0;
127
+            uint64_t cluster_position=0;
128
+            uint64_t cue_position=0;
129
+            while(!trackPos.finished())
130
+            {
131
+              trackPos.readElemId(&id,&len);
132
+              switch(id)
133
+              {
134
+                case MKV_CUE_TRACK: tid=trackPos.readUnsignedInt(len);break;
135
+                case MKV_CUE_CLUSTER_POSITION: cluster_position=trackPos.readUnsignedInt(len);break;
136
+                case MKV_CUE_RELATIVE_POSITION: cue_position=trackPos.readUnsignedInt(len);break;
137
+                default:
138
+                      ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
139
+                      printf("[MKV] in cluster position found tag %s (0x%"PRIx64")\n",ss,id);
140
+                      trackPos.skip(len);
141
+                      continue;
142
+              }
143
+            }
144
+            aprintf("Track %"PRIx64" segmentPos=%"PRIx64" Cluster Position 0x%"PRIx64" Cue position 0x%"PRIx64" Absolute=%"PRIx64" time %"PRIu64"\n",
145
+                  tid,_segmentPosition,cluster_position,cue_position,cue_position+cluster_position+_segmentPosition,time);  
146
 
147
-       cue.readElemId(&id,&len);
148
-       if(id!=MKV_CUE_TRACK_POSITION)
149
-       {
150
-          ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
151
-          printf("Found %s (0x%"PRIx64"), expected MKV_CUE_TRACK_POSITION (0x%x)\n", ss,id,MKV_CUE_TRACK_POSITION);
152
-          cue.skip(cues.remaining());
153
-          continue;
154
-       }
155
-       ADM_ebml_file trackPos(&cue,len);
156
-       uint64_t tid=0;
157
-       uint64_t cluster_position=0;
158
-       uint64_t cue_position=0;
159
-       while(!trackPos.finished())
160
-       {
161
-         trackPos.readElemId(&id,&len);
162
-         switch(id)
163
-         {
164
-           case MKV_CUE_TRACK: tid=trackPos.readUnsignedInt(len);break;
165
-           case MKV_CUE_CLUSTER_POSITION: cluster_position=trackPos.readUnsignedInt(len);break;
166
-           case MKV_CUE_RELATIVE_POSITION: cue_position=trackPos.readUnsignedInt(len);break;
167
-           default:
168
-                 ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type);
169
-                 printf("[MKV] in cluster position found tag %s (0x%"PRIx64")\n",ss,id);
170
-                 trackPos.skip(len);
171
-                 continue;
172
-         }
173
-       }
174
-       aprintf("Track %"PRIx64" segmentPos=%"PRIx64" Cluster Position 0x%"PRIx64" Cue position 0x%"PRIx64" Absolute=%"PRIx64" time %"PRIu64"\n",
175
-             tid,segmentPos,cluster_position,cue_position,cue_position+cluster_position+segmentPos,time);  
176
-              
177
-       if(!searchTrackFromTid(tid)) //only keep video i.e. track zero
178
-            _cueTime.append(time);
179
-     }
180
+            if(!searchTrackFromTid(tid)) //only keep video i.e. track zero
181
+            {
182
+                //printf("Adding cue entry\n");
183
+                 _cueTime.append(time);
184
+            }
185
    }
186
-   printf("[MKV] Cues updated\n");
187
-   return 1;
188
+   if(_cueTime.size())
189
+   {
190
+        ADM_info("[MKV] Cues updated\n");
191
+        return true;
192
+   }
193
+   else
194
+   {
195
+       ADM_info("[MKV] No Cue found\n");
196
+       return false;
197
+   }
198
+   
199
 }
200
 /**
201
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ebml.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ebml.cpp Changed
93
 
1
@@ -264,7 +264,12 @@
2
   }
3
   fp=NULL;
4
 }
5
-uint8_t ADM_ebml_file::open(const char *name)
6
+/**
7
+ * 
8
+ * @param name
9
+ * @return 
10
+ */
11
+bool  ADM_ebml_file::open(const char *name)
12
 {
13
 
14
   fp=ADM_fopen(name,"rb");
15
@@ -281,14 +286,24 @@
16
   fseeko(fp,0,SEEK_SET);
17
   return 1;
18
 }
19
-uint8_t  ADM_ebml_file::readBin(uint8_t *whereto,uint32_t len)
20
+/**
21
+ * 
22
+ * @param whereto
23
+ * @param len
24
+ * @return 
25
+ */
26
+bool  ADM_ebml_file::readBin(uint8_t *whereto,uint32_t len)
27
 {
28
   ADM_assert(fp);
29
   if(!fread(whereto,len,1,fp)) return 0;
30
   return 1;
31
 }
32
-
33
-uint8_t ADM_ebml_file::skip(uint32_t vv)
34
+/**
35
+ * 
36
+ * @param vv
37
+ * @return 
38
+ */
39
+bool ADM_ebml_file::skip(uint32_t vv)
40
 {
41
   fseeko(fp,vv,SEEK_CUR);
42
   return 1;
43
@@ -297,12 +312,21 @@
44
 {
45
   return ftello(fp);
46
 }
47
-uint8_t ADM_ebml_file::seek(uint64_t pos)
48
+/**
49
+ * 
50
+ * @param pos
51
+ * @return 
52
+ */
53
+bool ADM_ebml_file::seek(uint64_t pos)
54
 {
55
   fseeko(fp,pos,SEEK_SET);
56
   return 1;
57
 }
58
-uint8_t ADM_ebml_file::finished(void)
59
+/**
60
+ * 
61
+ * @return 
62
+ */
63
+bool ADM_ebml_file::finished(void)
64
 {
65
   if(tell()>(_fileSize-2)) return 1;
66
   if(tell()>(_begin+_size-2)) return 1;
67
@@ -312,7 +336,7 @@
68
   \fn find
69
   \brief Search for the tag given and returns the corresponding atom
70
 */
71
- uint8_t ADM_ebml_file::find(ADM_MKV_SEARCHTYPE search,MKV_ELEM_ID  prim,MKV_ELEM_ID second,uint64_t *len,uint32_t rewind)
72
+ bool ADM_ebml_file::find(ADM_MKV_SEARCHTYPE search,MKV_ELEM_ID  prim,MKV_ELEM_ID second,uint64_t *len,bool rewind)
73
 {
74
   uint64_t id,pos;
75
   ADM_MKV_TYPE type;
76
@@ -349,7 +373,7 @@
77
   \fn find
78
   \brief Search for the tag given and returns the corresponding atom
79
 */
80
-uint8_t ADM_ebml_file::simplefind(MKV_ELEM_ID  prim,uint64_t *len,uint32_t rewind)
81
+bool ADM_ebml_file::simplefind(MKV_ELEM_ID  prim,uint64_t *len,bool rewind)
82
 {
83
   uint64_t id,alen;
84
   ADM_MKV_TYPE type;
85
@@ -361,6 +385,7 @@
86
 
87
       while(!finished())
88
       {
89
+          //printf("Offset is %d\n",(int)(this->tell()>>10));
90
           readElemId(&id,&alen);
91
           if(!ADM_searchMkvTag( (MKV_ELEM_ID)id,&ss,&type))
92
           {
93
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Analyzer.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Analyzer.cpp Changed
9
 
1
@@ -816,6 +816,7 @@
2
                                           break;
3
 //
4
                                  case MKFCCR('h','e','v','1'): // hev1 / hevc
5
+                                 case MKFCCR('h','v','c','1'): // hev1 / hevc
6
                                           {
7
                                                 commonPart(H265);
8
                                                 while(!son.isDone())
9
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsAudio.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsAudio.cpp Changed
10
 
1
@@ -210,8 +210,6 @@
2
                 again:
3
                 if(latm.empty()==true) // fetch next LOAS frame, it will contain several frames
4
                 {
5
-                    
6
-               
7
                     if(!retries)
8
                     {
9
                         ADM_error("Cannot get AAC packet from LATM\n");
10
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsReadIndex.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsReadIndex.cpp Changed
13
 
1
@@ -85,7 +85,10 @@
2
             }
3
             head=tail+1;
4
             ADM_tsAccess *track=listOfAudioTracks[trackNb]->access;
5
-            track->push(startAt,dts,size);
6
+            if(dts!=ADM_NO_PTS)
7
+                track->push(startAt,dts,size);
8
+            else
9
+                ADM_warning("No audio DTS\n");
10
 
11
             trackNb++;
12
             //printf("[%s] => %"PRIx32" Dts:%"PRId64" Size:%"PRId64"\n",buffer,pes,dts,size);
13
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_muxers/CMakeLists.txt -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/CMakeLists.txt Changed
9
 
1
@@ -6,6 +6,7 @@
2
 ADD_SUBDIRECTORY(muxerFlv)
3
 ADD_SUBDIRECTORY(muxerMp4)
4
 ADD_SUBDIRECTORY(muxerMkv)
5
+ADD_SUBDIRECTORY(muxerWebm)
6
 ADD_SUBDIRECTORY(muxerffPS)
7
 ADD_SUBDIRECTORY(muxerffTS)
8
 #ADD_SUBDIRECTORY(muxerMplex)
9
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm Added
2
 
1
+(directory)
2
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/CMakeLists.txt Added
15
 
1
@@ -0,0 +1,13 @@
2
+include(mx_plugin)
3
+SET(ADM_Webm_SRCS 
4
+   muxerWebm.cpp
5
+   muxerWebmPlugin.cpp
6
+        muxerWebmConfig.cpp
7
+)
8
+
9
+ADD_MUXER(ADM_mx_Webm ${ADM_Webm_SRCS})
10
+
11
+TARGET_LINK_LIBRARIES(ADM_mx_Webm  ADM_libavutil ADM_libavcodec ADM_libavformat)
12
+INIT_MUXER(ADM_mx_Webm)
13
+INSTALL_MUXER(ADM_mx_Webm)
14
+
15
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/muxerWebm.cpp Added
183
 
1
@@ -0,0 +1,181 @@
2
+/***************************************************************************
3
+            \file            muxerWebm
4
+            \brief           i/f to lavformat Matroska muxer
5
+                             -------------------
6
+    
7
+    copyright            : (C) 2009 by mean
8
+    email                : fixounet@free.fr
9
+        
10
+ ***************************************************************************/
11
+
12
+/***************************************************************************
13
+ *                                                                         *
14
+ *   This program is free software; you can redistribute it and/or modify  *
15
+ *   it under the terms of the GNU General Public License as published by  *
16
+ *   the Free Software Foundation; either version 2 of the License, or     *
17
+ *   (at your option) any later version.                                   *
18
+ *                                                                         *
19
+ ***************************************************************************/
20
+
21
+#include "ADM_default.h"
22
+#include "fourcc.h"
23
+#include "muxerWebm.h"
24
+#include "DIA_coreToolkit.h"
25
+#include "ADM_muxerUtils.h"
26
+
27
+#if 0
28
+#define aprintf(...) {}
29
+#else
30
+#define aprintf printf
31
+#endif
32
+
33
+Webm_muxer WebmMuxerConfig=
34
+{
35
+    false,  // Force
36
+    1280    // Display width
37
+};
38
+
39
+
40
+/**
41
+    \fn     muxerWebm
42
+    \brief  Constructor
43
+*/
44
+muxerWebm::muxerWebm() 
45
+{
46
+};
47
+/**
48
+    \fn     muxerWebm
49
+    \brief  Destructor
50
+*/
51
+
52
+muxerWebm::~muxerWebm() 
53
+{
54
+   
55
+}
56
+/**
57
+    \fn open
58
+    \brief Check that the streams are ok, initialize context...
59
+*/
60
+
61
+bool muxerWebm::open(const char *file, ADM_videoStream *s,uint32_t nbAudioTrack,ADM_audioStream **a)
62
+{
63
+    // We only support VP8 + Vorbis
64
+    uint32_t fcc=s->getFCC();
65
+    if(!fourCC::check(fcc,(const uint8_t *)"VP8 ") && !fourCC::check(fcc,(const uint8_t *)"VP9 "))
66
+    {
67
+        GUI_Error_HIG("Webm","Unsupported Video.\nOnly VP8/VP9 Video and Vorbis/Opus audio supported");
68
+        return false;
69
+    }
70
+    for( int i=0;i<nbAudioTrack;i++)
71
+    {
72
+        uint16_t encoding=a[i]->getInfo()->encoding;
73
+        switch(encoding)
74
+        {
75
+            case WAV_OGG_VORBIS:
76
+            case WAV_OPUS:
77
+                break;
78
+            default:
79
+                GUI_Error_HIG("Webm","Unsupported Audio.\nOnly VP8/VP9 Video and Vorbis/Opus audio supported");
80
+                return false;
81
+        }
82
+    }
83
+    /* All seems fine, open stuff */
84
+    if(false==setupMuxer("webm",file))
85
+    {
86
+        ADM_warning("[Webm] Failed to open muxer (setup)\n");
87
+        return false;
88
+    }
89
+ 
90
+   if(initVideo(s)==false) 
91
+    {
92
+        ADM_warning("[Webm] Failed to init video\n");
93
+        return false;
94
+    }
95
+  
96
+    
97
+        AVCodecContext *c;
98
+        c = video_st->codec;
99
+        rescaleFps(s->getAvgFps1000(),&(c->time_base));
100
+        video_st->time_base=c->time_base;
101
+        c->gop_size=15;
102
+        
103
+        if(true==WebmMuxerConfig.forceDisplayWidth && WebmMuxerConfig.displayWidth)
104
+        {
105
+            //sar=display/code  
106
+            int num=1,den=1;
107
+            av_reduce(&num, &den, WebmMuxerConfig.displayWidth, s->getWidth(),65535);
108
+            c->sample_aspect_ratio.num=num;
109
+            c->sample_aspect_ratio.den=den;
110
+            video_st->sample_aspect_ratio.num=num;
111
+            video_st->sample_aspect_ratio.den=den;
112
+            ADM_info("Forcing display width of %d\n",(int)WebmMuxerConfig.displayWidth);
113
+        }
114
+
115
+        if(initAudio(nbAudioTrack,a)==false)
116
+        {
117
+            ADM_warning("[Webm] Failed to init audio\n");
118
+            return false;
119
+        }
120
+        
121
+        // /audio
122
+        int er = avio_open(&(oc->pb), file, AVIO_FLAG_WRITE);
123
+
124
+        if (er)
125
+        {
126
+            ADM_error("[Webm]: Failed to open file :%s, er=%d\n",file,er);
127
+            return false;
128
+        }
129
+
130
+        AVDictionary *dict = NULL;
131
+       char buf[64];
132
+        
133
+        snprintf(buf, sizeof(buf), "%d", AV_TIME_BASE / 10);
134
+        av_dict_set(&dict, "preload", buf, 0);
135
+        av_dict_set(&dict, "max_delay", "200000", 0);
136
+       av_dict_set(&dict, "muxrate", "10080000", 0);
137
+
138
+        ADM_assert(avformat_write_header(oc, &dict) >= 0);
139
+        ADM_info("Timebase codec = %d/%d\n",video_st->time_base.num,video_st->time_base.den);
140
+//        ADM_info("Original timebase = %d/%d\n",myTimeBase.num,myTimeBase.den);
141
+        
142
+        
143
+        vStream=s;
144
+        aStreams=a;
145
+        nbAStreams=nbAudioTrack;
146
+        initialized=true;
147
+        return true;
148
+}
149
+
150
+/**
151
+    \fn save
152
+*/
153
+bool muxerWebm::save(void) 
154
+{
155
+    const char *title=QT_TRANSLATE_NOOP("Webmmuxer","Saving Webm");
156
+    return saveLoop(title);
157
+}
158
+
159
+bool muxerWebm::muxerRescaleVideoTimeDts(uint64_t *time,uint64_t computedDts)
160
+{
161
+    if(*time==ADM_NO_PTS)
162
+    {
163
+        *time=computedDts;
164
+        return muxerRescaleVideoTime(time);
165
+    }
166
+    return muxerRescaleVideoTime(time);
167
+}  
168
+/**
169
+    \fn close
170
+    \brief Cleanup is done in the dtor
171
+*/
172
+bool muxerWebm::close(void) 
173
+{
174
+   
175
+    ADM_info("[Webm] Closing\n");
176
+    return closeMuxer();
177
+}
178
+
179
+//EOF
180
+
181
+
182
+
183
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/muxerWebm.h Added
41
 
1
@@ -0,0 +1,39 @@
2
+/***************************************************************************
3
+                          oplug_vcdff.h  -  description
4
+                             -------------------
5
+    begin                : Sun Nov 10 2002
6
+    copyright            : (C) 2002 by mean
7
+    email                : fixounet@free.fr
8
+ ***************************************************************************/
9
+
10
+/***************************************************************************
11
+ *                                                                         *
12
+ *   This program is free software; you can redistribute it and/or modify  *
13
+ *   it under the terms of the GNU General Public License as published by  *
14
+ *   the Free Software Foundation; either version 2 of the License, or     *
15
+ *   (at your option) any later version.                                   *
16
+ *                                                                         *
17
+ ***************************************************************************/
18
+#ifndef ADM_MUXER_Webm
19
+#define ADM_MUXER_Webm
20
+
21
+#include "ADM_muxer.h"
22
+#include "ADM_coreMuxerFfmpeg.h"
23
+#include "webm_muxer.h"
24
+extern Webm_muxer WebmMuxerConfig;
25
+
26
+class muxerWebm : public muxerFFmpeg
27
+{
28
+protected:
29
+        bool muxerRescaleVideoTimeDts(uint64_t *time,uint64_t computedDts);
30
+        const char *getContainerName(void) {return "Webm";};
31
+public:
32
+                muxerWebm();
33
+        virtual ~muxerWebm();
34
+        virtual bool open(const char *file, ADM_videoStream *s,uint32_t nbAudioTrack,ADM_audioStream **a);
35
+        virtual bool save(void) ;
36
+        virtual bool close(void) ;
37
+        virtual bool useGlobalHeader(void) {return true;}
38
+};
39
+
40
+#endif
41
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/muxerWebmConfig.cpp Added
43
 
1
@@ -0,0 +1,41 @@
2
+/***************************************************************************
3
+    copyright            : (C) 2007 by mean
4
+    email                : fixounet@free.fr
5
+    
6
+ ***************************************************************************/
7
+
8
+/***************************************************************************
9
+ *                                                                         *
10
+ *   This program is free software; you can redistribute it and/or modify  *
11
+ *   it under the terms of the GNU General Public License as published by  *
12
+ *   the Free Software Foundation; either version 2 of the License, or     *
13
+ *   (at your option) any later version.                                   *
14
+ *                                                                         *
15
+ ***************************************************************************/
16
+
17
+#include "ADM_default.h"
18
+#include "ADM_muxerInternal.h"
19
+#include "muxerWebm.h"
20
+#define ADM_MINIMAL_UI_INTERFACE
21
+#include "DIA_factory.h"
22
+#include "fourcc.h" 
23
+bool WebmConfigure(void)
24
+{
25
+        bool force=WebmMuxerConfig.forceDisplayWidth;
26
+        uint32_t displayWidth=(uint32_t)WebmMuxerConfig.displayWidth;
27
+
28
+        diaElemToggle   alternate(&force,"Force display width");
29
+        diaElemUInteger dWidth(&displayWidth,"Display width",16,65535);
30
+
31
+        diaElem *tabs[]={&alternate,&dWidth};
32
+        if( diaFactoryRun(("Webm Muxer"),2,tabs))
33
+        {
34
+            WebmMuxerConfig.forceDisplayWidth=(bool)force;
35
+            WebmMuxerConfig.displayWidth=displayWidth;
36
+            return true;
37
+        }
38
+        return false;
39
+
40
+}
41
+
42
+
43
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/muxerWebmPlugin.cpp Added
36
 
1
@@ -0,0 +1,34 @@
2
+/***************************************************************************
3
+    copyright            : (C) 2007 by mean
4
+    email                : fixounet@free.fr
5
+
6
+      See lavformat/flv[dec/env].c for detail
7
+ ***************************************************************************/
8
+
9
+/***************************************************************************
10
+ *                                                                         *
11
+ *   This program is free software; you can redistribute it and/or modify  *
12
+ *   it under the terms of the GNU General Public License as published by  *
13
+ *   the Free Software Foundation; either version 2 of the License, or     *
14
+ *   (at your option) any later version.                                   *
15
+ *                                                                         *
16
+ ***************************************************************************/
17
+
18
+#include "ADM_default.h"
19
+#include "ADM_muxerInternal.h"
20
+#include "muxerWebm.h"
21
+#include "webm_muxer_desc.cpp"
22
+#include "fourcc.h"
23
+ bool WebmConfigure(void);
24
+
25
+ADM_MUXER_BEGIN( "Webm",muxerWebm,
26
+                    1,0,0,
27
+                    "Webm",    // Internal name
28
+                    "Webm muxer plugin (c) Mean 2009",
29
+                    "Webm Muxer", // DIsplay name
30
+                    WebmConfigure,
31
+                    Webm_muxer_param, //template
32
+                    &WebmMuxerConfig, //config
33
+                    sizeof(Webm_muxer)
34
+                );
35
+
36
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/webm_muxer.conf Added
6
 
1
@@ -0,0 +1,4 @@
2
+Webm_muxer{
3
+bool:forceDisplayWidth
4
+uint32_t:displayWidth
5
+}
6
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/webm_muxer.h Added
11
 
1
@@ -0,0 +1,9 @@
2
+// automatically generated by admSerialization.py, do not edit!
3
+// automatically generated by admSerialization.py do not edit
4
+#ifndef ADM_Webm_muxer_CONF_H
5
+#define ADM_Webm_muxer_CONF_H
6
+typedef struct {
7
+bool forceDisplayWidth;
8
+uint32_t displayWidth;
9
+}Webm_muxer;
10
+#endif
11
avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_muxers/muxerWebm/webm_muxer_desc.cpp Added
7
 
1
@@ -0,0 +1,5 @@
2
+const ADM_paramList Webm_muxer_param[]={
3
+ {"forceDisplayWidth",offsetof(Webm_muxer,forceDisplayWidth),"bool",ADM_param_bool},
4
+ {"displayWidth",offsetof(Webm_muxer,displayWidth),"uint32_t",ADM_param_uint32_t},
5
+{NULL,0,NULL}
6
+};
7
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_videoFilters6/fields/ADM_vidSeparateField.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_videoFilters6/fields/ADM_vidSeparateField.cpp Changed
55
 
1
@@ -22,6 +22,7 @@
2
 
3
 #include "ADM_default.h"
4
 #include "ADM_coreVideoFilter.h"
5
+#include "ADM_vidMisc.h"
6
 
7
 /**
8
     \class AVDMVideoSeparateField
9
@@ -83,10 +84,8 @@
10
 AVDMVideoSeparateField::AVDMVideoSeparateField(  ADM_coreVideoFilter *in,CONFcouple *setup) 
11
         : ADM_coreVideoFilterCached(4,in,setup)
12
 {
13
-
14
-   info.height>>=1;
15
-    info.frameIncrement/=2;
16
-    
17
+    info.height>>=1;
18
+    info.frameIncrement/=2;    
19
 }
20
 /**
21
     \fn AVDMVideoSeparateField
22
@@ -114,14 +113,14 @@
23
 ADMImage *cur,*next;
24
 uint32_t frame=nextFrame++; 
25
         *fn=frame;
26
-       cur=vidCache->getImage(frame/2);
27
-       if(!cur)
28
-       {
29
-           ADM_warning("Seoarate field : cannot read\n");
30
-           vidCache->unlockAll();
31
-           return 0;
32
-       }
33
-        
34
+        cur=vidCache->getImage(frame/2);
35
+        if(!cur)
36
+        {
37
+                ADM_warning("Seoarate field : cannot read\n");
38
+                vidCache->unlockAll();
39
+                return 0;
40
+        }
41
+
42
         for(int i=0;i<3;i++)
43
         {
44
             ADM_PLANE plane=(ADM_PLANE)i;
45
@@ -141,7 +140,8 @@
46
         image->copyInfo(cur);
47
         if(frame&1)
48
             image->Pts+=info.frameIncrement;
49
-       vidCache->unlockAll();
50
+        vidCache->unlockAll();
51
+        //ADM_info("Output PTS=%s\n",ADM_us2plain(image->Pts));
52
         return 1;
53
 }
54
 // EOF
55
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_videoFilters6/vdpauFilters/ADM_vidVdpauFilter.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_videoFilters6/vdpauFilters/ADM_vidVdpauFilter.cpp Changed
54
 
1
@@ -108,6 +108,7 @@
2
     // check if we have something to do
3
     if(info.width==previousFilter->getInfo()->width &&  info.height==previousFilter->getInfo()->height)
4
         return false;
5
+    
6
     if(VDP_STATUS_OK!=admVdpau::outputSurfaceCreate(VDP_RGBA_FORMAT_B8G8R8A8,
7
                         info.width,info.height,&outputSurface)) 
8
     {
9
@@ -123,12 +124,15 @@
10
             goto badInit;
11
         }
12
     }
13
+    {
14
+    int paddedHeight=(previousFilter->getInfo()->height+15)&~15;
15
     if(VDP_STATUS_OK!=admVdpau::mixerCreate(previousFilter->getInfo()->width,
16
-                                            previousFilter->getInfo()->height,&mixer)) 
17
+                                            paddedHeight,&mixer)) 
18
     {
19
         ADM_error("Cannot create mixer\n");
20
         goto badInit;
21
-    } 
22
+    }
23
+    }
24
     setIdentityCSC();
25
     tempBuffer=new uint8_t[info.width*info.height*4];
26
     scaler=new ADMColorScalerSimple( info.width,info.height, ADM_COLOR_RGB32A,ADM_COLOR_YV12);
27
@@ -305,19 +309,20 @@
28
     {
29
         //printf("Uploading image to vdpau\n");
30
         if(false==uploadImage(next,0,nextFrame)) 
31
-                {
32
-                    vidCache->unlockAll();
33
-                    return false;
34
-                }
35
+        {
36
+            vidCache->unlockAll();
37
+            return false;
38
+        }
39
         tmpSurface=input[0];
40
     }
41
     
42
     // Call mixer...
43
-    if(VDP_STATUS_OK!=admVdpau::mixerRender( 
44
+    if(VDP_STATUS_OK!=admVdpau::mixerRenderWithCropping( 
45
                 mixer,
46
                 tmpSurface,
47
                 outputSurface, 
48
-                info.width,info.height))
49
+                info.width,info.height, // target
50
+                previousFilter->getInfo()->width,previousFilter->getInfo()->height))
51
 
52
     {
53
         ADM_warning("[Vdpau] Cannot mixerRender\n");
54
avidemux_2.6.11.tar.gz/avidemux_plugins/ADM_videoFilters6/vdpauFilters/ADM_vidVdpauFilterDeint.cpp -> avidemux_2.6.12.tar.gz/avidemux_plugins/ADM_videoFilters6/vdpauFilters/ADM_vidVdpauFilterDeint.cpp Changed
29
 
1
@@ -196,6 +196,7 @@
2
     scaler=NULL;
3
     secondField=false;
4
     nextFrame=0;
5
+    int paddedHeight=(previousFilter->getInfo()->height+15)&~15;
6
     if(!admVdpau::isOperationnal())
7
     {
8
         ADM_warning("Vdpau not operationnal\n");
9
@@ -223,9 +224,9 @@
10
     for(int i=0;i<3;i++)
11
         slots[i].image=new ADMImageDefault( previousFilter->getInfo()->width, 
12
                                             previousFilter->getInfo()->height);
13
-                                            
14
+    
15
     if(VDP_STATUS_OK!=admVdpau::mixerCreate(previousFilter->getInfo()->width,
16
-                                            previousFilter->getInfo()->height,&mixer,true)) 
17
+                                            paddedHeight,&mixer,true)) 
18
     {
19
         ADM_error("Cannot create mixer\n");
20
         goto badInit;
21
@@ -527,6 +528,7 @@
22
                 mixer,
23
                 in,
24
                 outputSurface, 
25
+                getInfo()->width,getInfo()->height,
26
                 previousFilter->getInfo()->width,previousFilter->getInfo()->height))
27
 
28
     {
29
avidemux_2.6.11.tar.gz/bootStrap.bash -> avidemux_2.6.12.tar.gz/bootStrap.bash Changed
58
 
1
@@ -8,8 +8,10 @@
2
 do_gtk=0
3
 do_qt4=1
4
 do_plugins=1
5
+do_asan=0
6
 debug=0
7
 qt_ext=Qt4
8
+export QT_SELECT=4 # default for ubuntu, harmless for others
9
 export O_PARAL="-j 2"
10
 fail()
11
 {
12
@@ -23,18 +25,23 @@
13
         export SOURCEDIR=$2
14
         export EXTRA=$3
15
         export DEBUG=""
16
+        export ASAN=""
17
         BUILDER="Unix Makefiles"
18
         if [ "x$debug" = "x1" ] ; then 
19
                 DEBUG="-DVERBOSE=1 -DCMAKE_BUILD_TYPE=Debug  "
20
                 BUILDDIR="${BUILDDIR}_debug"
21
                 BUILDER="CodeBlocks - Unix Makefiles"
22
         fi
23
+        if [ "x$do_asan" = "x1" ] ; then 
24
+                BUILDDIR="${BUILDDIR}_asan"
25
+                ASAN="-DASAN=True"
26
+        fi
27
    FAKEROOT=" -DFAKEROOT=$FAKEROOT_DIR "
28
         echo "Building $BUILDDIR from $SOURCEDIR with EXTRA=<$EXTRA>, DEBUG=<$DEBUG>"
29
         rm -Rf ./$BUILDDIR
30
         mkdir $BUILDDIR || fail mkdir
31
         cd $BUILDDIR 
32
-        cmake $PKG $FAKEROOT $QT_FLAVOR -DCMAKE_EDIT_COMMAND=vim -DAVIDEMUX_SOURCE_DIR=$TOP -DCMAKE_INSTALL_PREFIX=/usr $EXTRA $DEBUG -G "$BUILDER" $SOURCEDIR || fail cmakeZ
33
+        cmake $PKG $FAKEROOT $QT_FLAVOR -DCMAKE_EDIT_COMMAND=vim -DAVIDEMUX_SOURCE_DIR=$TOP -DCMAKE_INSTALL_PREFIX=/usr $EXTRA $ASAN $DEBUG -G "$BUILDER" $SOURCEDIR || fail cmakeZ
34
         make  $PARAL >& /tmp/log$BUILDDIR || fail "make, result in /tmp/log$BUILDDIR"
35
    if  [ "x$PKG" != "x" ] ; then
36
           $FAKEROOT_COMMAND make package DESTDIR=$FAKEROOT_DIR/tmp || fail package
37
@@ -86,6 +93,7 @@
38
         echo "  --with-plugins    : Build plugins"
39
         echo "  --without-plugins : Dont build plugins"
40
         echo "  --enable-qt5      : Try to use qt5 instead of qt4"
41
+        echo "  --enable-asan     : Enable Clang/llvm address sanitizer"
42
    echo "The end result will be in the install folder. You can then copy it to / or whatever"
43
         config 
44
 
45
@@ -141,8 +149,12 @@
46
              ;;
47
          --enable-qt5)
48
                 QT_FLAVOR="-DENABLE_QT5=True"
49
+                export QT_SELECT=5
50
                 qt_ext=Qt5
51
              ;;
52
+         --enable-asan)
53
+                do_asan=1
54
+             ;;
55
          --with-qt4)
56
                 do_qt4=1
57
              ;;
58
avidemux_2.6.11.tar.gz/cmake/admAsNeeded.cmake -> avidemux_2.6.12.tar.gz/cmake/admAsNeeded.cmake Changed
18
 
1
@@ -9,7 +9,9 @@
2
    AS_NEEDED(${name})
3
 
4
    if (UNIX AND NOT APPLE)
5
+             if(NOT ASAN)
6
        TARGET_LINK_LIBRARIES( ${name} "-Wl,-z,defs")
7
+             endif(NOT ASAN)
8
        TARGET_LINK_LIBRARIES( ${name} "stdc++") # for clang
9
    endif (UNIX AND NOT APPLE)
10
 ENDMACRO(ADM_ADD_SHARED_LIBRARY name)
11
@@ -18,4 +20,4 @@
12
    if (CMAKE_COMPILER_IS_GNUCC)
13
        ADD_TARGET_CFLAGS(${name} "-fno-exceptions -fno-rtti")
14
    endif (CMAKE_COMPILER_IS_GNUCC)
15
-ENDMACRO(ADM_TARGET_NO_EXCEPTION  name)
16
\ No newline at end of file
17
+ENDMACRO(ADM_TARGET_NO_EXCEPTION  name)
18
avidemux_2.6.11.tar.gz/cmake/admCheckFaad.cmake -> avidemux_2.6.12.tar.gz/cmake/admCheckFaad.cmake Changed
14
 
1
@@ -15,10 +15,10 @@
2
            FIND_HEADER_AND_LIB(FAAD faad.h faad)
3
 
4
            IF (FAAD_FOUND)
5
-               ADM_CHECK_FUNCTION_EXISTS(faacDecInit "${FAAD_LIBRARY_DIR}" FAACDEC_FUNCTION_FOUND)
6
+               ADM_CHECK_FUNCTION_EXISTS(faacDecInit "${FAAD_LIBRARY_DIR}" FAACDEC_FUNCTION_FOUND "" -I"${FAAD_INCLUDE_DIR}")
7
 
8
                IF (NOT FAACDEC_FUNCTION_FOUND)
9
-                   ADM_CHECK_FUNCTION_EXISTS(NeAACDecInit "${FAAD_LIBRARY_DIR}" NEAACDEC_FUNCTION_FOUND)
10
+                   ADM_CHECK_FUNCTION_EXISTS(NeAACDecInit "${FAAD_LIBRARY_DIR}" NEAACDEC_FUNCTION_FOUND "" -I"${FAAD_INCLUDE_DIR}")
11
 
12
                    IF (NOT NEAACDEC_FUNCTION_FOUND)
13
                        SET(FAAD_FOUND 0)
14
avidemux_2.6.11.tar.gz/cmake/admCheckMiscLibs.cmake -> avidemux_2.6.12.tar.gz/cmake/admCheckMiscLibs.cmake Changed
36
 
1
@@ -67,20 +67,20 @@
2
 MESSAGE(STATUS "Checking for execinfo")
3
 MESSAGE(STATUS "*********************")
4
 
5
-FIND_HEADER_AND_LIB(execinfo execinfo.h execinfo backtrace_symbols)
6
-PRINT_LIBRARY_INFO("execinfo" EXECINFO_FOUND "${LIBEXECINFO_INCLUDE_DIR}" "${LIBEXECINFO_LIBRARY_DIR}")
7
+FIND_HEADER_AND_LIB(EXECINFO execinfo.h c backtrace_symbols)
8
+PRINT_LIBRARY_INFO("execinfo" EXECINFO_FOUND "${EXECINFO_INCLUDE_DIR}" "${EXECINFO_LIBRARY_DIR}")
9
 
10
-IF (LIBEXECINFO_INCLUDE_DIR)
11
+IF (EXECINFO_INCLUDE_DIR)
12
    # Try linking without -lexecinfo
13
-   ADM_COMPILE(execinfo.cpp "" ${LIBEXECINFO_INCLUDE_DIR} "" WITHOUT_LIBEXECINFO outputWithoutLibexecinfo)
14
+   ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} "" WITHOUT_LIBEXECINFO outputWithoutLibexecinfo)
15
 
16
    IF (WITHOUT_LIBEXECINFO)
17
-       SET(LIBEXECINFO_LIBRARY_DIR "")
18
+       SET(EXECINFO_LIBRARY_DIR "")
19
        SET(HAVE_EXECINFO 1)
20
 
21
        MESSAGE(STATUS "execinfo not required")
22
    ELSE (WITHOUT_LIBEXECINFO)
23
-       ADM_COMPILE(execinfo.cpp "" ${LIBEXECINFO_INCLUDE_DIR} ${LIBEXECINFO_LIBRARY_DIR} WITH_LIBEXECINFO outputWithLibexecinfo)
24
+       ADM_COMPILE(execinfo.cpp "" ${EXECINFO_INCLUDE_DIR} ${EXECINFO_LIBRARY_DIR} WITH_LIBEXECINFO outputWithLibexecinfo)
25
 
26
        IF (WITH_LIBEXECINFO)
27
            SET(HAVE_EXECINFO 1)
28
@@ -91,6 +91,6 @@
29
            MESSAGE(STATUS "Does not work, with ${outputWithLibexecinfo}")
30
        ENDIF (WITH_LIBEXECINFO)
31
    ENDIF (WITHOUT_LIBEXECINFO)
32
-ENDIF (LIBEXECINFO_INCLUDE_DIR)
33
+ENDIF (EXECINFO_INCLUDE_DIR)
34
 
35
 MESSAGE("")
36
avidemux_2.6.11.tar.gz/cmake/admFFmpegBuild.cmake -> avidemux_2.6.12.tar.gz/cmake/admFFmpegBuild.cmake Changed
30
 
1
@@ -9,7 +9,7 @@
2
 
3
 option(FF_INHERIT_BUILD_ENV "" ON)
4
 
5
-set(FFMPEG_VERSION "2.7.2")
6
+set(FFMPEG_VERSION "2.7.6")
7
 set(FFMPEG_ROOT_DIR "${AVIDEMUX_TOP_SOURCE_DIR}/avidemux_core/ffmpeg_package")
8
 set(FFMPEG_PATCH_DIR  "${FFMPEG_ROOT_DIR}/patches/")
9
 set(FFMPEG_SOURCE_ARCHIVE "ffmpeg-${FFMPEG_VERSION}.tar.bz2")
10
@@ -25,7 +25,7 @@
11
                     svq3  theora  tscc  mp2 mp3 mp2_float mp3_float
12
                     vc1  vp3  vp6  vp6a  vp6f  vp8 vp9 wmapro wmav2  wmv1  wmv2  wmv3 cscd)
13
 set(FFMPEG_ENCODERS  ac3  ac3_float dvvideo  ffv1  ffvhuff  flv  h263  huffyuv  mjpeg  mp2  mpeg1video  mpeg2video  mpeg4  snow aac dca)
14
-set(FFMPEG_MUXERS  flv  matroska  mpeg1vcd  mpeg2dvd  mpeg2svcd  mpegts  mov  mp4  psp)
15
+set(FFMPEG_MUXERS  flv  matroska  mpeg1vcd  mpeg2dvd  mpeg2svcd  mpegts  mov  mp4  psp webm)
16
 set(FFMPEG_PARSERS  ac3  h263  h264  hevc  mpeg4video)
17
 set(FFMPEG_PROTOCOLS  file)
18
 set(FFMPEG_BSFS h264_mp4toannexb aac_adtstoasc)
19
@@ -188,7 +188,9 @@
20
    xadd(--ld "${CMAKE_C_COMPILER}")
21
    xadd(--ar "${CMAKE_AR}")
22
    # nm should be ok if we do not cross compile
23
-
24
+        if(CMAKE_LD_FLAGS)
25
+       xadd(--extra-ldflags ${CMAKE_LD_FLAGS})
26
+        endif(CMAKE_LD_FLAGS)
27
    if (CMAKE_C_FLAGS)
28
        xadd(--extra-cflags ${CMAKE_C_FLAGS})
29
    endif (CMAKE_C_FLAGS)
30
avidemux_2.6.11.tar.gz/cmake/admMainChecks.cmake -> avidemux_2.6.12.tar.gz/cmake/admMainChecks.cmake Changed
20
 
1
@@ -54,6 +54,18 @@
2
 ########################################
3
 INCLUDE(admDetermineSystem)
4
 
5
+# Address sanitizer only works with llvm/clang
6
+IF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*")
7
+        IF (ASAN)
8
+                MESSAGE(STATUS "Address Sanitizer activated")
9
+           SET(CMAKE_C_FLAGS   "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
10
+           SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer")
11
+                SET(CMAKE_LD_FLAGS  "${CMAKE_LD_FLAGS}  -fsanitize=address ")
12
+        ELSE (ASAN)
13
+                MESSAGE(STATUS "Address Sanitizer not activated")
14
+        ENDIF (ASAN)
15
+ENDIF(${CMAKE_CXX_COMPILER} MATCHES ".*[cC]lang.*")
16
+
17
 IF (ADM_CPU_ALTIVEC)
18
    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${ADM_ALTIVEC_FLAGS}")
19
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${ADM_ALTIVEC_FLAGS}")
20
avidemux_2.6.11.tar.gz/cmake/avidemuxVersion.cmake -> avidemux_2.6.12.tar.gz/cmake/avidemuxVersion.cmake Changed
10
 
1
@@ -2,7 +2,7 @@
2
 include(admTimeStamp)
3
 SET(CPACK_PACKAGE_VERSION_MAJOR "2")
4
 SET(CPACK_PACKAGE_VERSION_MINOR "6")
5
-SET(CPACK_PACKAGE_VERSION_P     "11")
6
+SET(CPACK_PACKAGE_VERSION_P     "12")
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
 IF(NOT RELEASE)
10