Changes of Revision 36

avidemux3.changes Changed
x
 
1
@@ -1,4 +1,28 @@
2
 -------------------------------------------------------------------
3
+Thu Mar 30 11:07:43 UTC 2017 - joerg.lorenzen@ki.tng.de
4
+
5
+- Update to version 2.6.19
6
+  + Filter : All filters with preview have better navigation
7
+    dialogs
8
+  + Filter : Delogo filter UI redone
9
+  + Filter : Fixed changeFps/resampleFps seeking
10
+  + TS/Demux : HEVC support improved
11
+  + Flv/Demux : Support large files (rcdrone)
12
+  + Audio : Allow EAC3 as external audio track
13
+  + UI : General usability cleanup (euma)
14
+  + UI : Allow using the last read folder as default save folder
15
+    (euma)
16
+  + UI : 2 pass encoding dialog cleanup (euma)
17
+  + UI : Dynamically enable/disable menu (euma)
18
+  + UI : Customizable keyboard shortcut (euma)
19
+  + UI : Allow reverting page up/down (euma)
20
+  + Codec : Better support for 10bits
21
+  + i18n : Russian translation updated (TotalCaesar659)
22
+  + i18n : Greek translation updated (nikoss)
23
+  + i18n : General cleanup (euma)
24
+  + Updated ffmpeg libs to 3.0.7
25
+
26
+-------------------------------------------------------------------
27
 Sun Jan 08 13:23:21 UTC 2017 - joerg.lorenzen@ki.tng.de
28
 
29
 - Update to version 2.6.18
30
avidemux3.spec Changed
167
 
1
@@ -16,7 +16,7 @@
2
 #
3
 
4
 
5
-%if 0%{?suse_version} > 1320 || 0%{?suse_version} == 1315
6
+%if 0%{?suse_version} > 1320 || 0%{?sle_version}
7
 %bcond_without  build_qt5
8
 %define         qtversion 5
9
 %else
10
@@ -24,14 +24,19 @@
11
 %define         qtversion 4
12
 %endif
13
 
14
+%if 0%{?suse_version} > 1320 || 0%{?sle_version} > 120100
15
+%bcond_without  with_vs
16
+%endif
17
+
18
 Name:           avidemux3
19
 Summary:        Graphical video editing and transcoding tool
20
-Version:        2.6.18
21
+Version:        2.6.19
22
 Release:        1
23
 Url:            http://avidemux.sourceforge.net/
24
 Source0:        avidemux_%{version}.tar.gz
25
 Source1:        avidemux3-qt.desktop
26
-Source2:        config.mak.diff
27
+Source2:        avidemux3-vsproxy-qt.desktop
28
+Source3:        config.mak.diff
29
 Patch0:         avidemux-cmake-2.8.8.patch
30
 Patch1:         avidemux-linking.patch
31
 Patch2:         avidemux-x264_plugins.patch
32
@@ -52,6 +57,10 @@
33
 BuildRequires:  fdupes
34
 BuildRequires:  dos2unix
35
 BuildRequires:  yasm
36
+%if %{with with_vs}
37
+BuildRequires:  pkgconfig(vapoursynth)
38
+BuildRequires:  libvapoursynth-script
39
+%endif
40
 BuildRequires:  pkgconfig(fribidi)
41
 BuildRequires:  pkgconfig(libxslt)
42
 BuildRequires:  pkgconfig(libxml-2.0)
43
@@ -88,6 +97,7 @@
44
 BuildRequires:  pkgconfig(vorbis)
45
 BuildRequires:  pkgconfig(libdca)
46
 BuildRequires:  pkgconfig(opencore-amrnb)
47
+BuildRequires:  pkgconfig(opus)
48
 BuildRequires:  pkgconfig(vpx)
49
 BuildRequires:  pkgconfig(twolame)
50
 BuildRequires:  pkgconfig(dcaenc)
51
@@ -198,7 +208,7 @@
52
 %patch5 -p0
53
 %patch6 -p0
54
 %patch7 -p0
55
-cp -f %{S:2} avidemux_core/ffmpeg_package/patches/
56
+cp -f %{S:3} avidemux_core/ffmpeg_package/patches/
57
 chmod 755 bootStrap.bash
58
 chmod 644 AUTHORS COPYING README
59
 
60
@@ -213,9 +223,9 @@
61
 
62
 options+="--with-cli "
63
 %if %{with build_qt5}
64
-options+="--with-qt4 "
65
+options+="--with-qt "
66
 %else
67
-options+="--with-qt4 --enable-qt4 "
68
+options+="--with-qt --enable-qt4 "
69
 %endif
70
 ./bootStrap.bash $options
71
 
72
@@ -225,6 +235,10 @@
73
 # Install desktop file
74
 install -D -m644 %{S:1} %{buildroot}%{_datadir}/applications/avidemux3-qt%{qtversion}.desktop
75
 sed -i -e 's|qtversion|%{qtversion}|g' %{buildroot}%{_datadir}/applications/avidemux3-qt%{qtversion}.desktop
76
+%if %{with with_vs}
77
+install -D -m644 %{S:2} %{buildroot}%{_datadir}/applications/vsproxy-qt%{qtversion}.desktop
78
+sed -i -e 's|qtversion|%{qtversion}|g' %{buildroot}%{_datadir}/applications/vsproxy-qt%{qtversion}.desktop
79
+%endif
80
 
81
 # Install icon
82
 install -D -m644 avidemux_icon.png %{buildroot}%{_datadir}/pixmaps/avidemux3.png
83
@@ -255,6 +269,9 @@
84
 
85
 %files
86
 %defattr(-,root,root)
87
+%if %{with with_vs}
88
+%{_bindir}/vsProxy
89
+%endif
90
 %{_libdir}/libADM6avcodec.so.*
91
 %{_libdir}/libADM6avformat.so.*
92
 %{_libdir}/libADM6avutil.so.*
93
@@ -307,6 +324,7 @@
94
 %{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_ms_adpcm.so
95
 %{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_opencore_amrnb.so
96
 %{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_opencore_amrwb.so
97
+%{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_opus.so
98
 %{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_ulaw.so
99
 %{_libdir}/ADM_plugins6/audioDecoder/libADM_ad_vorbis.so
100
 %{_libdir}/ADM_plugins6/audioDevices/libADM_av_alsaDefault.so
101
@@ -376,7 +394,6 @@
102
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_avsfilter.so
103
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_addBorders.so
104
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_black.so
105
-%{_libdir}/ADM_plugins6/videoFilters/libADM_vf_blackenBorders.so
106
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_changeFps.so
107
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_colorYuv.so
108
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_denoise3d.so
109
@@ -397,7 +414,6 @@
110
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_mean.so
111
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_median.so
112
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_mergeField.so
113
-%{_libdir}/ADM_plugins6/videoFilters/libADM_vf_msharpen.so
114
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_printInfo.so
115
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_removePlane.so
116
 %{_libdir}/ADM_plugins6/videoFilters/libADM_vf_resampleFps.so
117
@@ -431,6 +447,7 @@
118
 %{_libdir}/ADM_plugins6/videoEncoders/libADM_ve_x264_cli.so
119
 %{_libdir}/ADM_plugins6/videoEncoders/libADM_ve_x265_cli.so
120
 %dir %{_libdir}/ADM_plugins6/videoFilters/cli
121
+%{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_blackenBordersCli.so
122
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_chromaShiftCli.so
123
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_contrastCli.so
124
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_CropCli.so
125
@@ -438,12 +455,16 @@
126
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_HueCli.so
127
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_logoCli.so
128
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_mpdelogoCli.so
129
+%{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_msharpenCli.so
130
 %{_libdir}/ADM_plugins6/videoFilters/cli/libADM_vf_swscaleResize_cli.so
131
 
132
 %files qt%{qtversion}
133
 %defattr(-,root,root)
134
 %{_bindir}/avidemux3_jobs_qt%{qtversion}
135
 %{_bindir}/avidemux3_qt%{qtversion}
136
+%if %{with with_vs}
137
+%{_bindir}/vsProxy_gui_qt%{qtversion}
138
+%endif
139
 %{_libdir}/libADM_openGLQT%{qtversion}6.so
140
 %{_libdir}/libADM_render6_QT%{qtversion}.so
141
 %{_libdir}/libADM_UIQT%{qtversion}6.so
142
@@ -458,6 +479,7 @@
143
 %{_libdir}/ADM_plugins6/videoEncoders/qt%{qtversion}/libADM_ve_x264_QT%{qtversion}.so
144
 %{_libdir}/ADM_plugins6/videoEncoders/qt%{qtversion}/libADM_ve_x265_QT%{qtversion}.so
145
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_asharpQT%{qtversion}.so
146
+%{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_blackenBordersQT%{qtversion}.so
147
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_chromaShiftQT%{qtversion}.so
148
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_contrastQT%{qtversion}.so
149
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_cropQT%{qtversion}.so
150
@@ -467,12 +489,16 @@
151
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_HueQT%{qtversion}.so
152
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_logoQT%{qtversion}.so
153
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_mpdelogoQT%{qtversion}.so
154
+%{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_msharpenQT%{qtversion}.so
155
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_rotateGlFrag2.so
156
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_sampleGlFrag2.so
157
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_sampleGlVertex.so
158
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_shaderLoaderGl.so
159
 %{_libdir}/ADM_plugins6/videoFilters/qt%{qtversion}/libADM_vf_swscaleResizeQT%{qtversion}.so
160
 %{_datadir}/applications/avidemux3-qt%{qtversion}.desktop
161
+%if %{with with_vs}
162
+%{_datadir}/applications/vsproxy-qt%{qtversion}.desktop
163
+%endif
164
 %{_datadir}/pixmaps/avidemux3.png
165
 
166
 %files qt%{qtversion}-lang
167
avidemux3-vsproxy-qt.desktop Added
13
 
1
@@ -0,0 +1,11 @@
2
+[Desktop Entry]
3
+Name=vsProxy-qtqtversion
4
+GenericName=vsProxy-QTqtversion
5
+Comment=Video Editor
6
+Exec=vsProxy_gui_qtqtversion
7
+Icon=avidemux3
8
+Terminal=false
9
+Type=Application
10
+Categories=AudioVideo;AudioVideoEditing;
11
+X-KDE-StartupNotify=true
12
+X-SuSE-translate=true
13
avidemux_2.6.18.tar.gz/avidemux_core/ffmpeg_package/ffmpeg-3.0.5.tar.bz2 Deleted
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shader1.shader Deleted
16
 
1
@@ -1,14 +0,0 @@
2
-    #extension GL_ARB_texture_rectangle: enable
3
-    uniform sampler2DRect myTextureY; // tex unit 0
4
-    uniform sampler2DRect myTextureU; // tex unit 1
5
-    uniform sampler2DRect myTextureV; // tex unit 2
6
-    const vec2 half_vec=vec2(0.5,0.5);
7
-
8
-    void main(void) {
9
-      vec2 full_coord=gl_TexCoord[0].xy;
10
-      vec2 half_coord=full_coord*half_vec;
11
-      vec4 texvalV = texture2DRect(myTextureV, half_coord);
12
-      vec4 texvalU = texture2DRect(myTextureU, half_coord);
13
-      vec4 texvalY = texture2DRect(myTextureY, full_coord);
14
-      gl_FragColor = vec4(texvalY.r, texvalU.r, texvalV.r, 1.0);
15
-        }
16
avidemux_2.6.19.tar.gz/addons/dumpIndex Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/addons/dumpIndex/ADM_indexFile.cpp Added
201
 
1
@@ -0,0 +1,280 @@
2
+/**
3
+    \file ADM_indexFile
4
+    \brief Handle index file reading
5
+    copyright            : (C) 2009 by mean
6
+    email                : fixounet@free.fr
7
+        
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
+#include "ADM_default.h"
19
+#include "ADM_indexFile.h"
20
+#include "ctype.h"
21
+/**
22
+
23
+*/
24
+dmxToken::dmxToken(const char *name,const char *value)
25
+{
26
+    this->name=ADM_strdup(name);
27
+    this->value=ADM_strdup(value);
28
+}
29
+/**
30
+
31
+*/
32
+dmxToken::~dmxToken()
33
+{
34
+    if(name) ADM_dealloc(name);
35
+    if(value) ADM_dealloc(value);
36
+}
37
+
38
+char *dmxToken::getName(void) {return name;}
39
+char *dmxToken::getValue(void){return value;}
40
+/**
41
+
42
+*/
43
+bool  dmxToken::isNumeric(void)
44
+{
45
+bool num=true;
46
+int l=strlen(value);
47
+    for(int i=0;i<l;i++)
48
+    {
49
+        char v=value[i];
50
+        if(!isdigit(v)&& v!=0x0a && v!=0x0d) num=false;
51
+    }
52
+    return num;
53
+}   
54
+/**
55
+
56
+*/
57
+uint32_t dmxToken::getAsNumber(void)
58
+{
59
+uint32_t v;
60
+    v=atoi(value);
61
+    return v;
62
+}
63
+/**
64
+
65
+*/
66
+uint64_t dmxToken::getAsNumber64(void)
67
+{
68
+uint64_t v;
69
+    sscanf(value,"%" PRId64,&v);
70
+    return v;
71
+}
72
+
73
+//****************************************************************************************
74
+
75
+/**
76
+
77
+*/
78
+
79
+indexFile::indexFile()
80
+{
81
+    file=NULL;
82
+    buffer.setSize(ADM_INDEX_BUFFER);
83
+}
84
+/**
85
+
86
+*/
87
+
88
+indexFile::~indexFile()
89
+{
90
+   close();
91
+}
92
+/**
93
+
94
+*/
95
+void  indexFile::purgeTokens(void)
96
+{
97
+    int nb=ListOfTokens.size();
98
+    for(int i=0;i<nb;i++)
99
+        delete ListOfTokens[i];
100
+    ListOfTokens.clear();
101
+}
102
+/**
103
+
104
+*/
105
+dmxToken        *indexFile::searchToken(const char *name)
106
+{
107
+    for(int i=0;i<ListOfTokens.size();i++)
108
+    {
109
+        dmxToken *tk=ListOfTokens[i];
110
+        if(!strcasecmp(name,tk->getName())) return tk;
111
+    }
112
+    printf("[indexFile] Token %s not found\n",name);
113
+    for(int i=0;i<ListOfTokens.size();i++)
114
+        printf("  [%d]%s\n",i,ListOfTokens[i]->getName());
115
+    return NULL;
116
+}
117
+/**
118
+
119
+*/
120
+
121
+bool indexFile::open(const char *name)
122
+{
123
+    file=ADM_fopen(name,"rt");
124
+    if(!file) return false;
125
+    return true;
126
+}
127
+
128
+/**
129
+
130
+*/
131
+
132
+bool indexFile::close(void)
133
+{
134
+    if(file)
135
+    {
136
+        fclose(file);
137
+        file=NULL;
138
+    }
139
+    purgeTokens();
140
+    return true;
141
+}
142
+
143
+/**
144
+
145
+*/
146
+
147
+bool indexFile::goToSection(const char *section)
148
+{
149
+char match[100];
150
+    sprintf(match,"[%s]\n",section);
151
+    fseek(file,0,SEEK_SET);
152
+    while(1)
153
+    {
154
+        if(!fgets((char*)buffer.at(0),ADM_INDEX_BUFFER,file) )
155
+        {
156
+            printf("[indexFile] Cannot find section %s,%s*\n",section,match);
157
+            return false;
158
+        }
159
+        if(!strcasecmp((char*)buffer.at(0),match)) return true;
160
+    }
161
+    return false;
162
+}
163
+
164
+/**
165
+    \fn readSection
166
+*/
167
+
168
+bool indexFile::readSection(const char *section)
169
+{
170
+    if(false==goToSection(section)) return false;
171
+    // Until we reach the next section, store all couples name/value into the
172
+    //
173
+    while(1)
174
+    {
175
+        if(!readString(ADM_INDEX_BUFFER,buffer.at(0))) break;
176
+        if(buffer[0]=='[') break; // end of section
177
+        // Now search the = and replace it by a zero
178
+        char *head,*tail;
179
+        head=(char *)buffer.at(0);
180
+        tail=(char *)buffer.at(0);
181
+        tail=strstr((char *)buffer.at(0),"=");
182
+        if(!tail) 
183
+        {
184
+            if(buffer[0]=='#') // Comment
185
+            {
186
+
187
+            }else   
188
+            {
189
+                printf("[psIndexer]Weird line :%s\n",buffer.at(0));
190
+                break;
191
+            }
192
+        }else
193
+        {
194
+            *tail=0;
195
+            tail++;
196
+            dmxToken *tk=new dmxToken(head,tail);
197
+            ListOfTokens.append(tk);
198
+        }
199
+    }
200
+    return true;
201
avidemux_2.6.19.tar.gz/addons/dumpIndex/ADM_indexFile.h Added
81
 
1
@@ -0,0 +1,79 @@
2
+/**
3
+    \file ADM_indexFile
4
+    \brief Handle index file reading
5
+    copyright            : (C) 2009 by mean
6
+    email                : fixounet@free.fr
7
+        
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
+
19
+#ifndef ADM_INDEXFILE_H
20
+#define ADM_INDEXFILE_H
21
+#include "ADM_coreDemuxerMpeg6_export.h"
22
+#include <BVector.h>
23
+#include "ADM_byteBuffer.h"
24
+/**
25
+    \class indexFile
26
+    \brief Read a index file easily
27
+*/
28
+#define ADM_INDEX_FILE_VERSION 5
29
+#define ADM_INDEX_BUFFER (20*1024)
30
+/**
31
+    \class dmxToken
32
+*/
33
+class ADM_COREDEMUXER6_EXPORT dmxToken
34
+{
35
+protected:
36
+    char *name;
37
+    char *value;
38
+    FILE *file;
39
+    void  purgeTokens(void);
40
+public:
41
+    
42
+    dmxToken(const char *name,const char *value);
43
+    ~dmxToken();
44
+    char *getName(void);
45
+    char *getValue(void);
46
+    bool  isNumeric(void);
47
+    uint32_t getAsNumber(void);
48
+    uint64_t getAsNumber64(void);
49
+};
50
+
51
+/**
52
+    \class indexFile
53
+*/
54
+
55
+class ADM_COREDEMUXER6_EXPORT indexFile
56
+{
57
+protected:
58
+    ADM_byteBuffer buffer;
59
+    dmxToken        *searchToken(const char *name);
60
+    void            purgeTokens(void);
61
+
62
+    FILE            *file;
63
+    BVector         <dmxToken *> ListOfTokens;
64
+public:
65
+
66
+        indexFile();
67
+        ~indexFile();
68
+    bool open(const char *name);
69
+    bool close(void);
70
+    bool goToSection(const char *section);
71
+    bool readSection(const char *section);
72
+    uint64_t getAsUint64(const char *token);
73
+    uint32_t getAsUint32(const char *token);
74
+    uint32_t getAsHex(const char *token);
75
+    char *getAsString(const char *token);
76
+    bool  readString(uint32_t maxLen,uint8_t *buffer);
77
+
78
+};
79
+
80
+#endif
81
avidemux_2.6.19.tar.gz/addons/dumpIndex/ADM_ts.h Added
22
 
1
@@ -0,0 +1,19 @@
2
+
3
+class tsHeader
4
+{
5
+public:
6
+    bool readIndex(indexFile *index);
7
+    bool processVideoIndex(char *buffer);
8
+    bool readVideo(indexFile *index);
9
+};
10
+
11
+class dmxFrame
12
+{
13
+public:
14
+    int startAt;
15
+    int index;
16
+    uint64_t pts,dts;
17
+    int type;
18
+    int len;
19
+    
20
+};
21
\ No newline at end of file
22
avidemux_2.6.19.tar.gz/addons/dumpIndex/ADM_tsReadIndex.cpp Added
192
 
1
@@ -0,0 +1,190 @@
2
+/***************************************************************************
3
+        \file ADM_tsReadIndex.cpp
4
+        \brief Read ts index
5
+
6
+    copyright            : (C) 2007/2009 by mean
7
+
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
+#include <vector>
19
+#include <string>
20
+using std::vector;
21
+using std::string;
22
+
23
+#include "ADM_default.h"
24
+#include "fourcc.h"
25
+#include "DIA_coreToolkit.h"
26
+#include "ADM_indexFile.h"
27
+#include "ADM_string.h"
28
+#include "ADM_vidMisc.h"
29
+
30
+#include <math.h>
31
+#define TS_MAX_LINE 10000
32
+#include "ADM_ts.h"
33
+
34
+extern uint8_t  mk_hex(uint8_t a, uint8_t b);;
35
+/**
36
+        \fn readIndex
37
+        \brief Read the [video] section of the index file
38
+
39
+*/
40
+bool    tsHeader::readIndex(indexFile *index)
41
+{
42
+char buffer[TS_MAX_LINE];
43
+bool firstAudio=true;
44
+        printf("[TsDemuxerer] Reading index\n");
45
+        if(!index->goToSection("Data")) return false;
46
+      
47
+        while(1)
48
+        {
49
+            if(!index->readString(TS_MAX_LINE,(uint8_t *)buffer)) return true;
50
+            if(buffer[0]=='[') return true;
51
+            if(buffer[0]==0xa || buffer[0]==0xd) continue; // blank line
52
+            // Now split the line
53
+            if(!strncmp(buffer,"Video ",6))
54
+            {
55
+                processVideoIndex(buffer+6);
56
+            }
57
+            if(!strncmp(buffer,"Audio ",6))
58
+            {
59
+                if(firstAudio) 
60
+                    firstAudio=false; // Ignore first line
61
+            }
62
+        }
63
+    return true;
64
+}
65
+
66
+/**
67
+    \fn processVideoIndex
68
+    \brief process an mpeg index entry from a line from the index file
69
+*/
70
+bool tsHeader::processVideoIndex(char *buffer)
71
+{
72
+            char *head=buffer;
73
+            uint64_t pts,dts,startAt;
74
+            uint32_t offset;
75
+            if(4!=sscanf(head,"at:%" PRIx64":%" PRIx32" Pts:%" PRId64":%" PRId64,&startAt,&offset,&pts,&dts))
76
+            {
77
+                    printf("[TsDemuxerer] cannot read fields in  :%s\n",buffer);
78
+                    return false;
79
+            }
80
+            
81
+            char *start=strstr(buffer," I");
82
+            if(!start) start=strstr(buffer," D");
83
+            if(!start) return true;
84
+            start+=1;
85
+            int count=0;
86
+            uint64_t lastDts=ADM_NO_PTS;
87
+            while(1)
88
+            {
89
+                char *cur=start;
90
+                char type=1;
91
+                char picStruct='F';
92
+                char *next;
93
+                uint32_t len;
94
+                type=*cur;
95
+                if(type==0x0a || type==0x0d || !type) break;
96
+                cur++;
97
+                picStruct=*cur;
98
+                cur++;
99
+                if(*(cur)!=':')
100
+                {
101
+                    printf("[TsDemuxer]  instead of : (%c %x %x):\n",*cur,*(cur-1),*cur);
102
+                }
103
+                cur++;
104
+                next=strstr(start," ");
105
+                int64_t ppts,ddts;
106
+                ADM_assert(3==sscanf(cur,"%" PRIx32":%" PRId64":%" PRId64,&len,&ppts,&ddts));
107
+                
108
+                
109
+                dmxFrame *frame=new dmxFrame;
110
+                if(!count)
111
+                {
112
+                    frame->pts=pts;
113
+                    frame->dts=dts;
114
+
115
+                    frame->startAt=startAt;
116
+                    frame->index=offset;
117
+
118
+                }else       
119
+                {
120
+                    if(ppts==-1 || pts==-1)
121
+                        frame->pts=ADM_NO_PTS;
122
+                    else
123
+                        frame->pts=pts+ppts;
124
+                    if(ddts==-1 || dts==-1)
125
+                        frame->dts=ADM_NO_PTS;
126
+                    else
127
+                        frame->dts=dts+ddts;
128
+
129
+                    frame->startAt=0;
130
+                    frame->index=0;
131
+                }
132
+                switch(type)
133
+                {
134
+                    case 'I': frame->type=1;break;
135
+                    case 'P': frame->type=2;break;
136
+                    case 'B': frame->type=3;break;
137
+                    case 'D': frame->type=4;break;
138
+                    default: ADM_assert(0);
139
+                }
140
+                switch(picStruct)
141
+                {
142
+                        default: ADM_warning("Unknown picture structure %c\n",picStruct);
143
+                        case 'F': ;break;
144
+                        case 'T': ;break;
145
+                        case 'B': ;break;
146
+
147
+                }
148
+                frame->len=len;
149
+                
150
+                printf("Frame %c len = %6d dts = %s ",type,len,ADM_us2plain(frame->dts));
151
+                printf(" pts = %s  ",ADM_us2plain(frame->pts));
152
+                if(lastDts!=ADM_NO_PTS && frame->dts!=ADM_NO_PTS)
153
+                {
154
+                    printf("delta dts=%d",(int)(frame->dts-lastDts));
155
+                }
156
+                printf("\n");
157
+                lastDts=frame->dts;
158
+                
159
+                count++;
160
+                if(!next) 
161
+                {
162
+                    break;
163
+                }
164
+                start=next+1;
165
+            }
166
+
167
+        return true;
168
+}
169
+
170
+/**
171
+        \fn readVideo
172
+        \brief Read the [video] section of the index file
173
+
174
+*/
175
+
176
+bool    tsHeader::readVideo(indexFile *index)
177
+{
178
+    printf("[TsDemuxerer] Reading Video\n");
179
+    if(!index->readSection("Video")) return false;
180
+    uint32_t w,h,fps,ar;
181
+    
182
+    w=index->getAsUint32("Width");
183
+    h=index->getAsUint32("height");
184
+    fps=index->getAsUint32("Fps");
185
+    char *type=index->getAsString("VideoCodec");
186
+
187
+
188
+
189
+    return true;
190
+}
191
+//EOF
192
avidemux_2.6.19.tar.gz/addons/dumpIndex/CMakeLists.txt Added
47
 
1
@@ -0,0 +1,45 @@
2
+SET(ADM_PROJECT tsDump)
3
+#
4
+SET(CMAKE_INSTALL_PREFIX /usr)
5
+SET(AVIDEMUX_SOURCE_DIR ${CMAKE_SOURCE_DIR}/../..)
6
+#
7
+
8
+MESSAGE(STATUS "Checking for AVIDEMUX_SOURCE_DIR, AVIDEMUX_LIB_DIR, AVIDEMUX_INCLUDE_DIR...")
9
+IF (NOT AVIDEMUX_SOURCE_DIR)
10
+   MESSAGE(FATAL_ERROR "Please add -DAVIDEMUX_SOURCE_DIR=path_to_avidemux_source. You just need the source tree.")
11
+ELSE (NOT AVIDEMUX_TOP_SOURCE_DIR)
12
+        # We need TOP_SOURCE_DIR 
13
+   SET(AVIDEMUX_TOP_SOURCE_DIR "${AVIDEMUX_SOURCE_DIR}" CACHE STRING "")
14
+ENDIF (NOT AVIDEMUX_SOURCE_DIR)
15
+
16
+
17
+# Common definitions...
18
+SET(CMAKE_MODULE_PATH "${AVIDEMUX_TOP_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
19
+include(${AVIDEMUX_TOP_SOURCE_DIR}/cmake/commonCmakeApplication.cmake)
20
+include(${AVIDEMUX_TOP_SOURCE_DIR}/cmake/admAsNeeded.cmake)
21
+########################################
22
+# Add include dirs
23
+########################################
24
+SET(AVIDEMUX_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}")
25
+MARK_AS_ADVANCED(AVIDEMUX_INSTALL_DIR)
26
+include(admInstallDir)
27
+#########################################
28
+# Get regular stuff from main app
29
+#########################################
30
+include(admCoreIncludes)
31
+LINK_DIRECTORIES("${AVIDEMUX_LIB_DIR}")
32
+INCLUDE_DIRECTORIES(${AVIDEMUX_INCLUDE_DIR}/avidemux/2.6/)
33
+
34
+IF (FRESH_BUILD)
35
+   MESSAGE("")
36
+ENDIF (FRESH_BUILD)
37
+
38
+
39
+SET(SRCS 
40
+        main.cpp
41
+        ADM_indexFile.cpp
42
+        ADM_tsReadIndex.cpp
43
+        )
44
+
45
+ADD_EXECUTABLE(dumpIndex ${SRCS})
46
+TARGET_LINK_LIBRARIES(dumpIndex ADM_core6)
47
avidemux_2.6.19.tar.gz/addons/dumpIndex/main.cpp Added
44
 
1
@@ -0,0 +1,42 @@
2
+#include <vector>
3
+#include <string>
4
+using std::vector;
5
+using std::string;
6
+
7
+#include "ADM_default.h"
8
+#include "fourcc.h"
9
+#include "DIA_coreToolkit.h"
10
+#include "ADM_indexFile.h"
11
+#include "ADM_string.h"
12
+
13
+#include <math.h>
14
+#define TS_MAX_LINE 10000
15
+#include "ADM_ts.h"
16
+
17
+extern uint8_t ADM_InitMemcpy(void);
18
+int main(int argc,char **argv)
19
+{
20
+    ADM_initBaseDir(argc,argv);
21
+    ADM_InitMemcpy();
22
+
23
+
24
+    if(argc!=2)
25
+    {
26
+        printf("dumpIndex xxx.ts.idx2\n");
27
+        exit(1);
28
+    }
29
+    char *name=argv[1];
30
+    tsHeader ts;
31
+    indexFile idx;
32
+    
33
+    if(!idx.open(name))
34
+    {
35
+        printf("Cannot open file <%s>\n",name);
36
+        exit(-1);
37
+    }
38
+    ts.readIndex(&idx);
39
+    idx.close();
40
+    return 0;
41
+    
42
+    
43
+}
44
avidemux_2.6.19.tar.gz/autononreg/py/editor/pyNextFrame.py Added
23
 
1
@@ -0,0 +1,21 @@
2
+adm=Avidemux()
3
+editor=Editor()
4
+gui=Gui()
5
+if(0==adm.loadVideo("/work/samples/avi/3mn.avi")):
6
+   throw("cannot load file")
7
+lastOk=0
8
+duration=editor.getVideoDuration()
9
+print("================= SCANNING=====================")
10
+for i in range(0,10000000):
11
+        f=editor.nextFrame()
12
+        if (f == 0):
13
+                if(abs(lastOk-duration)<400*1000): # if we get near the end (0.4s near) it probably means ok
14
+                    gui.displayInfo("Done","All ok")
15
+                    return    
16
+                errorString="Error at picture="+str(i)+", \nlast frame ok was at time ="+str(lastOk/1000000)+ "s \n total duration ="+str(duration/1000000)
17
+                gui.displayError("Oops",str(errorString))
18
+                return
19
+        lastOk=editor.getPts(i)
20
+print("================= /SCANNING=====================")
21
+gui.displayInfo("Done","All ok")
22
+
23
avidemux_2.6.18.tar.gz/avidemux/cli/ADM_userInterfaces/ADM_gui2/gui_none.cpp -> avidemux_2.6.19.tar.gz/avidemux/cli/ADM_userInterfaces/ADM_gui2/gui_none.cpp Changed
18
 
1
@@ -60,6 +60,9 @@
2
 //**************************************************
3
 void UI_refreshCustomMenu(void) {}
4
 
5
+void UI_applySettings(void)
6
+{}
7
+
8
 int    UI_getCurrentPreview(void)
9
 {
10
   return 0; 
11
@@ -171,4 +174,6 @@
12
 {
13
         return true;
14
 }
15
+void UI_setNeedsResizingFlag(bool resize)
16
+{}
17
 // EOF
18
avidemux_2.6.18.tar.gz/avidemux/common/ADM_commonUI/DIA_prefs.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_commonUI/DIA_prefs.cpp Changed
78
 
1
@@ -64,6 +64,9 @@
2
 char     *alsaDevice=NULL;
3
 
4
 bool     balternate_mp3_tag=true;
5
+bool     lastReadDirAsTarget=false;
6
+bool     altKeyboardShortcuts=false;
7
+bool     swapUpDown=false;
8
 
9
 uint32_t pp_type=3;
10
 uint32_t pp_value=5;
11
@@ -162,6 +165,15 @@
12
 
13
         prefs->get(RESET_ENCODER_ON_VIDEO_LOAD,&loadDefault);
14
 
15
+        // Make users happy who prefer the output dir to be the same as the input dir
16
+        prefs->get(FEATURES_USE_LAST_READ_DIR_AS_TARGET,&lastReadDirAsTarget);
17
+
18
+        // PgUp and PgDown are cumbersome to reach on some laptops, offer alternative kbd shortcuts
19
+        prefs->get(KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,&altKeyboardShortcuts);
20
+
21
+        // Optionally reverse UP and DOWN keys for navigation
22
+        prefs->get(KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,&swapUpDown);
23
+
24
         // Multithreads
25
         prefs->get(FEATURES_THREADING_LAVC, &lavcThreads);
26
 
27
@@ -215,6 +227,8 @@
28
         diaElemToggle allowAnyMpeg(&mpeg_no_limit,QT_TRANSLATE_NOOP("adm","_Accept non-standard audio frequency for DVD"));
29
         diaElemToggle openDml(&use_odml,QT_TRANSLATE_NOOP("adm","Create _OpenDML files"));
30
         diaElemToggle resetEncoder(&loadDefault,QT_TRANSLATE_NOOP("adm","_Revert to saved default output settings on video load"));
31
+        diaElemToggle enableAltShortcuts(&altKeyboardShortcuts,QT_TRANSLATE_NOOP("adm","_Enable alternative keyboard shortcuts"));
32
+        diaElemToggle swapUpDownKeys(&swapUpDown,QT_TRANSLATE_NOOP("adm","Re_verse UP and DOWN arrow keys for navigation"));
33
         diaElemToggle checkForUpdate(&doAutoUpdate,QT_TRANSLATE_NOOP("adm","_Check for new release"));
34
 
35
 
36
@@ -274,6 +288,8 @@
37
 
38
         diaElemToggle   togTagMp3(&balternate_mp3_tag,QT_TRANSLATE_NOOP("adm","_Use alternative tag for MP3 in .mp4"));
39
 
40
+        diaElemToggle useLastReadAsTarget(&lastReadDirAsTarget,QT_TRANSLATE_NOOP("adm","_Default to the directory of the last read file for saving"));
41
+
42
         diaMenuEntry videoMode[]={
43
                              {RENDER_GTK, getNativeRendererDesc(0), NULL}
44
 #ifdef USE_XV
45
@@ -416,15 +432,15 @@
46
 
47
 
48
         /* User Interface */
49
-        diaElem *diaUser[]={&menuMessage,&menuLanguage,&resetEncoder,&checkForUpdate};
50
-        diaElemTabs tabUser(QT_TRANSLATE_NOOP("adm","User Interface"),4,diaUser);
51
+        diaElem *diaUser[]={&menuMessage,&menuLanguage,&resetEncoder,&enableAltShortcuts,&swapUpDownKeys,&checkForUpdate};
52
+        diaElemTabs tabUser(QT_TRANSLATE_NOOP("adm","User Interface"),6,diaUser);
53
 
54
          /* Automation */
55
 
56
 
57
         /* Output */
58
-        diaElem *diaOutput[]={&autoSplit,&openDml,&allowAnyMpeg,&togTagMp3};
59
-        diaElemTabs tabOutput(QT_TRANSLATE_NOOP("adm","Output"),4,(diaElem **)diaOutput);
60
+        diaElem *diaOutput[]={&autoSplit,&openDml,&allowAnyMpeg,&togTagMp3,&useLastReadAsTarget};
61
+        diaElemTabs tabOutput(QT_TRANSLATE_NOOP("adm","Output"),5,(diaElem **)diaOutput);
62
 
63
         /* Audio */
64
 
65
@@ -609,6 +625,12 @@
66
             prefs->set(FEATURES_LIBVA,blibva);
67
             // Alternate mp3 tag (haali)
68
             prefs->set(FEATURES_ALTERNATE_MP3_TAG,balternate_mp3_tag);
69
+            // Make users happy who prefer the output dir to be the same as the input dir
70
+            prefs->set(FEATURES_USE_LAST_READ_DIR_AS_TARGET,lastReadDirAsTarget);
71
+            // Enable alternate keyboard shortcuts
72
+            prefs->set(KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,altKeyboardShortcuts);
73
+            // Allow to use the UP key to navigate back, DOWN to navigate forward
74
+            prefs->set(KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,swapUpDown);
75
 
76
             prefs->set(DEFAULT_LANGUAGE,std::string(myLanguages[languageIndex].lang));
77
 
78
avidemux_2.6.18.tar.gz/avidemux/common/ADM_commonUI/GUI_ui.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_commonUI/GUI_ui.h Changed
19
 
1
@@ -18,9 +18,6 @@
2
 void    UI_iconify( void );
3
 void    UI_deiconify( void );
4
 
5
-uint32_t UI_requiredWidth(void);
6
-uint32_t UI_requiredHeight(void);
7
-
8
 int     UI_readCurFrame( void );
9
 int     UI_readCurTime(uint16_t &hh, uint16_t &mm, uint16_t &ss, uint16_t &ms);
10
 void    UI_JumpDone(void);
11
@@ -48,6 +45,7 @@
12
 uint8_t UI_arrow_disabled(void);
13
 
14
 void UI_refreshCustomMenu(void);
15
+void UI_applySettings(void);
16
 
17
 bool UI_setVUMeter( uint32_t volume[6]); // Volume between 0 and 255.
18
 bool UI_setDecoderName(const char *name);
19
avidemux_2.6.18.tar.gz/avidemux/common/ADM_commonUI/myOwnMenu.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_commonUI/myOwnMenu.h Changed
20
 
1
@@ -60,6 +60,7 @@
2
             {MENU_SEPARATOR,"-",NULL,ACT_DUMMY             ,NULL,       NULL},
3
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Set Marker A"),       NULL,ACT_MarkA      ,NULL,"Ctrl+PgUp"},
4
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Set Marker B"),       NULL,ACT_MarkB      ,NULL,"Ctrl+PgDown"},
5
+            {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Reset Markers"),      NULL,ACT_ResetMarkers,NULL,"Ctrl+Home"},
6
             {MENU_SEPARATOR,"-",NULL,ACT_DUMMY             ,NULL,       NULL},
7
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Pr&eferences"),       NULL,ACT_PREFERENCES,NULL,NULL},
8
             {MENU_SEPARATOR,"-",NULL,ACT_DUMMY             ,NULL,NULL},
9
@@ -103,8 +104,8 @@
10
 
11
 static const MenuEntry _myMenuGo[] = {
12
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Play/Stop"),           NULL,ACT_PlayAvi        ,MKICON(player_play),   "Space"},
13
-            {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Previous Frame"),      NULL,ACT_PreviousFrame  ,MKICON(previous),      "Left"},
14
-            {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Next Frame"),          NULL,ACT_NextFrame      ,MKICON(next),          "Right"},
15
+            {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Previous Frame"),      NULL,ACT_PreviousFrame  ,MKICON(back),          "Left"},
16
+            {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Next Frame"),          NULL,ACT_NextFrame      ,MKICON(forward),       "Right"},
17
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Previous Intra Frame"),NULL,ACT_PreviousKFrame ,MKICON(player_rew),    "Down"},
18
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Next Intra Frame"),    NULL,ACT_NextKFrame     ,MKICON(player_fwd),    "Up"},
19
             {MENU_ACTION,QT_TRANSLATE_NOOP("adm","Previous Black Frame"),NULL,ACT_PrevBlackFrame ,MKICON(prev_black),    NULL},
20
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/include/ADM_edit.hxx -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/include/ADM_edit.hxx Changed
25
 
1
@@ -196,6 +196,7 @@
2
                     bool        copyToClipBoard(uint64_t startTime, uint64_t endTime);
3
                     bool        pasteFromClipBoard(uint64_t currentTime);
4
                     bool        appendFromClipBoard(void);
5
+                    bool        clipboardEmpty(void);
6
                     bool       addFile (const char *name);
7
                    int         appendFile(const char *name);
8
                    void        closeFile(void);
9
@@ -226,11 +227,15 @@
10
 
11
 protected:
12
                     ListOfUndoQueueElements undoQueue;
13
+                    static const uint8_t maxUndoSteps=50;
14
+                    uint32_t    _cnt; // track the nb of performed undo steps for redo
15
 public:
16
                     bool        addToUndoQueue(void);
17
                     bool        undo(void);
18
                     bool        redo(void);
19
                     bool        clearUndoQueue(void);
20
+                    bool        canUndo(void);
21
+                    bool        canRedo(void);
22
 /************************************ Public API ***************************/
23
 public:
24
                     uint64_t    getLastKeyFramePts(void);
25
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/include/ADM_segment.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/include/ADM_segment.h Changed
9
 
1
@@ -198,6 +198,7 @@
2
             bool        pasteFromClipBoard(uint64_t currentTime);
3
             bool        appendFromClipBoard(void);
4
             bool        dumpClipBoard();
5
+            bool        clipboardEmpty(void);
6
 protected:
7
             void        dumpSegmentsInternal(ListOfSegments &l);
8
 };
9
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/include/IEditor.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/include/IEditor.h Changed
27
 
1
@@ -1,5 +1,18 @@
2
-#ifndef IEditor_h
3
-#define IEditor_h
4
+/***************************************************************************
5
+     \file  IEditor.h
6
+     \brief Editor Interface class
7
+   
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
+#pragma once
19
 
20
 #include "ADM_Video.h"
21
 #include "ADM_image.h"
22
@@ -107,4 +120,3 @@
23
     virtual const char *getVar(const char *key)=0;
24
     virtual bool  printEnv(void)=0;
25
 };
26
-#endif
27
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/src/ADM_edit.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/src/ADM_edit.cpp Changed
33
 
1
@@ -89,7 +89,14 @@
2
 {
3
     return _segments.appendFromClipBoard();
4
 }
5
-
6
+/**
7
+    \fn clipboardEmpty
8
+    \brief Return true if we have nothing to paste or append
9
+*/
10
+bool ADM_Composer::clipboardEmpty(void)
11
+{
12
+    return _segments.clipboardEmpty();
13
+}
14
 /**
15
     \fn resetSeg
16
     \brief Redo a 1:1 mapping between ref video and segment
17
@@ -263,7 +270,6 @@
18
     {
19
         printf("[Editor]The video codec has some extradata (%d bytes)\n",l);
20
         mixDump(d,l);
21
-        printf("\n");
22
     }
23
 
24
   // 1st if it is our first video we update postproc
25
@@ -357,6 +363,7 @@
26
 
27
   printf ("[Editor] Decoder FCC: ");
28
   fourCC::print (info.fcc);
29
+  printf("\n");
30
   // ugly hack
31
   if (info.fps1000 > 2000 * 1000)
32
     {
33
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/src/ADM_segment.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/src/ADM_segment.cpp Changed
32
 
1
@@ -894,7 +894,7 @@
2
  */
3
 bool        ADM_EditorSegment::pasteFromClipBoard(uint64_t currentTime)
4
 {
5
-    if(!clipboard.size())
6
+    if(clipboardEmpty())
7
     {
8
         ADM_info("The clipboard is empty, nothing to do\n");
9
         return true;
10
@@ -946,7 +946,7 @@
11
  */
12
 bool ADM_EditorSegment::appendFromClipBoard(void)
13
 {
14
-    if(!clipboard.size())
15
+    if(clipboardEmpty())
16
     {
17
         ADM_info("The clipboard is empty, nothing to do\n");
18
         return true;
19
@@ -959,4 +959,12 @@
20
     return true;
21
 }
22
 
23
+/**
24
+ * \fn clipboardEmpty
25
+ */
26
+bool ADM_EditorSegment::clipboardEmpty(void)
27
+{
28
+    return clipboard.empty();
29
+}
30
+
31
 //EOF
32
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioPcm.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioPcm.cpp Changed
12
 
1
@@ -102,8 +102,8 @@
2
     {
3
         if(labs((int64_t)lastDts-(int64_t)packetBufferDts)>ADM_ALLOWED_DRIFT_US)
4
         {
5
-            ADM_info("[Composer::getPCMPacket] Track %d,%" PRIx64" : drift %d, computed :%s",
6
-                        (int)myTrackNumber,(uint64_t)trk,(int)(lastDts-packetBufferDts),ADM_us2plain(lastDts));
7
+            ADM_info("[Composer::getPCMPacket] Track %d,%p ", (int)myTrackNumber,trk);
8
+            ADM_info(": drift %d, computed :%s", (int)(lastDts-packetBufferDts),ADM_us2plain(lastDts));
9
             ADM_info(" got %s\n", ADM_us2plain(packetBufferDts));
10
             if(packetBufferDts<lastDts)
11
             {
12
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioTrackExternal.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/src/audio/ADM_edAudioTrackExternal.cpp Changed
9
 
1
@@ -141,6 +141,7 @@
2
                 access=new ADM_audioAccessFileAACADTS(name,offset);
3
                 break;
4
         case WAV_PCM:
5
+        case WAV_EAC3:
6
         case WAV_AC3:
7
         case WAV_MP2:
8
         case WAV_MP3:
9
avidemux_2.6.18.tar.gz/avidemux/common/ADM_editor/src/utils/ADM_edUndoQueue.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_editor/src/utils/ADM_edUndoQueue.cpp Changed
56
 
1
@@ -17,9 +17,6 @@
2
 #include "ADM_segment.h"
3
 #include "ADM_edit.hxx"
4
 
5
-static const uint8_t maxUndoSteps=50;
6
-uint32_t _cnt; // track the nb of performed undo steps for redo
7
-
8
 /**
9
     \fn addToUndoQueue
10
     \brief stores the segment layout and markers in the undo queue
11
@@ -66,7 +63,7 @@
12
 
13
 bool ADM_Composer::undo(void)
14
 {
15
-    if(undoQueue.empty() || undoQueue.size()<_cnt+1)
16
+    if(!canUndo())
17
     {
18
         ADM_info("The undo queue is empty, nothing to do\n");
19
         return false;
20
@@ -94,7 +91,7 @@
21
 
22
 bool ADM_Composer::redo(void)
23
 {
24
-    if(_cnt<2 || undoQueue.size()<_cnt) // _cnt=2 once the first undo operation has been performed
25
+    if(!canRedo())
26
     {
27
         ADM_info("The redo queue is empty, cannot perform redo\n");
28
         return false;
29
@@ -117,4 +114,26 @@
30
     undoQueue.clear();
31
     return true;
32
 }
33
+
34
+/**
35
+    \fn canUndo
36
+*/
37
+
38
+bool ADM_Composer::canUndo(void)
39
+{
40
+    if(undoQueue.empty() || undoQueue.size()<_cnt+1)
41
+        return false;
42
+    return true;
43
+}
44
+
45
+/**
46
+    \fn canRedo
47
+*/
48
+
49
+bool ADM_Composer::canRedo(void)
50
+{
51
+    if(_cnt<2 || undoQueue.size()<_cnt) // _cnt=2 once the first undo operation has been performed
52
+        return false;
53
+    return true;
54
+}
55
 //EOF
56
avidemux_2.6.18.tar.gz/avidemux/common/ADM_muxerGate/include/ADM_videoCopy.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_muxerGate/include/ADM_videoCopy.h Changed
29
 
1
@@ -44,6 +44,7 @@
2
         ADMBitstream    *myBitstream;
3
         uint8_t         *myExtra;
4
         uint32_t        myExtraLen;
5
+        bool            _init;
6
         bool            compactNalus(ADMBitstream *out);
7
         int             convertFromAnnexB(uint8_t *inData,uint32_t inSize,
8
                                                       uint8_t *outData,uint32_t outMaxSize);
9
@@ -53,6 +54,10 @@
10
         virtual         ~ADM_videoStreamCopyFromAnnexB();
11
         virtual bool    getPacket(ADMBitstream *out);
12
         virtual bool    getExtraData(uint32_t *extraLen, uint8_t **extraData) ;
13
+        bool            initOk() {return _init;}
14
+protected:
15
+        bool            extractExtraDataH264();
16
+        bool            extractExtraDataH265();
17
 };
18
 /**
19
         \fn ADM_videoStreamCopyToAnnexB
20
@@ -74,5 +79,8 @@
21
         virtual         ~ADM_videoStreamCopyToAnnexB();
22
         virtual bool    getPacket(ADMBitstream *out);
23
         virtual bool    getExtraData(uint32_t *extraLen, uint8_t **extraData) ;
24
+protected:
25
+        bool extractExtraDataH264();
26
+        bool extractExtraDataH265();
27
 };
28
 #endif
29
avidemux_2.6.18.tar.gz/avidemux/common/ADM_muxerGate/src/ADM_videoCopyFromAnnexB.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_muxerGate/src/ADM_videoCopyFromAnnexB.cpp Changed
201
 
1
@@ -25,7 +25,7 @@
2
 {
3
     #include "libavcodec/avcodec.h"
4
 }
5
-
6
+#include "ADM_h265_tag.h"
7
 extern ADM_Composer *video_body; // Fixme!
8
 
9
 //#warning fixme : double definition
10
@@ -67,15 +67,11 @@
11
     if(nal<=12) ADM_info("Nal : %s",nalType[nal]);
12
     return true;
13
 }
14
-
15
-
16
 /**
17
-    \fn ctor
18
-*/
19
-ADM_videoStreamCopyFromAnnexB::ADM_videoStreamCopyFromAnnexB(uint64_t startTime,uint64_t endTime):
20
-      ADM_videoStreamCopy(startTime,endTime)  
21
+ * \fn extractExtraDataH264
22
+ */
23
+bool ADM_videoStreamCopyFromAnnexB::extractExtraDataH264()
24
 {
25
-    ADM_info("AnnexB to iso filter\n");
26
     myBitstream=new ADMBitstream(ADM_COPY_FROM_ANNEX_B_SIZE);
27
     myBitstream->data=buffer;
28
 
29
@@ -89,78 +85,224 @@
30
     ADMCompressedImage img;
31
     img.data=buffer;
32
     img.dataLength=0;
33
-
34
-    if(true==video_body->getDirectImageForDebug(0,&img))
35
+    if(false==video_body->getDirectImageForDebug(0,&img))
36
     {
37
-        myBitstream->len=img.dataLength;
38
-        NALU_descriptor desc[MAX_NALU_PER_CHUNK];
39
-        //mixDump(img.data,img.dataLength);
40
-        int nbNalu=ADM_splitNalu(myBitstream->data,myBitstream->data+myBitstream->len,
41
-                                MAX_NALU_PER_CHUNK,desc);
42
-        // search sps
43
-        uint8_t *spsStart,*ppsStart;
44
-        uint32_t spsLen=0, ppsLen=0;
45
-        int indexSps,indexPps;
46
-
47
-        indexSps=ADM_findNalu(NAL_SPS,nbNalu,desc);
48
-        if(-1==indexSps)
49
-        {
50
-            ADM_error("Cannot find SPS");
51
-        }
52
-        indexPps=ADM_findNalu(NAL_PPS,nbNalu,desc);
53
-        if(-1==indexPps)
54
-        {
55
-            ADM_error("Cannot find SPS");
56
-        }else
57
-        {
58
-            int count=desc[indexPps].size;
59
-            uint8_t *ptr=desc[indexPps].start+count-1;
60
-            while(count > 4)
61
-            {
62
-                if(*ptr) break;
63
-                ptr--;
64
-                count--;
65
-            }
66
-            ADM_info("PPS removed zero filler %d -> %d\n",(int)desc[indexPps].size,(int)count);
67
-            desc[indexPps].size=count;
68
-        }
69
-       
70
-        if(indexSps!=-1 && indexPps!=-1)
71
+        ADM_warning("Cannot read first image\n");
72
+        return false;
73
+    }
74
+    myBitstream->len=img.dataLength;
75
+    NALU_descriptor desc[MAX_NALU_PER_CHUNK];
76
+    //mixDump(img.data,img.dataLength);
77
+    int nbNalu=ADM_splitNalu(myBitstream->data,myBitstream->data+myBitstream->len,
78
+                            MAX_NALU_PER_CHUNK,desc);
79
+    // search sps
80
+    uint8_t *spsStart,*ppsStart;
81
+    uint32_t spsLen=0, ppsLen=0;
82
+    int indexSps,indexPps;
83
+
84
+    indexSps=ADM_findNalu(NAL_SPS,nbNalu,desc);
85
+    if(-1==indexSps)
86
+    {
87
+        ADM_error("Cannot find SPS");
88
+        return false;
89
+    }
90
+    indexPps=ADM_findNalu(NAL_PPS,nbNalu,desc);
91
+    if(-1==indexPps)
92
+    {
93
+        ADM_error("Cannot find SPS");
94
+        return false;
95
+    }else
96
+    {
97
+        int count=desc[indexPps].size;
98
+        uint8_t *ptr=desc[indexPps].start+count-1;
99
+        while(count > 4)
100
         {
101
-            spsLen=desc[indexSps].size;
102
-            ppsLen=desc[indexPps].size;
103
-            
104
-            ADM_info("Copy from annexB: Found sps=%d, pps=%d.\n",(int)spsLen,(int)ppsLen);
105
-            // Build extraData
106
-            myExtraLen=5+1+2+1+spsLen+1+2+1+ppsLen;
107
-            myExtra=new uint8_t[myExtraLen];
108
-            uint8_t *ptr=myExtra;
109
-            uint8_t *sps=desc[indexSps].start;
110
-            *ptr++=1;           // AVC version
111
-            *ptr++=sps[0];        // Profile
112
-            *ptr++=sps[1];        // Profile
113
-            *ptr++=sps[2];        // Level
114
-            *ptr++=0xff;        // Nal size minus 1
115
-
116
-            *ptr++=0xe1;        // SPS
117
-            *ptr++=(1+spsLen)>>8;
118
-            *ptr++=(1+spsLen)&0xff;
119
-            *ptr++=desc[indexSps].nalu;
120
-            memcpy(ptr,desc[indexSps].start,spsLen);
121
-            ptr+=spsLen;
122
-
123
-            *ptr++=0x1;         // PPS
124
-            *ptr++=(1+ppsLen)>>8;
125
-            *ptr++=(1+ppsLen)&0xff;
126
-            *ptr++=desc[indexPps].nalu;
127
-            memcpy(ptr,desc[indexPps].start,ppsLen);
128
-            ptr+=ppsLen;
129
-
130
-            ADM_info("generated %d bytes of extradata.\n",(int)myExtraLen);
131
-            mixDump(myExtra, myExtraLen);
132
+            if(*ptr) break;
133
+            ptr--;
134
+            count--;
135
         }
136
+        ADM_info("PPS removed zero filler %d -> %d\n",(int)desc[indexPps].size,(int)count);
137
+        desc[indexPps].size=count;
138
+    }
139
+
140
+    spsLen=desc[indexSps].size;
141
+    ppsLen=desc[indexPps].size;
142
+
143
+    ADM_info("Copy from annexB: Found sps=%d, pps=%d.\n",(int)spsLen,(int)ppsLen);
144
+    // Build extraData
145
+    myExtraLen=5+1+2+1+spsLen+1+2+1+ppsLen;
146
+    myExtra=new uint8_t[myExtraLen];
147
+    uint8_t *ptr=myExtra;
148
+    uint8_t *sps=desc[indexSps].start;
149
+    *ptr++=1;           // AVC version
150
+    *ptr++=sps[0];        // Profile
151
+    *ptr++=sps[1];        // Profile
152
+    *ptr++=sps[2];        // Level
153
+    *ptr++=0xff;        // Nal size minus 1
154
+
155
+    *ptr++=0xe1;        // SPS
156
+    *ptr++=(1+spsLen)>>8;
157
+    *ptr++=(1+spsLen)&0xff;
158
+    *ptr++=desc[indexSps].nalu;
159
+    memcpy(ptr,desc[indexSps].start,spsLen);
160
+    ptr+=spsLen;
161
+
162
+    *ptr++=0x1;         // PPS
163
+    *ptr++=(1+ppsLen)>>8;
164
+    *ptr++=(1+ppsLen)&0xff;
165
+    *ptr++=desc[indexPps].nalu;
166
+    memcpy(ptr,desc[indexPps].start,ppsLen);
167
+    ptr+=ppsLen;
168
+
169
+    ADM_info("generated %d bytes of extradata.\n",(int)myExtraLen);
170
+    mixDump(myExtra, myExtraLen);
171
+    return true;
172
+}
173
+
174
+/**
175
+ * 
176
+ * @param ptr
177
+ * @param naluType
178
+ * @param size
179
+ * @param data
180
+ * @return 
181
+ */
182
+static uint8_t *writeNaluH265(uint8_t *ptr, NALU_descriptor *d)
183
+{
184
+    *ptr++=(d->nalu>>1)&0x3f;  //  VPS, SPS, PPS, SEI.  0x20 0x21 0x22
185
+    *ptr++=0x00; // 1 NALU
186
+    *ptr++=0x01;
187
+    *ptr++=(d->size+1)>>8;
188
+    *ptr++=(d->size+1)&0xff;
189
+    *ptr++=d->nalu;
190
+    memcpy(ptr,d->start,d->size);
191
+    return ptr+d->size;
192
+}
193
+
194
+/**
195
+ * \fn extractExtraDataH265
196
+ * We need to pack VPS/PPS/SPS MP4 style
197
+ * 
198
+ * order should be  VPS, SPS, PPS, SEI. 
199
+ */
200
+bool ADM_videoStreamCopyFromAnnexB::extractExtraDataH265()
201
avidemux_2.6.18.tar.gz/avidemux/common/ADM_render/GUI_dxva2Render.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_render/GUI_dxva2Render.cpp Changed
15
 
1
@@ -371,6 +371,13 @@
2
    {
3
         ADM_warning("D3D Present failed\n");
4
    }
5
+#else
6
+    IDirect3DDevice9_BeginScene(d3dDevice);
7
+    IDirect3DDevice9_EndScene(d3dDevice);   
8
+    if( ADM_FAILED(IDirect3DDevice9_Present(d3dDevice, &targetRect, 0, 0, 0)))
9
+    {
10
+        ADM_warning("D3D Present failed\n");
11
+    }
12
    #endif
13
   return true;
14
  }
15
avidemux_2.6.18.tar.gz/avidemux/common/ADM_render/GUI_render.h -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_render/GUI_render.h Changed
11
 
1
@@ -60,6 +60,9 @@
2
 void UI_rgbDraw(void *widg,uint32_t w, uint32_t h,uint8_t *ptr);
3
 void UI_updateDrawWindowSize(void *win,uint32_t w,uint32_t h);
4
 void UI_getWindowInfo(void *draw, GUI_WindowInfo *xinfo);
5
+void UI_resize(uint32_t width, uint32_t height);
6
+bool UI_getNeedsResizingFlag(void);
7
+void UI_setNeedsResizingFlag(bool resize);
8
 
9
 /* The list of render engine we support. Warning the list is UI dependant, i.e. for example on macOsX, the GTK version can do Xv, but the QT4 one cannot */
10
 typedef enum 
11
avidemux_2.6.18.tar.gz/avidemux/common/ADM_render/GUI_vdpauRender.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_render/GUI_vdpauRender.cpp Changed
13
 
1
@@ -66,6 +66,11 @@
2
 */
3
 bool vdpauRender::init( GUI_WindowInfo * window, uint32_t w, uint32_t h,renderZoom zoom)
4
 {
5
+    if(!w || !h)
6
+    {
7
+        ADM_info("[VDPAU] Not trying to initialize with zero size dimensions\n");
8
+        return false;
9
+    }
10
     ADM_info("[Vdpau]Init\n");
11
     info=*window;
12
     if(admVdpau::isOperationnal()==false)
13
avidemux_2.6.18.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_dxva2.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_dxva2.cpp Changed
54
 
1
@@ -99,6 +99,17 @@
2
 #endif
3
 
4
 /**
5
+  \fn dxvaBitDepthFromContext
6
+*/
7
+static int dxvaBitDepthFromContext(AVCodecContext *avctx)
8
+{
9
+
10
+  if(avctx->sw_pix_fmt==AV_PIX_FMT_YUV420P10) // not sure
11
+      return 10;
12
+  return 8;
13
+}
14
+
15
+/**
16
  *
17
  * @param instance
18
  * @param cookie
19
@@ -293,12 +304,13 @@
20
     }
21
 
22
     // Allocate surfaces..
23
-    if(!admDxva2::allocateD3D9Surface(num_surfaces,avctx->coded_width,avctx->coded_height,surfaces,align))
24
+    int bits=dxvaBitDepthFromContext(avctx);
25
+    if(!admDxva2::allocateD3D9Surface(num_surfaces,avctx->coded_width,avctx->coded_height,surfaces,align,bits))
26
     {
27
         ADM_warning("Cannot allocate surfaces \n");
28
         return ;
29
     }
30
-    dx_context->decoder=admDxva2::createDecoder(avctx->codec_id,avctx->coded_width, avctx->coded_height,num_surfaces,surfaces,align);
31
+    dx_context->decoder=admDxva2::createDecoder(avctx->codec_id,avctx->coded_width, avctx->coded_height,num_surfaces,surfaces,align,bits);
32
     aprintf("Decoder=%p\n",dx_context->decoder);
33
     if(!dx_context->decoder)
34
     {
35
@@ -323,7 +335,7 @@
36
 
37
     dx_context->surface         = surfaces;
38
     dx_context->surface_count   = num_surfaces;
39
-    dx_context->cfg             = admDxva2::getDecoderConfig(avctx->codec_id);
40
+    dx_context->cfg             = admDxva2::getDecoderConfig(avctx->codec_id,bits);
41
 
42
     ADM_info("Ctor Successfully setup DXVA2 hw accel (%d surface created, ffdxva=%p,parent=%p,context=%p)\n",num_surfaces,this,parent,avctx);
43
     alive=true;
44
@@ -586,7 +598,8 @@
45
 
46
     outputFormat=ofmt;
47
     ADM_info("This is maybe supported by DXVA2...\n");
48
-    if(!admDxva2::supported(avctx->codec_id))
49
+    int bits=dxvaBitDepthFromContext(avctx);
50
+    if(!admDxva2::supported(avctx->codec_id,bits)) // not sure either
51
     {
52
         ADM_warning("Not supported by DXVA2\n");
53
         return false;
54
avidemux_2.6.18.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_libva.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_libva.cpp Changed
20
 
1
@@ -384,6 +384,10 @@
2
     switch(avctx->codec_id)
3
     {
4
         default:
5
+        case AV_CODEC_ID_MPEG2VIDEO:
6
+                                profile=VAProfileMPEG2Main;
7
+                                break;
8
+            
9
         case AV_CODEC_ID_H264:
10
                                 profile=VAProfileH264High;
11
                                 break;
12
@@ -574,6 +578,7 @@
13
     VAProfile profile=VAProfileNone;
14
     switch(avctx->codec_id)
15
     {
16
+       case AV_CODEC_ID_MPEG2VIDEO: profile= VAProfileMPEG2Main;break;
17
        case AV_CODEC_ID_H264: profile= VAProfileH264High;break;
18
 #ifdef LIBVA_HEVC_DEC       
19
        case AV_CODEC_ID_H265: profile= VAProfileHEVCMain;break;;
20
avidemux_2.6.18.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_vdpau.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_ffmpeg_vdpau.cpp Changed
81
 
1
@@ -60,7 +60,8 @@
2
     ADM_VDPAU_INVALID=0,
3
     ADM_VDPAU_H264=1,
4
     ADM_VDPAU_MPEG2=2,
5
-    ADM_VDPAU_VC1=3
6
+    ADM_VDPAU_VC1=3,
7
+    ADM_VDPAU_H265=4,
8
 }ADM_VDPAU_TYPE;
9
 
10
 #ifdef USE_VDPAU
11
@@ -212,20 +213,26 @@
12
     AVCodecID id=AV_CODEC_ID_NONE;
13
     AVPixelFormat c;
14
     AVPixelFormat outPix;
15
+    int maxW,maxH;
16
     if(avctx->sw_pix_fmt==AV_PIX_FMT_YUV420P) // doont even try non yv12 for the moment
17
         for(i=0;fmt[i]!=AV_PIX_FMT_NONE;i++)
18
         {
19
             c=fmt[i];
20
             ADM_info("[vdpau]: Evaluating %d\n",c);
21
             if(c!=AV_PIX_FMT_VDPAU) continue;        
22
-    #define FMT_V_CHECK(x,y)      case AV_CODEC_ID_##x:   outPix=AV_PIX_FMT_VDPAU_##y;id=avctx->codec_id;break;
23
+    #define FMT_V_CHECK(x,y)      case AV_CODEC_ID_##x:  \
24
+                                         if(admVdpau::queryDecoderCapabilities(y,&maxW,&maxH)) \
25
+                                         { id=avctx->codec_id;\
26
+                                         outPix=AV_PIX_FMT_VDPAU ;}else {ADM_info(#x ":Not supported by HW\n");}\
27
+                                         break;
28
             switch(avctx->codec_id)
29
             {
30
-                FMT_V_CHECK(H264,H264)
31
-                FMT_V_CHECK(MPEG1VIDEO,MPEG1)
32
-                FMT_V_CHECK(MPEG2VIDEO,MPEG2)
33
-                FMT_V_CHECK(WMV3,WMV3)
34
-                FMT_V_CHECK(VC1,VC1)
35
+                FMT_V_CHECK(H264,      VDP_DECODER_PROFILE_H264_HIGH)
36
+                FMT_V_CHECK(HEVC,      VDP_DECODER_PROFILE_HEVC_MAIN) 
37
+                FMT_V_CHECK(MPEG1VIDEO,VDP_DECODER_PROFILE_MPEG1)
38
+                FMT_V_CHECK(MPEG2VIDEO,VDP_DECODER_PROFILE_MPEG2_MAIN)
39
+                FMT_V_CHECK(WMV3,      VDP_DECODER_PROFILE_VC1_MAIN)
40
+                FMT_V_CHECK(VC1,       VDP_DECODER_PROFILE_VC1_MAIN)
41
                 default: 
42
                     continue;
43
                     break;
44
@@ -278,29 +285,28 @@
45
 {
46
         alive=true;
47
         avVdCtx=NULL;
48
-        ADM_VDPAU_TYPE vdpauType=ADM_VDPAU_INVALID;
49
+        
50
         AVCodecID codecID;
51
-        int vdpDecoder=0;
52
         const char *name="";
53
         VdpDevice dev=(VdpDevice)(uint64_t)admVdpau::getVdpDevice();
54
         
55
         switch(_context->codec_id)
56
         {
57
+            case AV_CODEC_ID_HEVC:
58
+                 name="h265";
59
+                 break;
60
             case AV_CODEC_ID_H264:
61
-                 vdpauType=ADM_VDPAU_H264;
62
                  name="h264";
63
-                 vdpDecoder=VDP_DECODER_PROFILE_H264_HIGH;
64
                  break;
65
             case AV_CODEC_ID_VC1:
66
-                  vdpauType=ADM_VDPAU_VC1;
67
                   name="vc1";
68
-                  vdpDecoder=VDP_DECODER_PROFILE_VC1_ADVANCED;
69
                   break;
70
             case AV_CODEC_ID_MPEG2VIDEO:
71
-                  vdpauType=ADM_VDPAU_MPEG2;
72
-                  vdpDecoder=VDP_DECODER_PROFILE_MPEG2_MAIN;
73
                   name="mpegvideo";
74
                   break;
75
+            case AV_CODEC_ID_WMV3:
76
+                  name="wm3_vdpau";
77
+                  break;
78
             default:
79
                 ADM_assert(0);
80
                 break;
81
avidemux_2.6.18.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_videoCodec.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_videoCodec/src/ADM_videoCodec.cpp Changed
10
 
1
@@ -40,7 +40,7 @@
2
 decoders *ADM_getDecoder (uint32_t fcc, uint32_t w, uint32_t h, uint32_t extraLen, 
3
             uint8_t * extraData,uint32_t bpp)
4
 {
5
-    ADM_info("\nSearching decoder in plugins\n");
6
+    ADM_info("Searching decoder in plugins\n");
7
     decoders *fromPlugin=tryCreatingVideoDecoder(w,h,fcc,extraLen,extraData,bpp);
8
     if(fromPlugin) 
9
         return fromPlugin;
10
avidemux_2.6.18.tar.gz/avidemux/common/ADM_videoFilter2/src/ADM_videoFilters.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/ADM_videoFilter2/src/ADM_videoFilters.cpp Changed
10
 
1
@@ -78,7 +78,7 @@
2
 {
3
     ADM_info("Moving up filter at index %d\n",index);
4
     //
5
-    ADM_assert(index);
6
+    if(!index) return true;
7
     uint32_t top=index-1;
8
     ADM_VideoFilterElement scratch=ADM_VideoFilters[top];
9
 
10
avidemux_2.6.18.tar.gz/avidemux/common/gui_action.names -> avidemux_2.6.19.tar.gz/avidemux/common/gui_action.names Changed
9
 
1
@@ -68,6 +68,7 @@
2
 // Editor
3
 ACT(MarkA)
4
 ACT(MarkB)
5
+ACT(ResetMarkers)
6
 ACT(Copy)
7
 ACT(Cut)
8
 ACT(Paste)
9
avidemux_2.6.18.tar.gz/avidemux/common/gui_main.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/gui_main.cpp Changed
91
 
1
@@ -245,7 +245,7 @@
2
 
3
                             ADM_assert(name[rank].size());
4
                             call_scriptEngine(name[rank].c_str());
5
-
6
+                            A_Resync();
7
                             return;
8
             }
9
     case ACT_VIDEO_CODEC_CONFIGURE:
10
@@ -297,6 +297,7 @@
11
         {
12
             ADM_info("Saving prefs\n");
13
             prefs->save ();
14
+            UI_applySettings();
15
         }
16
         return;
17
     case ACT_SavePref:
18
@@ -471,6 +472,16 @@
19
         UI_setMarkers (markA, markB);
20
       break;
21
     }
22
+    case ACT_ResetMarkers:
23
+    {
24
+        if(!video_body->getMarkerAPts() && video_body->getMarkerBPts()==video_body->getVideoDuration())
25
+            break; // do nothing if the markers were not moved
26
+        video_body->addToUndoQueue();
27
+        A_ResetMarkers();
28
+        A_Resync();
29
+        GUI_setCurrentFrameAndTime();
30
+        break;
31
+    }
32
     case ACT_Copy:
33
     {
34
                 uint64_t markA,markB;
35
@@ -708,11 +719,18 @@
36
         res = video_body->addFile(longname);
37
 
38
     //  DIA_StopBusy ();
39
+    int ac=0; // audio codec = copy
40
     bool loadDefault;
41
     if(!prefs->get(RESET_ENCODER_ON_VIDEO_LOAD, &loadDefault)) loadDefault=false;
42
     // if true, discard changes in output config on video load
43
     if(loadDefault)
44
+    {
45
         A_loadDefaultSettings();
46
+        UI_setAudioCodec(ac); // revert to copy, we don't save default audio codec config yet
47
+    }else
48
+    {
49
+        ac=UI_getCurrentACodec();
50
+    }
51
     // forget last project file
52
     video_body->setProjectName("");
53
 
54
@@ -761,8 +779,10 @@
55
 #endif
56
         /* remember any video or workbench file to "recent" */
57
         prefs->set_lastfile(longname);
58
-        UI_updateRecentMenu();
59
         updateLoaded();
60
+        UI_updateRecentMenu();
61
+        if(video_body->getNumberOfActiveAudioTracks())
62
+            audioCodecSetByIndex(0,ac); // try to preserve audio codec
63
         if (currentaudiostream)
64
         {
65
             uint32_t nbAudio;
66
@@ -1366,6 +1386,7 @@
67
         if(!avifileinfo) return;
68
         GUI_setAllFrameAndTime();
69
         UI_setMarkers (video_body->getMarkerAPts(),video_body->getMarkerBPts());
70
+        UI_setAudioTrackCount(video_body->getNumberOfActiveAudioTracks());
71
 }
72
 uint8_t  DIA_job_select(char **jobname, char **filename);
73
 void A_addJob(void)
74
@@ -1449,6 +1470,7 @@
75
         admPreview::stop();
76
         setPreviewMode(ADM_PREVIEW_NONE);
77
       }
78
+      UI_setNeedsResizingFlag(false);
79
       delete avifileinfo;
80
       //delete wavinfo;
81
       admPreview::destroy();
82
@@ -1473,6 +1495,8 @@
83
 
84
 void GUI_avsProxy(void)
85
 {
86
+  if(playing)
87
+      return;
88
   uint8_t res;
89
 
90
 
91
avidemux_2.6.18.tar.gz/avidemux/common/gui_savenew.cpp -> avidemux_2.6.19.tar.gz/avidemux/common/gui_savenew.cpp Changed
101
 
1
@@ -26,9 +26,6 @@
2
 #include "ADM_coreAudio.h"
3
 #include "ADM_encoderConf.h"
4
 
5
-#include "ADM_encoderConf.h"
6
-
7
-
8
 #include "DIA_fileSel.h"
9
 #include "ADM_commonUI/GUI_ui.h"
10
 #include "ADM_muxer.h"
11
@@ -73,6 +70,7 @@
12
         bool                  setupAudio();
13
         ADM_audioStream      *audioAccess[ADM_MAX_AUDIO_STREAM]; // audio tracks to feed to the muxer
14
         int                   nbAudioTracks;
15
+        Clock                ticktock;
16
         
17
 public:
18
                               admSaver(const char *out);
19
@@ -182,15 +180,26 @@
20
         {
21
             printf("[Save] setup failed for pass1 encoder\n");
22
             delete pass1;
23
+            pass1=NULL;
24
             return NULL;
25
         }
26
-        ADMBitstream bitstream;
27
 
28
+        if(!(muxer=ADM_MuxerSpawnFromIndex(muxerIndex)))
29
+        {
30
+            GUI_Error_HIG(QT_TRANSLATE_NOOP("adm","Muxer"),QT_TRANSLATE_NOOP("adm","Cannot instantiate muxer"));
31
+            delete pass1;
32
+            pass1=NULL;
33
+            return NULL;
34
+        }
35
+        muxer->createUI(videoDuration);
36
+        muxer->getEncoding()->setPhasis("Pass 1"); // don't make it translatable here, this is done in the encoding dialog
37
+
38
+        ADMBitstream bitstream;
39
         uint8_t *buffer=new uint8_t[BUFFER_SIZE];
40
         bitstream.data=buffer;
41
         bitstream.bufferSize=BUFFER_SIZE;
42
-        DIA_workingBase  *encoding=createWorking("Pass1");
43
         int nbFrames=0;
44
+        uint32_t percent=0;
45
         while(pass1->encode(&bitstream))
46
         {
47
             if(bitstream.pts!=ADM_NO_PTS)
48
@@ -198,19 +207,30 @@
49
                 float f=100;
50
                 f/=videoDuration;
51
                 f*=bitstream.pts;
52
-                uint32_t percent=(uint32_t)f;
53
-                if(encoding->update(percent))
54
+                uint32_t p=(uint32_t)f;
55
+                if(percent<p)
56
+                    percent=p; // avoid progress bar going backwards
57
+                if(!muxer->getEncoding()->isAlive())
58
                 {
59
                     abort=true;
60
                     break;
61
                 }
62
+                muxer->getEncoding()->setPercent(percent);
63
+                uint32_t elapsed=ticktock.getElapsedMS();
64
+                if(percent>=1)
65
+                {
66
+                    double totalTime=(100*elapsed)/percent;
67
+                    double remaining=totalTime-elapsed;
68
+                    if(remaining<0)
69
+                        remaining=0;
70
+                    uint32_t remainingMs=(uint32_t)remaining;
71
+                    muxer->getEncoding()->setRemainingTimeMS(remainingMs);
72
+                }
73
             }
74
             nbFrames++;
75
         }
76
-        delete encoding;
77
         delete [] buffer;
78
         delete pass1;
79
-        encoding=NULL;
80
         buffer=NULL;
81
         pass1=NULL;
82
 
83
@@ -263,7 +283,7 @@
84
         video_body->getExtraHeaderData(&extraLen,&extra);
85
 //#warning do something better
86
         ADM_videoStreamCopy *copy=NULL;        
87
-        if(isH264Compatible(info.fcc))
88
+        if(isH264Compatible(info.fcc) || isH265Compatible(info.fcc))
89
         {
90
             bool isAnnexB=!extraLen; // this is not very good
91
             if(muxer->preferH264AnnexB())
92
@@ -419,7 +439,7 @@
93
         }
94
     }
95
 
96
-    if(!(muxer=ADM_MuxerSpawnFromIndex(muxerIndex)))
97
+    if(!muxer && !(muxer=ADM_MuxerSpawnFromIndex(muxerIndex)))
98
     {
99
         GUI_Error_HIG(QT_TRANSLATE_NOOP("adm","Muxer"),QT_TRANSLATE_NOOP("adm","Cannot instantiate muxer"));
100
         return 0;
101
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/include/DIA_flyDialogQt4.h -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_UIs/include/DIA_flyDialogQt4.h Changed
166
 
1
@@ -2,8 +2,8 @@
2
         \fn DIA_flyDialogQt4.h
3
  copyright            : (C) 2007 by mean
4
  email                : fixounet@free.fr
5
- 
6
- 
7
+
8
+
9
  ***************************************************************************/
10
 
11
 /***************************************************************************
12
@@ -29,6 +29,7 @@
13
 #include <QFrame>
14
 #include <QTimer>
15
 #include <QDialog>
16
+#include <QLabel>
17
 
18
 #include "ADM_default.h"
19
 #include "ADM_rgb.h"
20
@@ -54,18 +55,18 @@
21
 class ADM_UIQT46_EXPORT ADM_QCanvas : public QWidget
22
 {
23
 protected:
24
-   uint32_t _w,_h;
25
+        uint32_t _w,_h;
26
 public:
27
-   uint8_t *dataBuffer;
28
+        uint8_t *dataBuffer;
29
 
30
-   ADM_QCanvas(QWidget *z, uint32_t w, uint32_t h);
31
-   ~ADM_QCanvas();
32
-   void paintEvent(QPaintEvent *ev);
33
-   void changeSize(uint32_t w, uint32_t h);
34
+        ADM_QCanvas(QWidget *z, uint32_t w, uint32_t h);
35
+        ~ADM_QCanvas();
36
+        void paintEvent(QPaintEvent *ev);
37
+        void changeSize(uint32_t w, uint32_t h);
38
 };
39
 
40
 
41
-
42
+class flyControl;
43
 /**
44
     \class ADM_flyDialog
45
     \brief Base class for flyDialog
46
@@ -74,7 +75,7 @@
47
 {
48
   Q_OBJECT
49
  protected:     
50
-         QTimer             timer;
51
+          QTimer        timer;
52
           uint32_t      _w, _h, _zoomW, _zoomH;
53
           float         _zoom;
54
           uint32_t      _zoomChangeCount;
55
@@ -82,26 +83,26 @@
56
           uint64_t      lastPts;
57
           double        _computedZoom;
58
           int           _usedWidth, _usedHeight;
59
-          
60
+          int           _frameIncrement; // time between image in ms
61
+          Clock         _clock;
62
+          int           _nextRdv;
63
+
64
           ADM_coreVideoFilter *_in;
65
-      
66
+
67
           ADMImage      *_yuvBuffer;
68
           ADM_byteBuffer _rgbByteBufferDisplay;
69
+
70
+          flyControl  *_control;
71
           
72
-          QPushButton *pushButton_back1mn;
73
-          QPushButton *pushButton_play;
74
-          QPushButton *pushButton_next;
75
-          QPushButton *pushButton_fwd1mn;
76
-          QRadioButton *radioButton_autoZoom;
77
           QDialog     *_parent;
78
 
79
-          
80
-          
81
+
82
+
83
   public:
84
           void          *_cookie; // whatever, usually the ui_xxx component
85
           QSlider       *_slider; // widget
86
           ADM_QCanvas   *_canvas; // Drawing zone
87
-          
88
+
89
   public:
90
                             ADM_flyDialog(QDialog *parent,uint32_t width, uint32_t height, ADM_coreVideoFilter *in,
91
                                  ADM_QCanvas *canvas, QSlider *slider, ResizeMethod resizeMethod);
92
@@ -125,7 +126,7 @@
93
            virtual           void resetScaler(void)=0; // dont bother, implemented by yuv or rgb subclass
94
            virtual           bool process(void)=0; // dont bother, implemented by yuv or rgb subclass
95
 public:
96
-  
97
+
98
   virtual uint8_t    download(void)=0;
99
   virtual uint8_t    upload(void)=0;
100
   //virtual uint8_t  update(void)=0;
101
@@ -133,10 +134,10 @@
102
   virtual bool       setCurrentPts(uint64_t pts) {return true;};
103
 
104
 
105
-         
106
+
107
 // UI dependant part : They are implemented in ADM_flyDialogGtk/Qt/...
108
 public:  
109
-  
110
+
111
   virtual bool     isRgbInverted(void);
112
   virtual uint8_t  display(uint8_t *rgbData);
113
   virtual float    calcZoomFactor(void);  
114
@@ -150,7 +151,7 @@
115
 
116
 private:
117
   virtual bool     nextImageInternal(void);
118
-  
119
+
120
 public slots:
121
         virtual bool nextImage(void);
122
         virtual void backOneMinute(void);
123
@@ -171,13 +172,13 @@
124
 public:
125
           virtual    bool process(void);
126
           virtual    void resetScaler(void);
127
-          
128
+
129
                                 ADM_flyDialogYuv(QDialog *parent,uint32_t width, uint32_t height, ADM_coreVideoFilter *in,
130
                                 ADM_QCanvas *canvas, QSlider *slider, 
131
                                 ResizeMethod resizeMethod);
132
             virtual             ~ADM_flyDialogYuv();
133
             virtual uint8_t    processYuv(ADMImage* in, ADMImage *out) =0;
134
- 
135
+
136
 };
137
 
138
 /**
139
@@ -194,7 +195,7 @@
140
 public:
141
           virtual    bool process(void);
142
           virtual    void resetScaler(void);
143
-          
144
+
145
                             ADM_flyDialogRgb(QDialog *parent,uint32_t width, uint32_t height, 
146
                                  ADM_coreVideoFilter *in,  ADM_QCanvas *canvas,  QSlider *slider, ResizeMethod resizeMethod);
147
            virtual          ~ADM_flyDialogRgb();
148
@@ -206,13 +207,13 @@
149
  */
150
 class ADM_UIQT46_EXPORT FlyDialogEventFilter : public QObject
151
 {
152
-   ADM_flyDialog *flyDialog;
153
-   bool recomputed;
154
+        ADM_flyDialog *flyDialog;
155
+        bool recomputed;
156
 
157
 public:
158
-   FlyDialogEventFilter(ADM_flyDialog *flyDialog);
159
+        FlyDialogEventFilter(ADM_flyDialog *flyDialog);
160
 
161
 protected:
162
-   bool eventFilter(QObject *obj, QEvent *event);
163
+        bool eventFilter(QObject *obj, QEvent *event);
164
 };
165
 
166
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/include/T_openGLFilter.h -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_UIs/include/T_openGLFilter.h Changed
9
 
1
@@ -43,6 +43,7 @@
2
         {
3
              return ADM_coreQtGl::downloadTexturesDma(image, fbo,bufferARB);           
4
         }
5
+        QGLShaderProgram *createShaderFromSource(QGLShader::ShaderType type,const char *proggy);
6
 
7
 public:
8
           ADM_coreVideoFilterQtGl(ADM_coreVideoFilter *previous,CONFcouple *conf=NULL);
9
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/src/DIA_flyDialog.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_UIs/src/DIA_flyDialog.cpp Changed
201
 
1
@@ -26,9 +26,87 @@
2
 #include <QHBoxLayout>
3
 #include <QApplication>
4
 #include "ADM_toolkitQt.h"
5
+#include "ADM_vidMisc.h"
6
 extern "C" {
7
 #include "libavcodec/avcodec.h"
8
 }
9
+/**
10
+ */
11
+class flyControl
12
+{
13
+public:
14
+        flyControl(QHBoxLayout *horizontalLayout_4)
15
+        {
16
+            
17
+            pushButton_back1mn = new QPushButton();
18
+            pushButton_back1mn->setObjectName(QString("pushButton_back1mn"));
19
+            pushButton_back1mn->setAutoRepeat(true);
20
+            pushButton_back1mn->setAutoRepeatDelay(1000);
21
+
22
+            horizontalLayout_4->addWidget(pushButton_back1mn);
23
+
24
+            pushButton_play = new QPushButton();
25
+            pushButton_play->setObjectName(QString("pushButton_play"));
26
+            pushButton_play->setCheckable(true);
27
+
28
+            horizontalLayout_4->addWidget(pushButton_play);
29
+
30
+            pushButton_next = new QPushButton();
31
+            pushButton_next->setObjectName(QString("pushButton_next"));
32
+            pushButton_next->setAutoRepeat(true);
33
+            pushButton_next->setAutoRepeatDelay(1000);
34
+
35
+            horizontalLayout_4->addWidget(pushButton_next);
36
+
37
+            pushButton_fwd1mn = new QPushButton();
38
+            pushButton_fwd1mn->setObjectName(QString("pushButton_fwd1mn"));
39
+            pushButton_fwd1mn->setAutoRepeat(true);
40
+            pushButton_fwd1mn->setAutoRepeatDelay(1000);
41
+
42
+            horizontalLayout_4->addWidget(pushButton_fwd1mn);
43
+
44
+            radioButton_autoZoom = new QRadioButton();
45
+            radioButton_autoZoom->setObjectName(QString("radioButton_autoZoom"));
46
+            radioButton_autoZoom->setChecked(true);
47
+
48
+            horizontalLayout_4->addWidget(radioButton_autoZoom);
49
+            //
50
+            labelTime=new QLabel();
51
+            labelTime->setText("00:00:00.000");
52
+            horizontalLayout_4->addWidget(labelTime);
53
+            //
54
+            QSpacerItem  *horizontalSpacer_4 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
55
+            horizontalLayout_4->addItem(horizontalSpacer_4);
56
+
57
+            pushButton_back1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Back one minute", 0));
58
+            pushButton_back1mn->setText(QApplication::translate("seekablePreviewDialog", "<<", 0));
59
+            pushButton_play->setText(QApplication::translate("seekablePreviewDialog", "Play", 0));
60
+            pushButton_next->setToolTip(QApplication::translate("seekablePreviewDialog", "Next image", 0));
61
+            pushButton_next->setText(QApplication::translate("seekablePreviewDialog", ">", 0));
62
+            pushButton_fwd1mn->setText(QApplication::translate("seekablePreviewDialog", ">>", 0));
63
+            pushButton_fwd1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Forward one minute", 0));
64
+            radioButton_autoZoom->setText(QApplication::translate("seekablePreviewDialog", "A&utoZoom", 0));    
65
+         }
66
+        void disableButtons()
67
+        {
68
+            pushButton_back1mn->setEnabled(false);
69
+            pushButton_fwd1mn->setEnabled(false);
70
+            pushButton_next->setEnabled(false);
71
+        }
72
+        void enableButtons()
73
+        {
74
+            pushButton_back1mn->setEnabled(true);
75
+            pushButton_fwd1mn->setEnabled(true);
76
+            pushButton_next->setEnabled(true);
77
+        }
78
+public:
79
+        QPushButton *pushButton_back1mn;
80
+        QPushButton *pushButton_play;
81
+        QPushButton *pushButton_next;
82
+        QPushButton *pushButton_fwd1mn;
83
+        QRadioButton *radioButton_autoZoom;
84
+        QLabel       *labelTime;
85
+};
86
 
87
 /**
88
     \fn updateZoom
89
@@ -112,6 +190,11 @@
90
 #define DEL2(x)    if(x) {delete  x;x=NULL;}
91
    DEL2(_yuvBuffer);
92
    _rgbByteBufferDisplay.clean();
93
+        if(_control)
94
+        {
95
+            delete _control;
96
+            _control=NULL;
97
+        }
98
    return 1;
99
 }
100
 /**
101
@@ -168,58 +251,14 @@
102
  */
103
 bool        ADM_flyDialog::addControl(QHBoxLayout *horizontalLayout_4)
104
 {
105
+       
106
         _parent->setSizePolicy(QSizePolicy(QSizePolicy::Minimum,QSizePolicy::Minimum));
107
-        pushButton_back1mn = new QPushButton();
108
-        pushButton_back1mn->setObjectName(QString("pushButton_back1mn"));
109
-        pushButton_back1mn->setAutoRepeat(true);
110
-        pushButton_back1mn->setAutoRepeatDelay(1000);
111
-
112
-        horizontalLayout_4->addWidget(pushButton_back1mn);
113
-
114
-        pushButton_play = new QPushButton();
115
-        pushButton_play->setObjectName(QString("pushButton_play"));
116
-        pushButton_play->setCheckable(true);
117
-
118
-        horizontalLayout_4->addWidget(pushButton_play);
119
-
120
-        pushButton_next = new QPushButton();
121
-        pushButton_next->setObjectName(QString("pushButton_next"));
122
-        pushButton_next->setAutoRepeat(true);
123
-        pushButton_next->setAutoRepeatDelay(1000);
124
-
125
-        horizontalLayout_4->addWidget(pushButton_next);
126
-
127
-        pushButton_fwd1mn = new QPushButton();
128
-        pushButton_fwd1mn->setObjectName(QString("pushButton_fwd1mn"));
129
-        pushButton_fwd1mn->setAutoRepeat(true);
130
-        pushButton_fwd1mn->setAutoRepeatDelay(1000);
131
-
132
-        horizontalLayout_4->addWidget(pushButton_fwd1mn);
133
-        
134
-        radioButton_autoZoom = new QRadioButton();
135
-        radioButton_autoZoom->setObjectName(QString("radioButton_autoZoom"));
136
-        radioButton_autoZoom->setChecked(true);
137
-
138
-        horizontalLayout_4->addWidget(radioButton_autoZoom);
139
-
140
-        
141
-        QSpacerItem  *horizontalSpacer_4 = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
142
-        horizontalLayout_4->addItem(horizontalSpacer_4);
143
-        
144
-        pushButton_back1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Back one minute", 0));
145
-        pushButton_back1mn->setText(QApplication::translate("seekablePreviewDialog", "<<", 0));
146
-        pushButton_play->setText(QApplication::translate("seekablePreviewDialog", "Play", 0));
147
-        pushButton_next->setToolTip(QApplication::translate("seekablePreviewDialog", "Next image", 0));
148
-        pushButton_next->setText(QApplication::translate("seekablePreviewDialog", ">", 0));
149
-        pushButton_fwd1mn->setText(QApplication::translate("seekablePreviewDialog", ">>", 0));
150
-        pushButton_fwd1mn->setToolTip(QApplication::translate("seekablePreviewDialog", "Forward one minute", 0));
151
-        radioButton_autoZoom->setText(QApplication::translate("seekablePreviewDialog", "A&utoZoom", 0));
152
-        
153
-        QObject::connect(pushButton_next ,SIGNAL(clicked()),this,SLOT(nextImage()));
154
-        QObject::connect(pushButton_back1mn ,SIGNAL(clicked()),this,SLOT(backOneMinute()));
155
-        QObject::connect(pushButton_fwd1mn ,SIGNAL(clicked()),this,SLOT(fwdOneMinute()));
156
-        QObject::connect(pushButton_play ,SIGNAL(toggled(bool )),this,SLOT(play(bool)));
157
-        QObject::connect(radioButton_autoZoom ,SIGNAL(toggled(bool )),this,SLOT(autoZoom(bool)));
158
+        _control=new flyControl(horizontalLayout_4);
159
+        QObject::connect(_control->pushButton_next ,SIGNAL(clicked()),this,SLOT(nextImage()));
160
+        QObject::connect(_control->pushButton_back1mn ,SIGNAL(clicked()),this,SLOT(backOneMinute()));
161
+        QObject::connect(_control->pushButton_fwd1mn ,SIGNAL(clicked()),this,SLOT(fwdOneMinute()));
162
+        QObject::connect(_control->pushButton_play ,SIGNAL(toggled(bool )),this,SLOT(play(bool)));
163
+        QObject::connect(_control->radioButton_autoZoom ,SIGNAL(toggled(bool )),this,SLOT(autoZoom(bool)));
164
       
165
         return true;
166
 }
167
@@ -249,6 +288,8 @@
168
     }
169
     lastPts=_yuvBuffer->Pts;
170
     setCurrentPts(lastPts);
171
+    if(_control)
172
+        _control->labelTime->setText(ADM_us2plain(lastPts));
173
     // Process...   
174
     process();
175
     return display(_rgbByteBufferDisplay.at(0));
176
@@ -343,11 +384,13 @@
177
                                 ADM_QCanvas *canvas, QSlider *slider, 
178
                                 ResizeMethod resizeMethod) : ADM_flyDialog(parent,width,height,in,canvas,slider,resizeMethod)
179
 {
180
+       _control=NULL;
181
         _yuvBufferOut=new ADMImageDefault(_w,_h);
182
         yuvToRgb=NULL;  
183
         initializeSize();
184
         updateZoom();
185
         postInit(false);
186
+        _nextRdv=0;
187
 }
188
 void ADM_flyDialogYuv::resetScaler(void)
189
 {
190
@@ -364,6 +407,11 @@
191
 {
192
     if(_yuvBufferOut) delete _yuvBufferOut;
193
     _yuvBufferOut=NULL;
194
+    if(_control)
195
+    {
196
+        delete _control;
197
+        _control=NULL;
198
+    }
199
 }
200
 bool ADM_flyDialogYuv::process(void)
201
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_UIs/src/T_openGL.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_UIs/src/T_openGL.cpp Changed
46
 
1
@@ -80,4 +80,44 @@
2
         ADM_glExt::deleteBuffers(1,&bufferARB);
3
     bufferARB=0;
4
 }
5
+/**
6
+ * 
7
+ * @param type
8
+ * @param proggy
9
+ * @return 
10
+ */
11
+QGLShaderProgram *ADM_coreVideoFilterQtGl::createShaderFromSource(QGLShader::ShaderType type,const char *proggy)
12
+{
13
+    QGLShaderProgram *glProg = new QGLShaderProgram(_context);
14
+    ADM_assert(glProg);
15
+    if ( !glProg->addShaderFromSourceCode(type, proggy))
16
+    {
17
+            ADM_error("[GL Render] Fragment log: %s\n", glProg->log().toUtf8().constData());
18
+            delete glProg;
19
+            glProg=NULL;
20
+            return NULL;
21
+    }
22
+    
23
+    if ( !glProg->link())
24
+    {
25
+            ADM_error("[GL Render] Link log: %s\n", glProg->log().toUtf8().constData());
26
+            delete glProg;
27
+            glProg=NULL;
28
+            return NULL;
29
+    }
30
+
31
+    if ( !glProg->bind())
32
+    {
33
+            ADM_error("[GL Render] Binding FAILED\n");
34
+            delete glProg;
35
+            glProg=NULL;
36
+            return NULL;
37
+
38
+    }
39
+
40
+    return glProg;
41
+}
42
+
43
+
44
+
45
 // EOF
46
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/CMakeLists.txt Changed
15
 
1
@@ -1,3 +1,4 @@
2
+include(admFFmpegVersion)
3
 SET(ADM_LIB ADM_dialogQt4)
4
 
5
 SET(
6
@@ -20,7 +21,7 @@
7
 ADM_QT_WRAP_UI(${ADM_LIB}_headers ${uiFiles})
8
 ADM_QT_WRAP_CPP(${ADM_LIB}_source ${headers})
9
 ADM_QT_ADD_RESOURCES(${ADM_LIB}_resource  about.qrc)
10
-
11
+ADD_DEFINITIONS(-DADM_FFMPEG_VERSION=\"${FFMPEG_VERSION}\")
12
 SET(${ADM_LIB}_SRCS ${${ADM_LIB}_SRCS}
13
    ${${ADM_LIB}_headers}  ${${ADM_LIB}_source}  ${${ADM_LIB}_resource}
14
         Q_about.cpp
15
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/Q_about.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/Q_about.cpp Changed
10
 
1
@@ -35,7 +35,7 @@
2
         int l=strlen(ADM_SUBVERSION);
3
         if(l>1)
4
         {
5
-                sprintf(subversion,"%s <br><small>(%s)</small>", ADM_VERSION, ADM_SUBVERSION);// 
6
+                sprintf(subversion,"%s <br><small>(%s-fflibs %s)</small>", ADM_VERSION, ADM_SUBVERSION,ADM_FFMPEG_VERSION);
7
         }else
8
         {
9
                 sprintf(subversion,"%s - Release",ADM_VERSION);
10
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/Q_encoding.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/Q_encoding.cpp Changed
49
 
1
@@ -105,9 +105,11 @@
2
                 
3
    }else
4
         {
5
-            ui->comboBoxPriority->setEnabled(false);
6
+            ui->comboBoxPriority->setVisible(false);
7
+            ui->labelPrio->setVisible(false);
8
         }
9
 #endif
10
+        ui->checkBoxShutdown->setVisible(false); // shutdown is disabled, hide the checkbox on all platforms
11
 
12
    connect(ui->checkBoxShutdown, SIGNAL(stateChanged(int)), this, SLOT(shutdownChanged(int)));
13
    connect(ui->pushButton1, SIGNAL(pressed()), this, SLOT(useTrayButtonPressed()));
14
@@ -153,7 +155,7 @@
15
 {
16
     ADM_info("Destroying encoding qt4\n");
17
     UI_getTaskBarProgress()->disable();
18
-    bool shutdownRequired = (ui->checkBoxShutdown->checkState() == Qt::Checked);
19
+    //bool shutdownRequired = (ui->checkBoxShutdown->checkState() == Qt::Checked);
20
     if(tray)
21
     {
22
         UI_deiconify();
23
@@ -176,9 +178,22 @@
24
 
25
 void DIA_encodingQt4::setPhasis(const char *n)
26
 {
27
-          ADM_assert(ui);
28
-          WRITEM(labelPhasis,n);
29
-
30
+    ADM_assert(ui);
31
+    if(!strcmp(n,"Pass 1"))
32
+    {
33
+        ui->tabWidget->setTabEnabled(1, false); // disable the "Advanced" tab
34
+        ui->checkBoxShutdown->setVisible(false); // hide the shutdown checkbox
35
+        this->setWindowTitle(QT_TRANSLATE_NOOP("qencoding","First Pass"));
36
+        WRITEM(labelPhasis,QT_TRANSLATE_NOOP("qencoding","Pass 1"));
37
+    }else
38
+    {
39
+        this->setWindowTitle(QT_TRANSLATE_NOOP("qencoding","Encoding..."));
40
+        ui->tabWidget->setTabEnabled(1, true);
41
+#if 0
42
+        ui->checkBoxShutdown->setVisible(true);
43
+#endif
44
+        WRITEM(labelPhasis,n);
45
+    }
46
 }
47
 /**
48
     \fn    setFrameCount
49
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/encoding.ui -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_dialog/encoding.ui Changed
10
 
1
@@ -119,7 +119,7 @@
2
           </spacer>
3
          </item>
4
          <item>
5
-          <widget class="QLabel" name="label">
6
+          <widget class="QLabel" name="labelPrio">
7
            <property name="text">
8
             <string>Priority:</string>
9
            </property>
10
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.cpp Changed
40
 
1
@@ -64,7 +64,7 @@
2
    canvas = new ADM_QCanvas(ui.frame, canvasWidth, canvasHeight);
3
    canvas->show();
4
    seekablePreview = new flySeekablePreview(this,canvasWidth, canvasHeight, videoStream, canvas, ui.horizontalSlider); 
5
-        seekablePreview->setCookieFunc(setCurrentPtsCallback,this);
6
+        setDuration(videoStream->getInfo()->totalDuration);
7
    seekablePreview->sliderChanged();
8
 }
9
 /**
10
@@ -76,25 +76,12 @@
11
    return seekablePreview->sliderGet();
12
 }
13
 /**
14
-    \fn setCurrentPtsCallback
15
-    \brief callback so that the flyDialog can update its father widget
16
+    \fn setDuration
17
+    \brief Set total duration
18
 */
19
-bool Ui_seekablePreviewWindow::setCurrentPtsCallback(void *cookie,uint64_t pts)
20
+bool      Ui_seekablePreviewWindow::setDuration(uint64_t duration)
21
 {
22
-    if(cookie)
23
-    {
24
-        return ((Ui_seekablePreviewWindow *)cookie)->setTime(pts);
25
-    }
26
-    printf("No cookie, New PTS :%" PRId64" us\n",pts);
27
-    return true;
28
-}
29
-/**
30
-    \fn setTime
31
-    \brief Set timecode
32
-*/
33
-bool      Ui_seekablePreviewWindow::setTime(uint64_t timestamp)
34
-{
35
-    const char *s=ADM_us2plain(timestamp);
36
+    const char *s=ADM_us2plain(duration);
37
     ui.label->setText(s);
38
     return true;
39
 }
40
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.h -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_filters/Q_seekablePreview.h Changed
19
 
1
@@ -26,8 +26,6 @@
2
 class Ui_seekablePreviewWindow : public QDialog
3
 {
4
    Q_OBJECT
5
-protected:
6
-    static bool setCurrentPtsCallback(void *cookie,uint64_t pts);
7
 public:
8
    ADM_QCanvas         *canvas;
9
    flySeekablePreview *seekablePreview;
10
@@ -38,7 +36,7 @@
11
                 ~Ui_seekablePreviewWindow();
12
    void    resetVideoStream(ADM_coreVideoFilter *videoStream);
13
    uint32_t frameIndex();
14
-        bool     setTime(uint64_t timestamp);
15
+        bool     setDuration(uint64_t duration);
16
 public slots:
17
    void sliderChanged(int value);
18
         
19
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.cpp Changed
201
 
1
@@ -27,6 +27,7 @@
2
 
3
 #include "DIA_fileSel.h"
4
 #include "ADM_vidMisc.h"
5
+#include "ADM_last.h"
6
 #include "prefs.h"
7
 #include "avi_vars.h"
8
 
9
@@ -98,6 +99,7 @@
10
 
11
 extern void saveCrashProject(void);
12
 extern uint8_t AVDM_setVolume(int volume);
13
+extern bool AVDM_hasVolumeControl(void);
14
 extern bool ADM_QPreviewCleanup(void);
15
 extern void vdpauCleanup();
16
 extern bool A_loadDefaultSettings(void);;
17
@@ -107,6 +109,8 @@
18
 static bool uiRunning=false;
19
 static bool uiIsMaximized=false;
20
 
21
+bool needsResizing=false;
22
+
23
 #define WIDGET(x)  (((MainWindow *)QuiMainWindows)->ui.x)
24
 
25
 #define CONNECT(object,zzz) connect( (ui.object),SIGNAL(triggered()),this,SLOT(buttonPressed()));
26
@@ -344,10 +348,12 @@
27
     MainWindow::mainWindowSingleton=this;
28
     qtRegisterDialog(this);
29
     ui.setupUi(this);
30
-        dragState=dragState_Normal;
31
-        refreshCapEnabled=false;
32
-        prefs->get(FEATURES_CAP_REFRESH_ENABLED,&refreshCapEnabled);
33
-        prefs->get(FEATURES_CAP_REFRESH_VALUE,&refreshCapValue);
34
+    dragState=dragState_Normal;
35
+    refreshCapEnabled=false;
36
+    prefs->get(FEATURES_CAP_REFRESH_ENABLED,&refreshCapEnabled);
37
+    prefs->get(FEATURES_CAP_REFRESH_VALUE,&refreshCapValue);
38
+    recentFiles = NULL;
39
+    recentProjects = NULL;
40
 
41
 #if defined(__APPLE__) && defined(USE_SDL)
42
     //ui.actionAbout_avidemux->setMenuRole(QAction::NoRole);
43
@@ -432,7 +438,8 @@
44
     addScriptEnginesToFileMenu(myMenuFile);
45
     addScriptShellsToToolsMenu(myMenuTool);
46
     buildMyMenu();
47
-    buildCustomMenu();
48
+    buildCustomMenu(); // action lists are populated (i.e. buildActionLists() called) within buildCustomMenu()
49
+    buildButtonLists();
50
     // Crash in some cases addScriptReferencesToHelpMenu();
51
 
52
     QString rFiles=QString::fromUtf8(QT_TRANSLATE_NOOP("qgui2","Recent Files"));
53
@@ -453,7 +460,7 @@
54
     this->setFocus(Qt::OtherFocusReason);
55
 
56
     setAcceptDrops(true);
57
-        setWindowIcon(QIcon(":/new/prefix1/pics/avidemux_icon_small.png"));
58
+        setWindowIcon(QIcon(MKICON(avidemux_icon_small)));
59
 
60
     // Hook also the toolbar
61
     connect(ui.toolBar,  SIGNAL(actionTriggered ( QAction *)),this,SLOT(searchToolBar(QAction *)));
62
@@ -471,6 +478,8 @@
63
     ui.volumeWidget->setTitleBarWidget(dummy3);
64
     ui.audioMetreWidget->setTitleBarWidget(dummy4);
65
 
66
+    widgetsUpdateTooltips();
67
+
68
     this->adjustSize();
69
         QuiTaskBarProgress=createADMTaskBarProgress();
70
 }
71
@@ -516,6 +525,12 @@
72
 */
73
 bool MainWindow::buildMenu(QMenu *root,MenuEntry *menu, int nb)
74
 {
75
+    bool alt=false, swpud=false;
76
+    if(menu==&myMenuEdit[0] || menu==&myMenuGo[0])
77
+    {
78
+        prefs->get(KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,&alt);
79
+        prefs->get(KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,&swpud);
80
+    }
81
     QMenu *subMenu=NULL;
82
     for(int i=0;i<nb;i++)
83
     {
84
@@ -547,8 +562,45 @@
85
            a->setMenuRole(QAction::NoRole);
86
 #endif 
87
                         m->cookie=(void *)a;
88
-                        if(m->shortCut)
89
+                        if(swpud && m->shortCut=="Up")
90
+                            a->setShortcut(QKeySequence("Down"));
91
+                        else if(swpud && m->shortCut=="Down")
92
+                            a->setShortcut(QKeySequence("Up"));
93
+                        else if(m->shortCut)
94
                         {
95
+                            if(alt)
96
+                            {
97
+                                std::string sc="";
98
+                                switch(m->event)
99
+                                {
100
+                                    case ACT_MarkA:
101
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_MARK_A,sc);
102
+                                        break;
103
+                                    case ACT_MarkB:
104
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_MARK_B,sc);
105
+                                        break;
106
+                                    case ACT_ResetMarkers:
107
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_RESET_MARKERS,sc);
108
+                                        break;
109
+                                    case ACT_GotoMarkA:
110
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_A,sc);
111
+                                        break;
112
+                                    case ACT_GotoMarkB:
113
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_B,sc);
114
+                                        break;
115
+                                    case ACT_Begin:
116
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_BEGIN,sc);
117
+                                        break;
118
+                                    case ACT_End:
119
+                                        prefs->get(KEYBOARD_SHORTCUTS_ALT_END,sc);
120
+                                        break;
121
+                                    default:
122
+                                        sc=std::string(m->shortCut);
123
+                                }
124
+                                QString qsc=QString::fromUtf8(sc.c_str());
125
+                                a->setShortcut(QKeySequence(qsc));
126
+                                break;
127
+                            }
128
                             QKeySequence s(m->shortCut);
129
                             a->setShortcut(s);
130
                         }
131
@@ -596,6 +648,372 @@
132
 
133
     return true;
134
 }
135
+
136
+/**
137
+    \fn buildActionLists
138
+*/
139
+void MainWindow::buildActionLists(void)
140
+{
141
+    ActionsAvailableWhenFileLoaded.clear();
142
+    ActionsDisabledOnPlayback.clear();
143
+    ActionsAlwaysAvailable.clear();
144
+
145
+    // Make a list of the items that are enabled/disabled depending if video is loaded or  not
146
+    //-----------------------------------------------------------------------------------
147
+    for(int i=1;i<6;i++)
148
+        ActionsAvailableWhenFileLoaded.push_back(ui.menuFile->actions().at(i));        
149
+
150
+    ActionsAvailableWhenFileLoaded.push_back(ui.menuFile->actions().at(2)); // "Save"
151
+    ActionsAvailableWhenFileLoaded.push_back(ui.menuFile->actions().at(9)); // "Information"
152
+
153
+    for(int i=3;i<11;i++)
154
+    {
155
+        if(i==5 || i==7 || i==11 || i==13) continue;
156
+        ActionsAvailableWhenFileLoaded.push_back(ui.menuEdit->actions().at(i));
157
+    }
158
+
159
+    for(int i=1;i<ui.menuView->actions().size();i++)
160
+    { // disable zoom if no video is loaded
161
+        ActionsAvailableWhenFileLoaded.push_back(ui.menuView->actions().at(i));
162
+    }
163
+
164
+    for(int i=2;i<ui.toolBar->actions().size();i++)
165
+    { // disable "Save" and "Information" buttons in the toolbar if no video is loaded
166
+        ActionsAvailableWhenFileLoaded.push_back(ui.toolBar->actions().at(i));
167
+    }
168
+
169
+#define PUSH_FULL_MENU_LOADED(x,tailOffset) for(int i=0;i<ui.x->actions().size()-tailOffset;i++)    ActionsAvailableWhenFileLoaded.push_back(ui.x->actions().at(i));
170
+#define PUSH_FULL_MENU_PLAYBACK(x,tailOffset) for(int i=0;i<ui.x->actions().size()-tailOffset;i++)    ActionsDisabledOnPlayback.push_back(ui.x->actions().at(i));
171
+
172
+    PUSH_FULL_MENU_LOADED(menuVideo,0)
173
+    PUSH_FULL_MENU_LOADED(menuAudio,0)
174
+    PUSH_FULL_MENU_LOADED(menuAuto,0)
175
+    PUSH_FULL_MENU_LOADED(menuGo,0)
176
+
177
+    // Item disabled on playback
178
+    for(int i=1;i<ui.menuView->actions().size();i++)
179
+    { // allow hiding widgets during playback
180
+        ActionsDisabledOnPlayback.push_back(ui.menuView->actions().at(i));
181
+    }
182
+
183
+    for(int i=1;i<ui.menuGo->actions().size();i++)
184
+    { // let "Play/Stop" stay enabled during playback
185
+        ActionsDisabledOnPlayback.push_back(ui.menuGo->actions().at(i));
186
+    }
187
+
188
+    PUSH_FULL_MENU_PLAYBACK(menuFile,1)
189
+    PUSH_FULL_MENU_PLAYBACK(menuEdit,0)
190
+    PUSH_FULL_MENU_PLAYBACK(menuVideo,0)
191
+    PUSH_FULL_MENU_PLAYBACK(menuAudio,0)
192
+    PUSH_FULL_MENU_PLAYBACK(menuAuto,0)
193
+    PUSH_FULL_MENU_PLAYBACK(menuHelp,0)
194
+    PUSH_FULL_MENU_PLAYBACK(toolBar,0)
195
+
196
+    if(recentFiles)
197
+        for(int i=0;i<recentFiles->actions().size();i++)
198
+            ActionsDisabledOnPlayback.push_back(recentFiles->actions().at(i));
199
+    if(recentProjects)
200
+        for(int i=0;i<recentProjects->actions().size();i++)
201
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.h -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2.h Changed
71
 
1
@@ -17,6 +17,7 @@
2
 #include "myOwnMenu.h"
3
 #include "IScriptEngine.h"
4
 #include "prefs.h"
5
+#include "avi_vars.h"
6
 
7
 #define ENABLE_EVENT_FILTER
8
 
9
@@ -94,6 +95,8 @@
10
    void buildCustomMenu(void);
11
    void buildRecentMenu(void);
12
    void buildRecentProjectMenu(void);
13
+   void updateActionShortcuts(void);
14
+        void volumeWidgetOperational(void);
15
         static void updateCheckDone(int version, const std::string &date, const std::string &downloadLink);
16
         static MainWindow *mainWindowSingleton;
17
 
18
@@ -110,13 +113,27 @@
19
     bool     refreshCapEnabled;
20
     uint32_t refreshCapValue;
21
 
22
+    std::vector<QAction *>ActionsAvailableWhenFileLoaded;
23
+    std::vector<QAction *>ActionsDisabledOnPlayback;
24
+    std::vector<QAction *>ActionsAlwaysAvailable;
25
+    std::vector<QToolButton *>ButtonsAvailableWhenFileLoaded;
26
+    std::vector<QToolButton *>ButtonsDisabledOnPlayback;
27
+    std::vector<QPushButton *>PushButtonsAvailableWhenFileLoaded;
28
+    std::vector<QPushButton *>PushButtonsDisabledOnPlayback;
29
 
30
 public slots:
31
         void updateAvailableSlot(int version, std::string date, std::string url);
32
         void dragTimerTimeout(void);
33
         void actionSlot(Action a)
34
         {
35
+            if(a==ACT_PlayAvi) // ugly
36
+            {
37
+                playing=1-playing;
38
+                setMenuItemsEnabledState();
39
+                playing=1-playing;
40
+            }
41
             HandleAction(a);
42
+            setMenuItemsEnabledState();
43
         }
44
         void sendAction(Action a)
45
         {
46
@@ -127,6 +144,7 @@
47
         void checkChanged(int);
48
    void buttonPressed(void);
49
    void toolButtonPressed(bool z);
50
+   void setMenuItemsEnabledState(void);
51
 
52
    void comboChanged(int z);
53
    void sliderValueChanged(int u);
54
@@ -182,6 +200,9 @@
55
         bool buildMyMenu(void);
56
         bool buildMenu(QMenu *root,MenuEntry *menu, int nb);
57
    void buildRecentMenu(QMenu *menu,std::vector<std::string>files, QAction **actions);
58
+        void buildActionLists(void);
59
+        void buildButtonLists(void);
60
+        void widgetsUpdateTooltips(void);
61
         void searchMenu(QAction * action,MenuEntry *menu, int nb);
62
    void searchRecentFiles(QAction *action, QAction **actionList, int firstEventId);
63
 #ifdef   ENABLE_EVENT_FILTER      
64
@@ -191,5 +212,6 @@
65
    void dragEnterEvent(QDragEnterEvent *event);
66
    void dropEvent(QDropEvent *event);
67
    void openFiles(QList<QUrl>);
68
+        void changeEvent(QEvent* event);
69
 };
70
 #endif // Q_gui2_h
71
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2GL.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2GL.cpp Changed
10
 
1
@@ -79,6 +79,8 @@
2
    printf("[GL Render] OpenGL Version: %s\n", glGetString(GL_VERSION));
3
    printf("[GL Render] OpenGL Extensions: %s\n", glGetString(GL_EXTENSIONS));
4
 
5
+    topGlWidgetRoot->hide();
6
+
7
 }
8
 /**
9
     \fn UI_Qt4CleanGl
10
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2_menu.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/Q_gui2_menu.cpp Changed
24
 
1
@@ -212,6 +212,8 @@
2
 
3
     this->addScriptDirToMenu(ui.menuCustom, ADM_getCustomDir(), fileExts);
4
     this->addScriptDirToMenu(ui.menuAuto, ADM_getAutoDir(), fileExts);
5
+    buildActionLists(); // since we change the menu, the list of stuff needs to be refreshed else it points to deleted items
6
+
7
 }
8
 
9
 void MainWindow::buildRecentMenu(QMenu *menu, std::vector<std::string>files, QAction **actions)
10
@@ -237,11 +239,13 @@
11
 void MainWindow::buildRecentMenu(void)
12
 {
13
    this->buildRecentMenu(this->recentFiles, prefs->get_lastfiles(), this->recentFileAction);
14
+   buildActionLists();
15
 }
16
 
17
 void MainWindow::buildRecentProjectMenu(void)
18
 {
19
    this->buildRecentMenu(this->recentProjects, prefs->get_lastprojectfiles(), this->recentProjectAction);
20
+   buildActionLists();
21
 }
22
 
23
 void MainWindow::searchRecentFiles(QAction *action, QAction **actionList, int firstEventId)
24
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/T_preview.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/T_preview.cpp Changed
32
 
1
@@ -169,14 +169,18 @@
2
 
3
     // Resizing a maximized window results in not refreshed areas where widgets 
4
     // in the maximized state were drawn with Qt5 on Linux, try to avoid this.
5
-    // TODO: Resize the main window on restore event.
6
+    // Instead, resize the window later on restore event if necessary.
7
     if(!QuiMainWindows->isMaximized())
8
     {
9
-        uint32_t extra_w=UI_requiredWidth();
10
-        uint32_t extra_h=UI_requiredHeight();
11
-        QuiMainWindows->resize(w+extra_w,h+extra_h);
12
+        UI_resize(w,h);
13
+        UI_setNeedsResizingFlag(false);
14
+    }else
15
+    {
16
+        UI_setNeedsResizingFlag(true);
17
     }
18
     videoWindow->setADMSize(w,h);
19
+    if(!w || !h)
20
+        QuiMainWindows->update(); // clean up the space previously occupied by the video window on closing
21
 #if 0
22
    
23
    UI_purge();
24
@@ -195,6 +199,7 @@
25
 
26
    printf("[RDR] Resizing to %u x %u\n", displayW, displayH);
27
 }
28
+
29
 /**
30
       \brief Retrieve info from window, needed for accel layer
31
 */
32
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/file_qt4.cpp -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/file_qt4.cpp Changed
41
 
1
@@ -47,16 +47,20 @@
2
         extSize+=strlen(ext);
3
     }
4
     //printf("Do filer=%d\n",(int)doFilter);
5
+    bool lastReadAsTarget=false;
6
+    prefs->get(FEATURES_USE_LAST_READ_DIR_AS_TARGET,&lastReadAsTarget);
7
     std::string lastFolder;
8
-    admCoreUtils::getLastWriteFolder(lastFolder);
9
+    if(!lastReadAsTarget)
10
+        admCoreUtils::getLastWriteFolder(lastFolder);
11
+    if(!lastFolder.size() || lastReadAsTarget)
12
+        admCoreUtils::getLastReadFolder(lastFolder);
13
     if (lastFolder.size())
14
     {
15
         QString outputPath = QFileInfo(QString::fromUtf8(lastFolder.c_str())).path();
16
 
17
-        char *tmpinputname = NULL;
18
         QString inputBaseName = QString("");
19
         std::string lastRead;
20
-        admCoreUtils::getLastReadFolder(lastRead);
21
+        admCoreUtils::getLastReadFile(lastRead);
22
         if (lastRead.size())
23
         {
24
             inputBaseName = QFileInfo(QString::fromUtf8(lastRead.c_str())).completeBaseName();
25
@@ -72,7 +76,15 @@
26
 
27
         /* LASTDIR may have gone; then do nothing and use current dir instead (implied) */
28
         if (!QDir(outputPath).exists())
29
+        {
30
                 str.clear();
31
+        }else
32
+        {
33
+            if(str==QString::fromUtf8(lastRead.c_str()))
34
+            { // try to avoid name collision when saving in the same directory as the currently loaded video
35
+                str = outputPath+separator+inputBaseName+QString("_edit")+outputExt;
36
+            }
37
+        }
38
     }
39
 
40
     if(doFilter)
41
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/gui2.ui -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/gui2.ui Changed
60
 
1
@@ -112,6 +112,9 @@
2
      <height>30</height>
3
     </rect>
4
    </property>
5
+   <property name="contextMenuPolicy">
6
+    <enum>Qt::PreventContextMenu</enum>
7
+   </property>
8
    <widget class="QMenu" name="menuHelp">
9
     <property name="title">
10
      <string>&amp;Help</string>
11
@@ -194,6 +197,9 @@
12
    <property name="orientation">
13
     <enum>Qt::Horizontal</enum>
14
    </property>
15
+   <property name="contextMenuPolicy">
16
+    <enum>Qt::PreventContextMenu</enum>
17
+   </property>
18
    <attribute name="toolBarArea">
19
     <enum>TopToolBarArea</enum>
20
    </attribute>
21
@@ -249,7 +255,7 @@
22
        <item>
23
         <widget class="QLabel" name="label_7">
24
          <property name="text">
25
-          <string>&lt;b&gt;Video Decoder&lt;b&gt;</string>
26
+          <string>&lt;b&gt;Video Decoder&lt;/b&gt;</string>
27
          </property>
28
         </widget>
29
        </item>
30
@@ -986,29 +992,6 @@
31
           </widget>
32
          </item>
33
          <item>
34
-          <widget class="QToolButton" name="toolButtonStop">
35
-           <property name="toolTip">
36
-            <string>Stop [SPACE]</string>
37
-           </property>
38
-           <property name="text">
39
-            <string>...</string>
40
-           </property>
41
-           <property name="icon">
42
-            <iconset resource="avidemux.qrc">
43
-             <normaloff>:/new/prefix1/pics/player_stop.png</normaloff>:/new/prefix1/pics/player_stop.png</iconset>
44
-           </property>
45
-           <property name="iconSize">
46
-            <size>
47
-             <width>24</width>
48
-             <height>24</height>
49
-            </size>
50
-           </property>
51
-           <property name="autoRaise">
52
-            <bool>true</bool>
53
-           </property>
54
-          </widget>
55
-         </item>
56
-         <item>
57
           <widget class="QToolButton" name="toolButtonPreviousFrame">
58
            <property name="toolTip">
59
             <string>Go to previous frame [LEFT]</string>
60
avidemux_2.6.18.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/translation_table.h -> avidemux_2.6.19.tar.gz/avidemux/qt4/ADM_userInterfaces/ADM_gui/translation_table.h Changed
9
 
1
@@ -5,7 +5,6 @@
2
 PROCESS(pushButtonDecoderConf, ACT_DecoderOption) \
3
 PROCESS(pushButtonFormatConfigure, ACT_ContainerConfigure) \
4
 PROCESS(toolButtonPlay, ACT_PlayAvi) \
5
-PROCESS(toolButtonStop, ACT_StopAvi) \
6
 PROCESS(toolButtonPreviousFrame, ACT_PreviousFrame) \
7
 PROCESS(toolButtonNextFrame, ACT_NextFrame) \
8
 PROCESS(toolButtonPreviousIntraFrame, ACT_PreviousKFrame) \
9
avidemux_2.6.18.tar.gz/avidemux/qt4/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux/qt4/CMakeLists.txt Changed
10
 
1
@@ -4,7 +4,7 @@
2
 
3
 MESSAGE("")
4
 MESSAGE("#########################################")
5
-MESSAGE("Configure for avidemux Qt4 Started")
6
+MESSAGE("Configure for Avidemux Qt Started")
7
 MESSAGE("#########################################")
8
 MESSAGE("")
9
 
10
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux.pro -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux.pro Changed
201
 
1
@@ -19,6 +19,7 @@
2
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/dmxPacket.h \ 
3
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/dmx_demuxer.h \ 
4
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/ADM_indexFile.h \ 
5
+../../../avidemux_core/ADM_coreDemuxerMpeg/include/ADM_coreDemuxerMpeg6_export.h \ 
6
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/dmx_demuxerPS.h \ 
7
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/dmx_io.h \ 
8
 ../../../avidemux_core/ADM_coreDemuxerMpeg/include/dmx_demuxerEs.h \ 
9
@@ -75,7 +76,6 @@
10
 ../../../avidemux_core/ADM_coreVideoFilter/include/ADM_videoFilterCache.h \ 
11
 ../../../avidemux_core/ADM_coreVideoFilter/include/ADM_coreVideoFilterInternal.h \ 
12
 ../../../avidemux_core/ADM_coreVideoFilter/include/ADM_coreVideoFilterFunc.h \ 
13
-../../../avidemux_core/ADM_coreVideoFilter/include/DIA_flyDialog.h \ 
14
 ../../../avidemux_core/ADM_coreVideoFilter/include/ADM_filterCategory.h \ 
15
 ../../../avidemux_core/ADM_coreVideoFilter/include/ADM_videoFilterBridge.h \ 
16
 ../../../avidemux_core/ADM_coreSqlLight3/include/Query.h \ 
17
@@ -86,6 +86,8 @@
18
 ../../../avidemux_core/ADM_coreSqlLight3/include/ADM_coreSqlLight3_export.h \ 
19
 ../../../avidemux_core/ADM_coreSqlLight3/include/Database.h \ 
20
 ../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/include/ADM_coreDxva2.h \ 
21
+../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/include/ADM_coreDxva2_export.h \ 
22
+../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/include/ADM_coreD3D.h \ 
23
 ../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpauInternal.h \ 
24
 ../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpau.h \ 
25
 ../../../avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreXvba/include/fglrxinfo.h \ 
26
@@ -190,25 +192,28 @@
27
 ../../../avidemux_core/ADM_coreUtils/src/prefs2_pref.h \ 
28
 ../../../avidemux_core/ADM_coreUtils/src/prefs2.h \ 
29
 ../../../avidemux_core/ADM_coreUtils/src/libjson.h \ 
30
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONStats.h \ 
31
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONMemoryPool.h \ 
32
 ../../../avidemux_core/ADM_coreUtils/src/Source/NumberToString.h \ 
33
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONSharedString.h \ 
34
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs.h \ 
35
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONNode.h \ 
36
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONAllocator.h \ 
37
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONStream.h \ 
38
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONMemory.h \ 
39
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONPreparse.h \ 
40
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSON_Base64.h \ 
41
 ../../../avidemux_core/ADM_coreUtils/src/Source/internalJSONNode.h \ 
42
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONWorker.h \ 
43
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONSingleton.h \ 
44
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONValidator.h \ 
45
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONChildren.h \ 
46
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDebug.h \ 
47
-../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/._Visual_C.h \ 
48
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/Strings_Defs.h \ 
49
-../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/._GNU_C.h \ 
50
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/GNU_C.h \ 
51
-../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/._Unknown_C.h \ 
52
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/Unknown_C.h \ 
53
-../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/._Strings_Defs.h \ 
54
 ../../../avidemux_core/ADM_coreUtils/src/Source/JSONDefs/Visual_C.h \ 
55
+../../../avidemux_core/ADM_coreUtils/src/Source/JSONGlobals.h \ 
56
 ../../../avidemux_core/ADM_coreUtils/src/JSONOptions.h \ 
57
 ../../../avidemux_core/ADM_coreUtils/include/ADM_threadQueue.h \ 
58
 ../../../avidemux_core/ADM_coreUtils/include/ADM_string.h \ 
59
@@ -237,6 +242,7 @@
60
 ../../../avidemux_core/ADM_coreUtils/include/ADM_getbits.h \ 
61
 ../../../avidemux_core/ADM_coreUtils/include/ADM_videoInfoExtractor.h \ 
62
 ../../../avidemux_core/ADM_coreImageLoader/include/ADM_imageLoader.h \ 
63
+../../../avidemux_core/ADM_coreImageLoader/include/ADM_coreImageLoader6_export.h \ 
64
 ../../../avidemux_core/ADM_coreSubtitles/include/ADM_coreSubtitles.h \ 
65
 ../../../avidemux_core/ADM_coreSocket/include/ADM_coreCommandSocket.h \ 
66
 ../../../avidemux_core/ADM_coreSocket/include/ADM_coreAvsProtocol.h \ 
67
@@ -260,6 +266,7 @@
68
 ../../../avidemux_core/ADM_coreAudioFilter/include/audiofilter.h \ 
69
 ../../../avidemux_core/ADM_coreAudioFilter/include/audioEncoderApi.h \ 
70
 ../../../avidemux/qt4/ADM_openGL/include/ADM_openGl.h \ 
71
+../../../avidemux/qt4/ADM_openGL/include/ADM_openGL_export.h \ 
72
 ../../../avidemux/qt4/ADM_update/private_inc/ADM_updateImpl.h \ 
73
 ../../../avidemux/qt4/ADM_update/include/ADM_update.h \ 
74
 ../../../avidemux/qt4/ADM_jobs/include/T_progress.h \ 
75
@@ -408,8 +415,8 @@
76
 ../../../avidemux_plugins/ADM_videoFilters6/logo/qt4/Q_logo.h \ 
77
 ../../../avidemux_plugins/ADM_videoFilters6/logo/qt4/DIA_flyLogo.h \ 
78
 ../../../avidemux_plugins/ADM_videoFilters6/logo/ADM_vidLogo.h \ 
79
-../../../avidemux_plugins/ADM_videoFilters6/crop/DIA_flyCrop.h \ 
80
 ../../../avidemux_plugins/ADM_videoFilters6/crop/crop.h \ 
81
+../../../avidemux_plugins/ADM_videoFilters6/crop/qt4/DIA_flyCrop.h \ 
82
 ../../../avidemux_plugins/ADM_videoFilters6/crop/qt4/Q_crop.h \ 
83
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDenoise3D/ADM_vidMPLD3Dlow.h \ 
84
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDenoise3D/ADM_vidMPLD3D.h \ 
85
@@ -417,6 +424,8 @@
86
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDenoise3D/denoise3dHQ.h \ 
87
 ../../../avidemux_plugins/ADM_videoFilters6/blackenBorder/blackenBorder.h \ 
88
 ../../../avidemux_plugins/ADM_videoFilters6/blackenBorder/ADM_vidBlackBorder.h \ 
89
+../../../avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/Q_blackenBorders.h \ 
90
+../../../avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/DIA_flyBlackenBorders.h \ 
91
 ../../../avidemux_plugins/ADM_videoFilters6/asciiView/ascii_font.h \ 
92
 ../../../avidemux_plugins/ADM_videoFilters6/rotate/rte.h \ 
93
 ../../../avidemux_plugins/ADM_videoFilters6/black/black.h \ 
94
@@ -424,11 +433,12 @@
95
 ../../../avidemux_plugins/ADM_videoFilters6/colorYUV/ADM_vidColorYuv.h \ 
96
 ../../../avidemux_plugins/ADM_videoFilters6/colorYUV/ADM_vidColorYuv_param.h \ 
97
 ../../../avidemux_plugins/ADM_videoFilters6/resampleFps/confResampleFps.h \ 
98
+../../../avidemux_plugins/ADM_videoFilters6/vaapiFilters/vaapiFilter.h \ 
99
 ../../../avidemux_plugins/ADM_videoFilters6/largeMedian/ADM_largeMedian.h \ 
100
 ../../../avidemux_plugins/ADM_videoFilters6/largeMedian/convolution.h \ 
101
 ../../../avidemux_plugins/ADM_videoFilters6/removePlane/rplane.h \ 
102
-../../../avidemux_plugins/ADM_videoFilters6/eq2/DIA_flyEq2.h \ 
103
 ../../../avidemux_plugins/ADM_videoFilters6/eq2/eq2.h \ 
104
+../../../avidemux_plugins/ADM_videoFilters6/eq2/qt4/DIA_flyEq2.h \ 
105
 ../../../avidemux_plugins/ADM_videoFilters6/eq2/qt4/Q_eq2.h \ 
106
 ../../../avidemux_plugins/ADM_videoFilters6/eq2/ADM_vidEq2.h \ 
107
 ../../../avidemux_plugins/ADM_videoFilters6/decimate/decimate.h \ 
108
@@ -440,9 +450,11 @@
109
 ../../../avidemux_plugins/ADM_videoFilters6/dgBob/dgBob.h \ 
110
 ../../../avidemux_plugins/ADM_videoFilters6/vdpauFilters/vdpauFilterDeint.h \ 
111
 ../../../avidemux_plugins/ADM_videoFilters6/vdpauFilters/vdpauFilter.h \ 
112
-../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/DIA_flyMpDelogo.h \ 
113
+../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/Q_mpdelogo.h \ 
114
+../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/DIA_flyMpDelogo.h \ 
115
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/delogo.h \ 
116
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt4/Q_mpdelogo.h \ 
117
+../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt4/DIA_flyMpDelogo.h \ 
118
 ../../../avidemux_plugins/ADM_videoFilters6/mplayerDelogo/ADM_vidMPdelogo.h \ 
119
 ../../../avidemux_plugins/ADM_videoFilters6/resize/qt4/Q_resize.h \ 
120
 ../../../avidemux_plugins/ADM_videoFilters6/resize/swresize.h \ 
121
@@ -464,7 +476,7 @@
122
 ../../../avidemux_plugins/ADM_videoFilters6/asharp/qt4/Q_asharp.h \ 
123
 ../../../avidemux_plugins/ADM_videoFilters6/asharp/DIA_flyAsharp.h \ 
124
 ../../../avidemux_plugins/ADM_videoFilters6/asharp/asharp.h \ 
125
-../../../avidemux_plugins/ADM_videoFilters6/hue/DIA_flyHue.h \ 
126
+../../../avidemux_plugins/ADM_videoFilters6/hue/qt4/DIA_flyHue.h \ 
127
 ../../../avidemux_plugins/ADM_videoFilters6/hue/qt4/Q_hue.h \ 
128
 ../../../avidemux_plugins/ADM_videoFilters6/hue/hue.h \ 
129
 ../../../avidemux_plugins/ADM_videoFilters6/chromaShift/DIA_flyChromaShift.h \ 
130
@@ -473,6 +485,9 @@
131
 ../../../avidemux_plugins/ADM_videoFilters6/chromaShift/ADM_vidChromaShift_param.h \ 
132
 ../../../avidemux_plugins/ADM_videoFilters6/chromaShift/chromashift.h \ 
133
 ../../../avidemux_plugins/ADM_videoFilters6/mSharpen/msharpen.h \ 
134
+../../../avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/Q_msharpen.h \ 
135
+../../../avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/DIA_flymsharpen.h \ 
136
+../../../avidemux_plugins/ADM_videoFilters6/mSharpen/ADM_vidMSharpen.h \ 
137
 ../../../avidemux_plugins/ADM_videoFilters6/addBorder/addBorder.h \ 
138
 ../../../avidemux_plugins/ADM_videoFilters6/addBorder/ADM_vidAddBorder.h \ 
139
 ../../../avidemux_plugins/ADM_videoFilters6/fadeTo/fade.h \ 
140
@@ -496,7 +511,7 @@
141
 ../../../avidemux_plugins/ADM_videoFilters6/ass/ADM_libass/ass_types.h \ 
142
 ../../../avidemux_plugins/ADM_videoFilters6/changeFps/confChangeFps.h \ 
143
 ../../../avidemux_plugins/ADM_videoFilters6/contrast/contrast.h \ 
144
-../../../avidemux_plugins/ADM_videoFilters6/contrast/DIA_flyContrast.h \ 
145
+../../../avidemux_plugins/ADM_videoFilters6/contrast/qt4/DIA_flyContrast.h \ 
146
 ../../../avidemux_plugins/ADM_videoFilters6/contrast/qt4/Q_contrast.h \ 
147
 ../../../avidemux_plugins/ADM_videoFilters6/contrast/ADM_vidContrast.h \ 
148
 ../../../avidemux_plugins/ADM_videoDecoder/vpx/ADM_vpx.h \ 
149
@@ -524,6 +539,8 @@
150
 ../../../avidemux_plugins/ADM_videoEncoder/x265/ADM_x265.h \ 
151
 ../../../avidemux_plugins/ADM_videoEncoder/x265/qt4/Q_x265.h \ 
152
 ../../../avidemux_plugins/ADM_videoEncoder/x265/x265_settings.h \ 
153
+../../../avidemux_plugins/ADM_videoEncoder/ffNvEncHEVC/ffnvenc.h \ 
154
+../../../avidemux_plugins/ADM_videoEncoder/ffNvEncHEVC/ADM_ffNvEnc.h \ 
155
 ../../../avidemux_plugins/ADM_videoEncoder/ffMpeg2/mpegMatrix.h \ 
156
 ../../../avidemux_plugins/ADM_videoEncoder/ffMpeg2/ADM_ffMpeg2.h \ 
157
 ../../../avidemux_plugins/ADM_videoEncoder/ffMpeg2/mpeg2_encoder.h \ 
158
@@ -727,12 +744,8 @@
159
 ../../../avidemux_plugins/ADM_audioEncoders/lame/lame_encoder.h \ 
160
 ../../../avidemux_plugins/ADM_audioEncoders/vorbis/vorbis_encoder.h \ 
161
 ../../../avidemux_plugins/ADM_audioEncoders/vorbis/audioencoder_vorbis.h \ 
162
-../../../avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_ac3.h \ 
163
 ../../../avidemux_plugins/ADM_audioEncoders/lavcodec/lavcodec_encoder.h \ 
164
-../../../avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_dts.h \ 
165
 ../../../avidemux_plugins/ADM_audioEncoders/lavcodec/audioencoder_lavcodec.h \ 
166
-../../../avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_aac.h \ 
167
-../../../avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_mp2.h \ 
168
 ../../../avidemux_plugins/ADM_audioEncoders/pcm/audioencoder_pcm.h \ 
169
 ../../../avidemux_plugins/ADM_audioEncoders/dcaenc/dcaencoder.h \ 
170
 ../../../avidemux_plugins/ADM_audioEncoders/dcaenc/audioencoder_dcaenc.h \ 
171
@@ -750,25 +763,29 @@
172
 ../../../avidemux_core/ADM_coreDemuxerMpeg/src/dmxPacket.cpp \ 
173
 ../../../avidemux_core/ADM_core/src/ADM_nvwa/debug_new.cpp \ 
174
 ../../../avidemux_core/ADM_core/src/ADM_nvwa/addr2line.cpp \ 
175
+../../../avidemux_core/ADM_core/src/ADM_crashdump_vs.cpp \ 
176
 ../../../avidemux_core/ADM_core/src/ADM_threads.cpp \ 
177
 ../../../avidemux_core/ADM_core/src/ADM_fileio.cpp \ 
178
 ../../../avidemux_core/ADM_core/src/ADM_folder_mac.cpp \ 
179
 ../../../avidemux_core/ADM_core/src/ADM_crashdump_unix.cpp \ 
180
+../../../avidemux_core/ADM_core/src/ADM_win32_mingw.cpp \ 
181
 ../../../avidemux_core/ADM_core/src/ADM_folder_win32.cpp \ 
182
 ../../../avidemux_core/ADM_core/src/ADM_memcpy.cpp \ 
183
 ../../../avidemux_core/ADM_core/src/ADM_dynamicLoading.cpp \ 
184
 ../../../avidemux_core/ADM_core/src/ADM_memsupport.cpp \ 
185
 ../../../avidemux_core/ADM_core/src/ADM_win32.cpp \ 
186
 ../../../avidemux_core/ADM_core/src/ADM_folder_unix.cpp \ 
187
+../../../avidemux_core/ADM_core/src/ADM_folder_mingw.cpp \ 
188
+../../../avidemux_core/ADM_core/src/ADM_folder_vs.cpp \ 
189
 ../../../avidemux_core/ADM_core/src/ADM_misc.cpp \ 
190
 ../../../avidemux_core/ADM_core/src/ADM_debug.cpp \ 
191
 ../../../avidemux_core/ADM_core/src/ADM_coreTranslator.cpp \ 
192
 ../../../avidemux_core/ADM_core/src/ADM_crashdump_other.cpp \ 
193
 ../../../avidemux_core/ADM_core/src/ADM_prettyPrint.cpp \ 
194
 ../../../avidemux_core/ADM_core/src/ADM_benchmark.cpp \ 
195
+../../../avidemux_core/ADM_core/src/ADM_win32_vs.cpp \ 
196
 ../../../avidemux_core/ADM_core/src/ADM_folder_linux.cpp \ 
197
 ../../../avidemux_core/ADM_core/src/ADM_crashdump_mingw.cpp \ 
198
-../../../avidemux_core/ADM_core/src/dirent.c \ 
199
 ../../../avidemux_core/ADM_core/src/ADM_crashdump_apple.cpp \ 
200
 ../../../avidemux_core/ADM_core/src/TLK_clock.cpp \ 
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_ca.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_ca.ts Changed
201
 
1
@@ -3735,7 +3735,7 @@
2
         <translation type="obsolete">Potser es refereix a un fitxer d&apos;índex antic.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Ha fallat l&apos;intent d&apos;obrir %s!</translation>
9
     </message>
10
@@ -5412,7 +5412,7 @@
11
         <translation type="obsolete">&lt;b&gt;Vídeo&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Copiat</translation>
19
@@ -5426,7 +5426,12 @@
20
         <translation type="unfinished">Configura</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Filtres</translation>
33
@@ -5452,14 +5457,13 @@
34
         <location line="+23"/>
35
         <location line="+23"/>
36
         <location line="+23"/>
37
-        <location line="+23"/>
38
         <location line="+26"/>
39
         <location line="+23"/>
40
         <location line="+23"/>
41
         <location line="+23"/>
42
         <location line="+23"/>
43
         <location line="+26"/>
44
-        <location line="+352"/>
45
+        <location line="+345"/>
46
         <source>...</source>
47
         <translation type="unfinished">...</translation>
48
     </message>
49
@@ -5476,12 +5480,12 @@
50
         <translation type="obsolete">/ 0</translation>
51
     </message>
52
     <message>
53
-        <location line="-297"/>
54
+        <location line="-290"/>
55
         <source>Time:</source>
56
         <translation type="unfinished">Temps:</translation>
57
     </message>
58
     <message>
59
-        <location line="+19"/>
60
+        <location line="+18"/>
61
         <source>00:00:00.000</source>
62
         <translation type="unfinished">00:00:00.000</translation>
63
     </message>
64
@@ -5504,13 +5508,13 @@
65
         <translation type="obsolete">Selecció</translation>
66
     </message>
67
     <message>
68
-        <location line="+134"/>
69
+        <location line="+128"/>
70
         <location line="+10"/>
71
         <source>000000</source>
72
         <translation type="unfinished">000000</translation>
73
     </message>
74
     <message>
75
-        <location line="-1441"/>
76
+        <location line="-1414"/>
77
         <source>&amp;Help</source>
78
         <translation type="unfinished">Aj&amp;uda</translation>
79
     </message>
80
@@ -5571,7 +5575,7 @@
81
         <translation type="obsolete">Au&amp;to</translation>
82
     </message>
83
     <message>
84
-        <location line="+1583"/>
85
+        <location line="+1540"/>
86
         <source>&amp;Open...</source>
87
         <translation type="unfinished">&amp;Obre</translation>
88
     </message>
89
@@ -6087,12 +6091,12 @@
90
         <translation type="obsolete">Ctrl+W</translation>
91
     </message>
92
     <message>
93
-        <location line="-1184"/>
94
+        <location line="-1138"/>
95
         <source>ms</source>
96
         <translation type="unfinished">ms</translation>
97
     </message>
98
     <message>
99
-        <location line="+793"/>
100
+        <location line="+763"/>
101
         <source>A:</source>
102
         <translation type="unfinished">A:</translation>
103
     </message>
104
@@ -6170,12 +6174,12 @@
105
         <translation type="obsolete">Video CD</translation>
106
     </message>
107
     <message>
108
-        <location line="-137"/>
109
+        <location line="-131"/>
110
         <source>Frame type:</source>
111
         <translation type="unfinished">Tipus fotograma: </translation>
112
     </message>
113
     <message>
114
-        <location line="-1265"/>
115
+        <location line="-1244"/>
116
         <source>&amp;Toolbars</source>
117
         <translation type="unfinished"></translation>
118
     </message>
119
@@ -6190,17 +6194,12 @@
120
         <translation type="unfinished"></translation>
121
     </message>
122
     <message>
123
-        <location line="+41"/>
124
+        <location line="+44"/>
125
         <source>Codec O&amp;ptions</source>
126
         <translation type="unfinished"></translation>
127
     </message>
128
     <message>
129
-        <location line="+33"/>
130
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
131
-        <translation type="unfinished"></translation>
132
-    </message>
133
-    <message>
134
-        <location line="+75"/>
135
+        <location line="+108"/>
136
         <location line="+7"/>
137
         <source>XXXX</source>
138
         <translation type="unfinished"></translation>
139
@@ -6227,12 +6226,12 @@
140
     </message>
141
     <message>
142
         <location line="+114"/>
143
-        <location line="+978"/>
144
+        <location line="+932"/>
145
         <source>&amp;Navigation</source>
146
         <translation type="unfinished"></translation>
147
     </message>
148
     <message>
149
-        <location line="-903"/>
150
+        <location line="-857"/>
151
         <source>Play [SPACE]</source>
152
         <translation type="unfinished"></translation>
153
     </message>
154
@@ -6243,11 +6242,6 @@
155
     </message>
156
     <message>
157
         <location line="+26"/>
158
-        <source>Stop [SPACE]</source>
159
-        <translation type="unfinished"></translation>
160
-    </message>
161
-    <message>
162
-        <location line="+23"/>
163
         <source>Go to previous frame [LEFT]</source>
164
         <translation type="unfinished"></translation>
165
     </message>
166
@@ -6312,7 +6306,7 @@
167
         <translation type="unfinished"></translation>
168
     </message>
169
     <message>
170
-        <location line="+185"/>
171
+        <location line="+178"/>
172
         <source>Se&amp;lection</source>
173
         <translation type="unfinished"></translation>
174
     </message>
175
@@ -6342,7 +6336,7 @@
176
         <translation type="unfinished"></translation>
177
     </message>
178
     <message>
179
-        <location line="+100"/>
180
+        <location line="+84"/>
181
         <source>Audio &amp;Metre</source>
182
         <translation type="unfinished"></translation>
183
     </message>
184
@@ -7594,17 +7588,16 @@
185
 <context>
186
     <name>adm</name>
187
     <message>
188
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
189
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
190
         <source>Decode video using DXVA2 (windows)</source>
191
         <translation type="unfinished"></translation>
192
     </message>
193
     <message>
194
-        <location line="+10"/>
195
         <source>_Use systray while encoding</source>
196
-        <translation type="unfinished">_Usa la safata de sistema en codificar</translation>
197
+        <translation type="obsolete">_Usa la safata de sistema en codificar</translation>
198
     </message>
199
     <message>
200
-        <location line="+1"/>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_cs.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_cs.ts Changed
201
 
1
@@ -7579,7 +7579,7 @@
2
         <translation type="obsolete">Může to být starým indexovým souborem.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Selhalo otevření %s!</translation>
9
     </message>
10
@@ -10082,7 +10082,7 @@
11
         <translation type="obsolete">&lt;b&gt;Video&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Kopie</translation>
19
@@ -10122,14 +10122,13 @@
20
         <location line="+23"/>
21
         <location line="+23"/>
22
         <location line="+23"/>
23
-        <location line="+23"/>
24
         <location line="+26"/>
25
         <location line="+23"/>
26
         <location line="+23"/>
27
         <location line="+23"/>
28
         <location line="+23"/>
29
         <location line="+26"/>
30
-        <location line="+352"/>
31
+        <location line="+345"/>
32
         <source>...</source>
33
         <translation type="unfinished">...</translation>
34
     </message>
35
@@ -10146,12 +10145,12 @@
36
         <translation type="obsolete">/ 0</translation>
37
     </message>
38
     <message>
39
-        <location line="-297"/>
40
+        <location line="-290"/>
41
         <source>Time:</source>
42
         <translation type="unfinished">Čas:</translation>
43
     </message>
44
     <message>
45
-        <location line="+19"/>
46
+        <location line="+18"/>
47
         <source>00:00:00.000</source>
48
         <translation type="unfinished">00:00:00.000</translation>
49
     </message>
50
@@ -10174,13 +10173,13 @@
51
         <translation type="obsolete">Výběr</translation>
52
     </message>
53
     <message>
54
-        <location line="+134"/>
55
+        <location line="+128"/>
56
         <location line="+10"/>
57
         <source>000000</source>
58
         <translation type="unfinished">000000</translation>
59
     </message>
60
     <message>
61
-        <location line="-1441"/>
62
+        <location line="-1414"/>
63
         <source>&amp;Help</source>
64
         <translation type="unfinished">Náp&amp;ověda</translation>
65
     </message>
66
@@ -10241,7 +10240,7 @@
67
         <translation type="obsolete">Au&amp;to</translation>
68
     </message>
69
     <message>
70
-        <location line="+1583"/>
71
+        <location line="+1540"/>
72
         <source>&amp;Open...</source>
73
         <translation type="unfinished">&amp;Otevřít...</translation>
74
     </message>
75
@@ -10661,17 +10660,22 @@
76
         <translation type="unfinished">&amp;Na sebe</translation>
77
     </message>
78
     <message>
79
-        <location line="-533"/>
80
+        <location line="-1636"/>
81
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
82
+        <translation type="unfinished"></translation>
83
+    </message>
84
+    <message>
85
+        <location line="+1125"/>
86
         <source>Frame type:</source>
87
         <translation type="unfinished">Typ snímku:</translation>
88
     </message>
89
     <message>
90
-        <location line="+521"/>
91
+        <location line="+499"/>
92
         <source>&amp;Separate</source>
93
         <translation type="unfinished">S&amp;amostatně</translation>
94
     </message>
95
     <message>
96
-        <location line="-1184"/>
97
+        <location line="-1138"/>
98
         <source>ms</source>
99
         <translation type="unfinished">ms</translation>
100
     </message>
101
@@ -10684,7 +10688,7 @@
102
         <translation type="obsolete">Uložit výběr jako JPEG obrázky...</translation>
103
     </message>
104
     <message>
105
-        <location line="+793"/>
106
+        <location line="+763"/>
107
         <source>A:</source>
108
         <translation type="unfinished">A:</translation>
109
     </message>
110
@@ -10754,7 +10758,7 @@
111
         <translation type="obsolete">Video CD</translation>
112
     </message>
113
     <message>
114
-        <location line="-1402"/>
115
+        <location line="-1375"/>
116
         <source>&amp;Toolbars</source>
117
         <translation type="unfinished"></translation>
118
     </message>
119
@@ -10769,17 +10773,12 @@
120
         <translation type="unfinished"></translation>
121
     </message>
122
     <message>
123
-        <location line="+41"/>
124
+        <location line="+44"/>
125
         <source>Codec O&amp;ptions</source>
126
         <translation type="unfinished"></translation>
127
     </message>
128
     <message>
129
-        <location line="+33"/>
130
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
131
-        <translation type="unfinished"></translation>
132
-    </message>
133
-    <message>
134
-        <location line="+75"/>
135
+        <location line="+108"/>
136
         <location line="+7"/>
137
         <source>XXXX</source>
138
         <translation type="unfinished"></translation>
139
@@ -10806,12 +10805,12 @@
140
     </message>
141
     <message>
142
         <location line="+114"/>
143
-        <location line="+978"/>
144
+        <location line="+932"/>
145
         <source>&amp;Navigation</source>
146
         <translation type="unfinished"></translation>
147
     </message>
148
     <message>
149
-        <location line="-903"/>
150
+        <location line="-857"/>
151
         <source>Play [SPACE]</source>
152
         <translation type="unfinished"></translation>
153
     </message>
154
@@ -10822,11 +10821,6 @@
155
     </message>
156
     <message>
157
         <location line="+26"/>
158
-        <source>Stop [SPACE]</source>
159
-        <translation type="unfinished"></translation>
160
-    </message>
161
-    <message>
162
-        <location line="+23"/>
163
         <source>Go to previous frame [LEFT]</source>
164
         <translation type="unfinished"></translation>
165
     </message>
166
@@ -10891,7 +10885,7 @@
167
         <translation type="unfinished"></translation>
168
     </message>
169
     <message>
170
-        <location line="+185"/>
171
+        <location line="+178"/>
172
         <source>Se&amp;lection</source>
173
         <translation type="unfinished"></translation>
174
     </message>
175
@@ -10921,7 +10915,7 @@
176
         <translation type="unfinished"></translation>
177
     </message>
178
     <message>
179
-        <location line="+100"/>
180
+        <location line="+84"/>
181
         <source>Audio &amp;Metre</source>
182
         <translation type="unfinished"></translation>
183
     </message>
184
@@ -12218,17 +12212,16 @@
185
 <context>
186
     <name>adm</name>
187
     <message>
188
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
189
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
190
         <source>Decode video using DXVA2 (windows)</source>
191
         <translation type="unfinished"></translation>
192
     </message>
193
     <message>
194
-        <location line="+10"/>
195
         <source>_Use systray while encoding</source>
196
-        <translation type="unfinished">_Pohltit do panelu při kódování</translation>
197
+        <translation type="obsolete">_Pohltit do panelu při kódování</translation>
198
     </message>
199
     <message>
200
-        <location line="+1"/>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_da.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_da.ts Changed
201
 
1
@@ -21,7 +21,7 @@
2
 Drop timinginformationer?</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+186"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+193"/>
7
         <source>Cannot find a demuxer for %s</source>
8
         <translation>Kan ikke finde en demuxer for %s</translation>
9
     </message>
10
@@ -31,139 +31,18 @@
11
         <translation>Forsøg på at åbne %s fejlede!</translation>
12
     </message>
13
     <message>
14
-        <source>You cannot mix different video dimensions yet. Using the partial video filter later, will not work around this problem. The workaround is:
15
-1.) &quot;resize&quot; / &quot;add border&quot; / &quot;crop&quot; each stream to the same resolution
16
-2.) concatinate them together</source>
17
-        <translation type="vanished">Du kan endnu ikke mikse forskellige videodimensioner. Det vil ikke løse problemet at bruge det delvise videofilter senere. Det kan gøres som her:
18
-1.) &quot;tilpas størrelse&quot;/&quot;tilføj kanter&quot;/&quot;beskær&quot; hver strøm til samme opløsning
19
-2.) sæt dem sammen</translation>
20
-    </message>
21
-    <message>
22
         <location line="+26"/>
23
         <source>You cannot mix different video dimensions yet. Using the partial video filter later, will not work around this problem. The workaround is:
24
 1.) &quot;resize&quot; / &quot;add border&quot; / &quot;crop&quot; each stream to the same resolution
25
 2.) concatenate them together</source>
26
-        <translation type="unfinished"></translation>
27
+        <translation>Du kan endnu ikke mikse forskellige videodimensioner. Det vil ikke løse problemet at bruge det delvise videofilter senere. Det kan gøres som her:
28
+1.) &quot;tilpas størrelse&quot;/&quot;tilføj kanter&quot;/&quot;beskær&quot; hver strøm til samme opløsning
29
+2.) sæt dem sammen</translation>
30
     </message>
31
     <message>
32
         <location filename="../../common/ADM_editor/src/utils/ADM_edCheckForInvalidPts.cpp" line="-18"/>
33
         <source>Checking if timestamps are valid..</source>
34
-        <translation type="unfinished"></translation>
35
-    </message>
36
-</context>
37
-<context>
38
-    <name>ADM_Qt4CoreUIToolkit</name>
39
-    <message>
40
-        <source>Alert</source>
41
-        <translation type="vanished">Besked</translation>
42
-    </message>
43
-    <message>
44
-        <source>Info</source>
45
-        <translation type="vanished">Info</translation>
46
-    </message>
47
-    <message>
48
-        <source>Confirmation</source>
49
-        <translation type="vanished">Bekræftelse</translation>
50
-    </message>
51
-    <message>
52
-        <source>Question</source>
53
-        <translation type="vanished">Spørgsmål</translation>
54
-    </message>
55
-    <message>
56
-        <source>Question?</source>
57
-        <translation type="vanished">Spørgsmål?</translation>
58
-    </message>
59
-</context>
60
-<context>
61
-    <name>ADM_Qt4Factory::ADM_Qbitrate</name>
62
-    <message>
63
-        <source>Constant Bitrate</source>
64
-        <translation type="vanished">Konstant bithastighed</translation>
65
-    </message>
66
-    <message>
67
-        <source>Constant Quantiser</source>
68
-        <translation type="vanished">Konstant quantiser</translation>
69
-    </message>
70
-    <message>
71
-        <source>Same Quantiser as Input</source>
72
-        <translation type="vanished">Samme quantiser som input</translation>
73
-    </message>
74
-    <message>
75
-        <source>Constant Rate Factor</source>
76
-        <translation type="vanished">Konstant ratefaktor</translation>
77
-    </message>
78
-    <message>
79
-        <source>Two Pass - Video Size</source>
80
-        <translation type="vanished">To gennemløb - videostørrelse</translation>
81
-    </message>
82
-    <message>
83
-        <source>Two Pass - Average Bitrate</source>
84
-        <translation type="vanished">To gennemløb - gennemsnitlig bithastighed</translation>
85
-    </message>
86
-    <message>
87
-        <source>Encoding mode</source>
88
-        <translation type="vanished">Kodningstilstand</translation>
89
-    </message>
90
-    <message>
91
-        <source>Bitrate</source>
92
-        <translation type="vanished">Bithastighed</translation>
93
-    </message>
94
-    <message>
95
-        <source>Target bitrate (kb/s)</source>
96
-        <translation type="vanished">Ønsket bithastighed (Kb/s/KB/s)</translation>
97
-    </message>
98
-    <message>
99
-        <source>Quantizer</source>
100
-        <translation type="vanished">Quantiser</translation>
101
-    </message>
102
-    <message>
103
-        <source>Target video size (MB)</source>
104
-        <translation type="vanished">Ønsket videostørrelse (MB)</translation>
105
-    </message>
106
-    <message>
107
-        <source>Average bitrate (kb/s)</source>
108
-        <translation type="vanished">Gennemsnitlig bithastighed (Kb/s/KB/s)</translation>
109
-    </message>
110
-    <message>
111
-        <source>-</source>
112
-        <translation type="vanished">-</translation>
113
-    </message>
114
-</context>
115
-<context>
116
-    <name>ADM_QthreadCount</name>
117
-    <message>
118
-        <source>Disabled</source>
119
-        <translation type="obsolete">Deaktiveret</translation>
120
-    </message>
121
-    <message>
122
-        <source>Auto-detect</source>
123
-        <translation type="obsolete">Automatisk registrering</translation>
124
-    </message>
125
-    <message>
126
-        <source>Custom</source>
127
-        <translation type="obsolete">Brugerdefineret</translation>
128
-    </message>
129
-</context>
130
-<context>
131
-    <name>ADM_qt4Factory::ADM_QthreadCount</name>
132
-    <message>
133
-        <source>Disabled</source>
134
-        <translation type="vanished">Deaktiveret</translation>
135
-    </message>
136
-    <message>
137
-        <source>Auto-detect</source>
138
-        <translation type="vanished">Automatisk registrering</translation>
139
-    </message>
140
-    <message>
141
-        <source>Custom</source>
142
-        <translation type="vanished">Brugerdefineret</translation>
143
-    </message>
144
-</context>
145
-<context>
146
-    <name>ADM_qtray</name>
147
-    <message>
148
-        <source>Open Avidemux</source>
149
-        <translation type="vanished">Åbn Avidemux</translation>
150
+        <translation>Tjekker om tidsstempler er gyldige..</translation>
151
     </message>
152
 </context>
153
 <context>
154
@@ -325,26 +204,7 @@
155
     <message>
156
         <location line="+7"/>
157
         <source>Cancel</source>
158
-        <translation>Annullér</translation>
159
-    </message>
160
-</context>
161
-<context>
162
-    <name>DIA_encodingQt4</name>
163
-    <message>
164
-        <source>Shutting down</source>
165
-        <translation type="vanished">Lukker ned</translation>
166
-    </message>
167
-    <message>
168
-        <source>The encoding is paused. Do you want to resume or abort?</source>
169
-        <translation type="vanished">Kodningen er sat på pause. Vil du genoptage eller afbryde?</translation>
170
-    </message>
171
-    <message>
172
-        <source>Resume</source>
173
-        <translation type="vanished">Genoptag</translation>
174
-    </message>
175
-    <message>
176
-        <source>Abort</source>
177
-        <translation type="vanished">Afbryd</translation>
178
+        <translation>Annuller</translation>
179
     </message>
180
 </context>
181
 <context>
182
@@ -394,10 +254,6 @@
183
         <translation>Konfigurér</translation>
184
     </message>
185
     <message>
186
-        <source>Audio Filters</source>
187
-        <translation type="vanished">Lydfiltre</translation>
188
-    </message>
189
-    <message>
190
         <location line="-105"/>
191
         <source>Track 2</source>
192
         <translation>Spor 2</translation>
193
@@ -418,7 +274,7 @@
194
         <location line="+41"/>
195
         <location line="+41"/>
196
         <source>Filters</source>
197
-        <translation type="unfinished">Filtre</translation>
198
+        <translation>Filtre</translation>
199
     </message>
200
 </context>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_de.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_de.ts Changed
201
 
1
@@ -3441,7 +3441,7 @@
2
         <translation type="obsolete">Es bezieht sich vielleicht auf eine alte Index-Datei.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Versuch %s zu öffnen ist misslungen!</translation>
9
     </message>
10
@@ -5094,7 +5094,7 @@
11
         <translation type="obsolete">&lt;b&gt;Video-Spur&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Kopieren</translation>
19
@@ -5134,14 +5134,13 @@
20
         <location line="+23"/>
21
         <location line="+23"/>
22
         <location line="+23"/>
23
-        <location line="+23"/>
24
         <location line="+26"/>
25
         <location line="+23"/>
26
         <location line="+23"/>
27
         <location line="+23"/>
28
         <location line="+23"/>
29
         <location line="+26"/>
30
-        <location line="+352"/>
31
+        <location line="+345"/>
32
         <source>...</source>
33
         <translation type="unfinished">...</translation>
34
     </message>
35
@@ -5158,7 +5157,7 @@
36
         <translation type="obsolete">/ 0</translation>
37
     </message>
38
     <message>
39
-        <location line="-297"/>
40
+        <location line="-290"/>
41
         <source>Time:</source>
42
         <translation type="unfinished">Zeit:</translation>
43
     </message>
44
@@ -5167,7 +5166,7 @@
45
         <translation type="obsolete">Bildtyp:</translation>
46
     </message>
47
     <message>
48
-        <location line="+83"/>
49
+        <location line="+82"/>
50
         <source>?</source>
51
         <translation type="unfinished">?</translation>
52
     </message>
53
@@ -5176,7 +5175,7 @@
54
         <translation type="obsolete">Auswahlbereich</translation>
55
     </message>
56
     <message>
57
-        <location line="-1297"/>
58
+        <location line="-1276"/>
59
         <source>&amp;Help</source>
60
         <translation type="unfinished">&amp;Hilfe</translation>
61
     </message>
62
@@ -5237,7 +5236,7 @@
63
         <translation type="obsolete">V&amp;orlagen</translation>
64
     </message>
65
     <message>
66
-        <location line="+1583"/>
67
+        <location line="+1540"/>
68
         <source>&amp;Open...</source>
69
         <translation type="unfinished">&amp;Öffnen...</translation>
70
     </message>
71
@@ -5321,7 +5320,7 @@
72
     <message>
73
         <location line="+3"/>
74
         <source>Alt+Return</source>
75
-        <translation type="unfinished">Alt+i</translation>
76
+        <translation type="unfinished"></translation>
77
     </message>
78
     <message>
79
         <location line="+9"/>
80
@@ -5535,12 +5534,12 @@
81
         <translation type="obsolete">ein Bild zu&amp;rück</translation>
82
     </message>
83
     <message>
84
-        <location line="-1075"/>
85
+        <location line="-1029"/>
86
         <source>ms</source>
87
         <translation type="unfinished">ms</translation>
88
     </message>
89
     <message>
90
-        <location line="+793"/>
91
+        <location line="+763"/>
92
         <source>A:</source>
93
         <translation type="unfinished">A:</translation>
94
     </message>
95
@@ -5754,7 +5753,7 @@
96
         <translation type="obsolete">Schriftzeichen bearbeiten</translation>
97
     </message>
98
     <message>
99
-        <location line="+290"/>
100
+        <location line="+274"/>
101
         <source>&amp;Input</source>
102
         <translation type="unfinished">&amp;Original</translation>
103
     </message>
104
@@ -5774,12 +5773,12 @@
105
         <translation type="unfinished">&amp;übereinander</translation>
106
     </message>
107
     <message>
108
-        <location line="-533"/>
109
+        <location line="-511"/>
110
         <source>Frame type:</source>
111
-        <translation type="unfinished">Bildtyp:</translation>
112
+        <translation>Frame-Typ:</translation>
113
     </message>
114
     <message>
115
-        <location line="+521"/>
116
+        <location line="+499"/>
117
         <source>&amp;Separate</source>
118
         <translation type="unfinished">&amp;eigenständig</translation>
119
     </message>
120
@@ -5804,7 +5803,7 @@
121
         <translation type="obsolete">Video CD</translation>
122
     </message>
123
     <message>
124
-        <location line="-1786"/>
125
+        <location line="-1743"/>
126
         <source>&amp;Toolbars</source>
127
         <translation type="unfinished">&amp;Werkzeugleisten</translation>
128
     </message>
129
@@ -5823,12 +5822,7 @@
130
         <translation type="obsolete">Codec-Einstellungen</translation>
131
     </message>
132
     <message>
133
-        <location line="+74"/>
134
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
135
-        <translation type="unfinished">&lt;b&gt;Video-Decoder&lt;/b&gt;</translation>
136
-    </message>
137
-    <message>
138
-        <location line="+139"/>
139
+        <location line="+216"/>
140
         <source>&lt;b&gt;Video Output&lt;/b&gt;</source>
141
         <translation type="unfinished">&lt;b&gt;Video-Codec&lt;/b&gt;</translation>
142
     </message>
143
@@ -5856,7 +5850,7 @@
144
         <translation type="obsolete">Pegelanzeige</translation>
145
     </message>
146
     <message>
147
-        <location line="+1078"/>
148
+        <location line="+1032"/>
149
         <source>&amp;Codec Options</source>
150
         <translation type="unfinished">&amp;Codec-Einstellungen</translation>
151
     </message>
152
@@ -5880,44 +5874,39 @@
153
         <translation type="obsolete">Filter bei Wiedergabe anwenden</translation>
154
     </message>
155
     <message>
156
-        <location line="-332"/>
157
+        <location line="-316"/>
158
         <source>Play filtered</source>
159
         <translation type="unfinished">Filter anwenden</translation>
160
     </message>
161
     <message>
162
-        <location line="+169"/>
163
+        <location line="+153"/>
164
         <source>Open Video</source>
165
         <translation type="unfinished">Videodatei öffnen</translation>
166
     </message>
167
     <message>
168
-        <location line="-782"/>
169
+        <location line="-736"/>
170
         <source>Play [SPACE]</source>
171
-        <translation>Wiedergabe/Pause [Leertaste]</translation>
172
+        <translation>Wiedergabe/Stopp [Leertaste]</translation>
173
     </message>
174
     <message>
175
         <location line="+29"/>
176
-        <source>Stop [SPACE]</source>
177
-        <translation>Stopp [Leertaste]</translation>
178
-    </message>
179
-    <message>
180
-        <location line="+23"/>
181
         <source>Go to previous frame [LEFT]</source>
182
-        <translation>Vorheriges Bild [Pfeiltaste links]</translation>
183
+        <translation>Ein Frame zurück [Pfeiltaste links]</translation>
184
     </message>
185
     <message>
186
         <location line="+23"/>
187
         <source>Go to next frame [RIGHT]</source>
188
-        <translation>Nächstes Bild [Pfeiltaste rechts]</translation>
189
+        <translation>Ein Frame vor [Pfeiltaste rechts]</translation>
190
     </message>
191
     <message>
192
         <location line="+23"/>
193
         <source>Go to previous keyframe [DOWN]</source>
194
-        <translation>Zum vorherigen Keyframe [Pfeiltaste runter]</translation>
195
+        <translation>Ein I-Frame zurück [Pfeiltaste runter]</translation>
196
     </message>
197
     <message>
198
         <location line="+23"/>
199
         <source>Go to next keyframe [UP]</source>
200
-        <translation>Zum nächsten Keyframe [Pfeiltaste hoch]</translation>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_el.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_el.ts Changed
201
 
1
@@ -45,7 +45,7 @@
2
     </message>
3
     <message>
4
         <source>Automatically _build VBR map</source>
5
-        <translation type="obsolete">Αυτόματο χτίσιμο του χάρτη VBR</translation>
6
+        <translation type="obsolete">Αυτόματο _χτίσιμο του χάρτη VBR</translation>
7
     </message>
8
     <message>
9
         <source>SIMD</source>
10
@@ -97,11 +97,11 @@
11
     </message>
12
     <message>
13
         <source>Above normal</source>
14
-        <translation type="obsolete">Πάνω από το κανονικό</translation>
15
+        <translation type="obsolete">Πάνω από το Κανονικό</translation>
16
     </message>
17
     <message>
18
         <source>Below normal</source>
19
-        <translation type="obsolete">Κάτω από το κανονικό</translation>
20
+        <translation type="obsolete">Κάτω από το Κανονικό</translation>
21
     </message>
22
     <message>
23
         <source>Low</source>
24
@@ -249,11 +249,11 @@
25
     </message>
26
     <message>
27
         <source>_Time shift (ms):</source>
28
-        <translation type="obsolete">_Χρονική Μετατόπιση (ms):</translation>
29
+        <translation type="obsolete">_Χρονική Μετατόπιση (χιλ.τουδευτ.):</translation>
30
     </message>
31
     <message>
32
         <source>Time shift value (ms)</source>
33
-        <translation type="obsolete">Μέγεθος χρονικής μετατόπισης (ms)</translation>
34
+        <translation type="obsolete">Μέγεθος χρονικής μετατόπισης (χιλ.τουδευτ.)</translation>
35
     </message>
36
     <message>
37
         <source>R_esampling (Hz):</source>
38
@@ -361,7 +361,7 @@
39
     </message>
40
     <message>
41
         <source>Average bitrate:</source>
42
-        <translation type="obsolete">Μέσος όρος ρυθμού bit:</translation>
43
+        <translation type="obsolete">Μέσος ρυθμός μπιτιών:</translation>
44
     </message>
45
     <message>
46
         <source>Number of I frames:</source>
47
@@ -369,7 +369,7 @@
48
     </message>
49
     <message>
50
         <source>Number of P frames:</source>
51
-        <translation type="obsolete">Αριθμός πλαισίων:</translation>
52
+        <translation type="obsolete">Το πλήθος των Π΄ καρέ:</translation>
53
     </message>
54
     <message>
55
         <source>Number of B frames:</source>
56
@@ -477,7 +477,7 @@
57
     </message>
58
     <message>
59
         <source>CBR</source>
60
-        <translation type="obsolete">CBR</translation>
61
+        <translation type="obsolete">Σταθ.Ρυθ.Μπιτ.</translation>
62
     </message>
63
     <message>
64
         <source>ABR</source>
65
@@ -489,7 +489,7 @@
66
     </message>
67
     <message>
68
         <source>Bit_rate mode:</source>
69
-        <translation type="obsolete">Κατάσταση Λειτουργίας _Ρυθμού Bit:</translation>
70
+        <translation type="obsolete">Λειτουργία _ρυθμού Μπιτιών:</translation>
71
     </message>
72
     <message>
73
         <source>_Quality:</source>
74
@@ -585,11 +585,11 @@
75
     </message>
76
     <message>
77
         <source>4 fields check</source>
78
-        <translation type="obsolete">Έλεγχος Αγκυλών</translation>
79
+        <translation type="obsolete">Έλεγχος 4 πεδίων</translation>
80
     </message>
81
     <message>
82
         <source>5 fields check</source>
83
-        <translation type="obsolete">Έλεγχος Αγκυλών</translation>
84
+        <translation type="obsolete">Έλεγχος 5 πεδίων</translation>
85
     </message>
86
     <message>
87
         <source>No link</source>
88
@@ -597,7 +597,7 @@
89
     </message>
90
     <message>
91
         <source>Full link</source>
92
-        <translation type="obsolete">Προτεινόμενος σύνδεσμος 1</translation>
93
+        <translation type="obsolete">Πλήρης δεσμός</translation>
94
     </message>
95
     <message>
96
         <source>Y to UV</source>
97
@@ -673,7 +673,7 @@
98
     </message>
99
     <message>
100
         <source>TDeint</source>
101
-        <translation type="obsolete">TDeint</translation>
102
+        <translation type="obsolete">TΑποπλέξιμο</translation>
103
     </message>
104
     <message>
105
         <source>Motion adaptative deinterlacer by Tritical.</source>
106
@@ -793,7 +793,7 @@
107
     </message>
108
     <message>
109
         <source>Cannot copy.</source>
110
-        <translation type="obsolete">Αδύνατη η αντιγραφή.</translation>
111
+        <translation type="obsolete">Αδυναμία αντιγραφής.</translation>
112
     </message>
113
     <message>
114
         <source>Something bad happened (II))</source>
115
@@ -904,7 +904,7 @@
116
     </message>
117
     <message>
118
         <source>Cannot decode frame</source>
119
-        <translation type="obsolete">Αδύνατη η αποκωδικοποίηση του καρέ</translation>
120
+        <translation type="obsolete">Αδύνατη η αποκωδικοποίηση του στιγμιότυπου</translation>
121
     </message>
122
     <message>
123
         <source>Aborting.</source>
124
@@ -972,7 +972,7 @@
125
     </message>
126
     <message>
127
         <source>Checking video</source>
128
-        <translation type="obsolete">Έλεγχος βίντεο</translation>
129
+        <translation type="obsolete">Ελέγχεται το βίντεο</translation>
130
     </message>
131
     <message>
132
         <source>No error found</source>
133
@@ -992,7 +992,7 @@
134
     </message>
135
     <message>
136
         <source>Cannot delete the selection.</source>
137
-        <translation type="obsolete">Αδύνατη η διαγραφή της επιλογής.</translation>
138
+        <translation type="obsolete">Αδυναμία διαγραφής της επιλογής.</translation>
139
     </message>
140
     <message>
141
         <source>You can&apos;t remove all frames</source>
142
@@ -1110,6 +1110,7 @@
143
         <source>Failed to connect to avsproxy.
144
 Is it running ?</source>
145
         <translation type="obsolete">Αποτυχία σύνδεσης με το avsproxy.
146
+
147
 Είναι σε κατάσταση λειτουργίας;</translation>
148
     </message>
149
     <message>
150
@@ -1154,7 +1155,7 @@
151
     </message>
152
     <message>
153
         <source>libavcodec deinterlacer</source>
154
-        <translation type="obsolete">Ρύθμιση Deinterlacer...</translation>
155
+        <translation type="obsolete">παράλληλος αποπλέκτης libavcodec</translation>
156
     </message>
157
     <message>
158
         <source>All FFmpeg deinterlace filters (bicubic, median, ...).</source>
159
@@ -1190,7 +1191,7 @@
160
     </message>
161
     <message>
162
         <source>Resample fps</source>
163
-        <translation type="obsolete">Επαναδειγματοληψία fps</translation>
164
+        <translation type="obsolete">Επαναδειγματοληψία </translation>
165
     </message>
166
     <message>
167
         <source>Change framerate while keeping duration.</source>
168
@@ -1234,7 +1235,7 @@
169
     </message>
170
     <message>
171
         <source>mcDeinterlace</source>
172
-        <translation type="obsolete">Πεπλεγμένη</translation>
173
+        <translation type="obsolete">mcΠαράλληλοΑποπλέξιμο</translation>
174
     </message>
175
     <message>
176
         <source>Motion compensation deinterlacer. Ported from MPlayer.</source>
177
@@ -1270,7 +1271,7 @@
178
     </message>
179
     <message>
180
         <source>Muxing _type:</source>
181
-        <translation type="obsolete">Τύπος λογαριασμού:</translation>
182
+        <translation type="obsolete">_Τύπος πολυπλεξίματος:</translation>
183
     </message>
184
     <message>
185
         <source>_Split every MB:</source>
186
@@ -1282,7 +1283,7 @@
187
     </message>
188
     <message>
189
         <source>AVI Muxer Options</source>
190
-        <translation type="obsolete">Επιλογές AVI Muxer</translation>
191
+        <translation type="obsolete">Επιλογές AVI Πολυμείκτη</translation>
192
     </message>
193
     <message>
194
         <source>PCM</source>
195
@@ -1722,7 +1723,7 @@
196
     </message>
197
     <message>
198
         <source>Finding black frames</source>
199
-        <translation type="obsolete">Αναζήτηση μαύρων καρέ</translation>
200
+        <translation type="obsolete">Αναζήτηση μαύρων στιγμιότυπων</translation>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_en.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_en.ts Changed
201
 
1
@@ -4,7 +4,7 @@
2
 <context>
3
     <name>ADM_Composer</name>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+186"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+193"/>
7
         <source>Cannot find a demuxer for %s</source>
8
         <translation type="unfinished"></translation>
9
     </message>
10
@@ -432,17 +432,17 @@
11
 <context>
12
     <name>MainWindow</name>
13
     <message>
14
-        <location filename="../ADM_userInterfaces/ADM_gui/gui2.ui" line="+148"/>
15
+        <location filename="../ADM_userInterfaces/ADM_gui/gui2.ui" line="+151"/>
16
         <source>&amp;Auto</source>
17
         <translation type="unfinished">A&amp;uto</translation>
18
     </message>
19
     <message>
20
-        <location line="-133"/>
21
+        <location line="-136"/>
22
         <source>Avidemux</source>
23
         <translation type="unfinished"></translation>
24
     </message>
25
     <message>
26
-        <location line="+102"/>
27
+        <location line="+105"/>
28
         <source>&amp;Help</source>
29
         <translation type="unfinished"></translation>
30
     </message>
31
@@ -497,13 +497,13 @@
32
         <translation type="unfinished"></translation>
33
     </message>
34
     <message>
35
-        <location line="+41"/>
36
+        <location line="+44"/>
37
         <source>Codec O&amp;ptions</source>
38
         <translation type="unfinished"></translation>
39
     </message>
40
     <message>
41
         <location line="+33"/>
42
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
43
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
44
         <translation type="unfinished"></translation>
45
     </message>
46
     <message>
47
@@ -564,12 +564,12 @@
48
     </message>
49
     <message>
50
         <location line="+114"/>
51
-        <location line="+978"/>
52
+        <location line="+932"/>
53
         <source>&amp;Navigation</source>
54
         <translation type="unfinished"></translation>
55
     </message>
56
     <message>
57
-        <location line="-903"/>
58
+        <location line="-857"/>
59
         <source>Play [SPACE]</source>
60
         <translation type="unfinished"></translation>
61
     </message>
62
@@ -586,24 +586,18 @@
63
         <location line="+23"/>
64
         <location line="+23"/>
65
         <location line="+23"/>
66
-        <location line="+23"/>
67
         <location line="+26"/>
68
         <location line="+23"/>
69
         <location line="+23"/>
70
         <location line="+23"/>
71
         <location line="+23"/>
72
         <location line="+26"/>
73
-        <location line="+352"/>
74
+        <location line="+345"/>
75
         <source>...</source>
76
         <translation type="unfinished"></translation>
77
     </message>
78
     <message>
79
-        <location line="-637"/>
80
-        <source>Stop [SPACE]</source>
81
-        <translation type="unfinished"></translation>
82
-    </message>
83
-    <message>
84
-        <location line="+23"/>
85
+        <location line="-607"/>
86
         <source>Go to previous frame [LEFT]</source>
87
         <translation type="unfinished"></translation>
88
     </message>
89
@@ -673,7 +667,7 @@
90
         <translation type="unfinished"></translation>
91
     </message>
92
     <message>
93
-        <location line="+19"/>
94
+        <location line="+18"/>
95
         <source>00:00:00.000</source>
96
         <translation type="unfinished"></translation>
97
     </message>
98
@@ -693,7 +687,7 @@
99
         <translation type="unfinished"></translation>
100
     </message>
101
     <message>
102
-        <location line="+44"/>
103
+        <location line="+38"/>
104
         <source>Se&amp;lection</source>
105
         <translation type="unfinished"></translation>
106
     </message>
107
@@ -739,7 +733,7 @@
108
         <translation type="unfinished"></translation>
109
     </message>
110
     <message>
111
-        <location line="+100"/>
112
+        <location line="+84"/>
113
         <source>Audio &amp;Metre</source>
114
         <translation type="unfinished"></translation>
115
     </message>
116
@@ -1090,6 +1084,11 @@
117
         <translation>Set Marker &amp;B</translation>
118
     </message>
119
     <message>
120
+        <location line="+1"/>
121
+        <source>Reset Markers</source>
122
+        <translation type="unfinished"></translation>
123
+    </message>
124
+    <message>
125
         <location line="+4"/>
126
         <source>Save current settings as default</source>
127
         <translation>Save current settings as de&amp;fault</translation>
128
@@ -1209,7 +1208,7 @@
129
     </message>
130
     <message>
131
         <location line="+1"/>
132
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+353"/>
133
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+366"/>
134
         <source>Stereo</source>
135
         <translation type="unfinished"></translation>
136
     </message>
137
@@ -1412,7 +1411,7 @@
138
         <location filename="../../common/gui_save.cpp" line="-163"/>
139
         <location line="+21"/>
140
         <location line="+7"/>
141
-        <location filename="../../common/gui_savenew.cpp" line="+383"/>
142
+        <location filename="../../common/gui_savenew.cpp" line="+403"/>
143
         <source>Audio</source>
144
         <translation type="unfinished"></translation>
145
     </message>
146
@@ -1509,7 +1508,7 @@
147
         <translation type="unfinished"></translation>
148
     </message>
149
     <message>
150
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="-165"/>
151
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="-171"/>
152
         <source>Decode video using DXVA2 (windows)</source>
153
         <translation type="unfinished"></translation>
154
     </message>
155
@@ -1540,22 +1539,27 @@
156
     </message>
157
     <message>
158
         <location line="+3"/>
159
-        <source>_Use systray while encoding</source>
160
+        <source>_Accept non-standard audio frequency for DVD</source>
161
         <translation type="unfinished"></translation>
162
     </message>
163
     <message>
164
         <location line="+1"/>
165
-        <source>_Accept non-standard audio frequency for DVD</source>
166
+        <source>Create _OpenDML files</source>
167
         <translation type="unfinished"></translation>
168
     </message>
169
     <message>
170
         <location line="+1"/>
171
-        <source>Create _OpenDML files</source>
172
+        <source>_Revert to saved default output settings on video load</source>
173
         <translation type="unfinished"></translation>
174
     </message>
175
     <message>
176
         <location line="+1"/>
177
-        <source>_Revert to saved default output settings on video load</source>
178
+        <source>_Enable alternative keyboard shortcuts</source>
179
+        <translation type="unfinished"></translation>
180
+    </message>
181
+    <message>
182
+        <location line="+1"/>
183
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
184
         <translation type="unfinished"></translation>
185
     </message>
186
     <message>
187
@@ -1681,6 +1685,11 @@
188
         <translation type="unfinished"></translation>
189
     </message>
190
     <message>
191
+        <location line="+2"/>
192
+        <source>_Default to the directory of the last read file for saving</source>
193
+        <translation type="unfinished"></translation>
194
+    </message>
195
+    <message>
196
         <location line="+5"/>
197
         <source>XVideo (best)</source>
198
         <translation type="unfinished"></translation>
199
@@ -1691,6 +1700,11 @@
200
         <translation type="unfinished"></translation>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_es.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_es.ts Changed
201
 
1
@@ -3435,7 +3435,7 @@
2
         <translation type="obsolete">Puede estar relacionado a un archivo de índice antiguo.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">¡Intento de apertura de %s fallido!</translation>
9
     </message>
10
@@ -4674,7 +4674,7 @@
11
         <translation type="obsolete">&lt;b&gt;Vídeo&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Copiar</translation>
19
@@ -4688,7 +4688,12 @@
20
         <translation type="unfinished">Configurar</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Filtros</translation>
33
@@ -4710,7 +4715,7 @@
34
         <translation type="obsolete">/ 0</translation>
35
     </message>
36
     <message>
37
-        <location line="+671"/>
38
+        <location line="+647"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
@@ -4720,7 +4725,7 @@
43
         <translation type="unfinished">/ 00:00:00.000</translation>
44
     </message>
45
     <message>
46
-        <location line="+176"/>
47
+        <location line="+170"/>
48
         <location line="+10"/>
49
         <source>000000</source>
50
         <translation type="unfinished">000000</translation>
51
@@ -4752,7 +4757,7 @@
52
         <translation type="obsolete">Soporte incorporado para</translation>
53
     </message>
54
     <message>
55
-        <location line="-137"/>
56
+        <location line="-131"/>
57
         <source>Frame type:</source>
58
         <translation type="unfinished">Tipo de imagen:</translation>
59
     </message>
60
@@ -4761,7 +4766,7 @@
61
         <translation type="obsolete">DVD</translation>
62
     </message>
63
     <message>
64
-        <location line="-1284"/>
65
+        <location line="-1263"/>
66
         <source>&amp;Help</source>
67
         <translation type="unfinished"></translation>
68
     </message>
69
@@ -4821,17 +4826,12 @@
70
         <translation type="unfinished"></translation>
71
     </message>
72
     <message>
73
-        <location line="+41"/>
74
+        <location line="+44"/>
75
         <source>Codec O&amp;ptions</source>
76
         <translation type="unfinished"></translation>
77
     </message>
78
     <message>
79
-        <location line="+33"/>
80
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
81
-        <translation type="unfinished"></translation>
82
-    </message>
83
-    <message>
84
-        <location line="+75"/>
85
+        <location line="+108"/>
86
         <location line="+7"/>
87
         <source>XXXX</source>
88
         <translation type="unfinished"></translation>
89
@@ -4868,12 +4868,12 @@
90
     </message>
91
     <message>
92
         <location line="+114"/>
93
-        <location line="+978"/>
94
+        <location line="+932"/>
95
         <source>&amp;Navigation</source>
96
         <translation type="unfinished"></translation>
97
     </message>
98
     <message>
99
-        <location line="-903"/>
100
+        <location line="-857"/>
101
         <source>Play [SPACE]</source>
102
         <translation type="unfinished"></translation>
103
     </message>
104
@@ -4890,24 +4890,18 @@
105
         <location line="+23"/>
106
         <location line="+23"/>
107
         <location line="+23"/>
108
-        <location line="+23"/>
109
         <location line="+26"/>
110
         <location line="+23"/>
111
         <location line="+23"/>
112
         <location line="+23"/>
113
         <location line="+23"/>
114
         <location line="+26"/>
115
-        <location line="+352"/>
116
+        <location line="+345"/>
117
         <source>...</source>
118
         <translation type="unfinished"></translation>
119
     </message>
120
     <message>
121
-        <location line="-637"/>
122
-        <source>Stop [SPACE]</source>
123
-        <translation type="unfinished"></translation>
124
-    </message>
125
-    <message>
126
-        <location line="+23"/>
127
+        <location line="-607"/>
128
         <source>Go to previous frame [LEFT]</source>
129
         <translation type="unfinished"></translation>
130
     </message>
131
@@ -4977,12 +4971,12 @@
132
         <translation type="unfinished"></translation>
133
     </message>
134
     <message>
135
-        <location line="+83"/>
136
+        <location line="+82"/>
137
         <source>?</source>
138
         <translation type="unfinished"></translation>
139
     </message>
140
     <message>
141
-        <location line="+44"/>
142
+        <location line="+38"/>
143
         <source>Se&amp;lection</source>
144
         <translation type="unfinished"></translation>
145
     </message>
146
@@ -5012,7 +5006,7 @@
147
         <translation type="unfinished"></translation>
148
     </message>
149
     <message>
150
-        <location line="+100"/>
151
+        <location line="+84"/>
152
         <source>Audio &amp;Metre</source>
153
         <translation type="unfinished"></translation>
154
     </message>
155
@@ -5755,17 +5749,16 @@
156
 <context>
157
     <name>adm</name>
158
     <message>
159
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
160
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
161
         <source>Decode video using DXVA2 (windows)</source>
162
         <translation type="unfinished"></translation>
163
     </message>
164
     <message>
165
-        <location line="+10"/>
166
         <source>_Use systray while encoding</source>
167
-        <translation type="unfinished">Minimizar en el tray al codificar</translation>
168
+        <translation type="obsolete">Minimizar en el tray al codificar</translation>
169
     </message>
170
     <message>
171
-        <location line="+1"/>
172
+        <location line="+10"/>
173
         <source>_Accept non-standard audio frequency for DVD</source>
174
         <translation type="unfinished">Permitir frecuencia de sonido no estándar para DVD</translation>
175
     </message>
176
@@ -5780,6 +5773,16 @@
177
         <translation type="unfinished"></translation>
178
     </message>
179
     <message>
180
+        <location line="+1"/>
181
+        <source>_Enable alternative keyboard shortcuts</source>
182
+        <translation type="unfinished"></translation>
183
+    </message>
184
+    <message>
185
+        <location line="+1"/>
186
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
187
+        <translation type="unfinished"></translation>
188
+    </message>
189
+    <message>
190
         <location line="+4"/>
191
         <source>SIMD</source>
192
         <translation type="unfinished">SIMD</translation>
193
@@ -5892,12 +5895,22 @@
194
         <translation type="unfinished">Usar un tag alternativo para MP3 en .mp4</translation>
195
     </message>
196
     <message>
197
+        <location line="+2"/>
198
+        <source>_Default to the directory of the last read file for saving</source>
199
+        <translation type="unfinished"></translation>
200
+    </message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_eu.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_eu.ts Changed
201
 
1
@@ -984,7 +984,7 @@
2
         <translation type="obsolete">Badaiteke aurkibide agiri zahar batekin elkartua izatea.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+186"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+193"/>
7
         <source>Cannot find a demuxer for %s</source>
8
         <translation>Ezin da desmultiplexatzailea aurkitu %s-rako</translation>
9
     </message>
10
@@ -2717,7 +2717,7 @@
11
         <translation type="obsolete">&lt;b&gt;Bideoa&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation>Kopiatu</translation>
19
@@ -2731,7 +2731,7 @@
20
         <translation>Itxuratu</translation>
21
     </message>
22
     <message>
23
-        <location line="-666"/>
24
+        <location line="-669"/>
25
         <source>&amp;Recent</source>
26
         <translation>Az&amp;kenak</translation>
27
     </message>
28
@@ -2740,12 +2740,11 @@
29
         <translation type="vanished">Kodek Aukerak</translation>
30
     </message>
31
     <message>
32
-        <location line="+74"/>
33
         <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
34
-        <translation>&lt;b&gt;Bideo Dekodeatzailea&lt;b&gt;</translation>
35
+        <translation type="vanished">&lt;b&gt;Bideo Dekodeatzailea&lt;b&gt;</translation>
36
     </message>
37
     <message>
38
-        <location line="+75"/>
39
+        <location line="+152"/>
40
         <location line="+7"/>
41
         <source>XXXX</source>
42
         <translation>XXXX</translation>
43
@@ -2787,14 +2786,13 @@
44
         <location line="+23"/>
45
         <location line="+23"/>
46
         <location line="+23"/>
47
-        <location line="+23"/>
48
         <location line="+26"/>
49
         <location line="+23"/>
50
         <location line="+23"/>
51
         <location line="+23"/>
52
         <location line="+23"/>
53
         <location line="+26"/>
54
-        <location line="+352"/>
55
+        <location line="+345"/>
56
         <source>...</source>
57
         <translation>...</translation>
58
     </message>
59
@@ -2811,12 +2809,12 @@
60
         <translation type="obsolete">/ 0</translation>
61
     </message>
62
     <message>
63
-        <location line="-297"/>
64
+        <location line="-290"/>
65
         <source>Time:</source>
66
         <translation>Denbora:</translation>
67
     </message>
68
     <message>
69
-        <location line="+19"/>
70
+        <location line="+18"/>
71
         <source>00:00:00.000</source>
72
         <translation>00:00:00.000</translation>
73
     </message>
74
@@ -2839,7 +2837,7 @@
75
         <translation type="vanished">Hautapena</translation>
76
     </message>
77
     <message>
78
-        <location line="+117"/>
79
+        <location line="+111"/>
80
         <source>A:</source>
81
         <translation>A:</translation>
82
     </message>
83
@@ -2855,7 +2853,7 @@
84
         <translation>B:</translation>
85
     </message>
86
     <message>
87
-        <location line="-1416"/>
88
+        <location line="-1389"/>
89
         <source>Vi&amp;deo</source>
90
         <translation>&amp;Bideoa</translation>
91
     </message>
92
@@ -2930,7 +2928,7 @@
93
         <translation>&amp;Tresnak</translation>
94
     </message>
95
     <message>
96
-        <location line="+404"/>
97
+        <location line="+407"/>
98
         <source>&lt;b&gt;Audio Output&lt;/b&gt;</source>
99
         <translation>&lt;b&gt;Audio Irteera&lt;/b&gt;</translation>
100
     </message>
101
@@ -2949,7 +2947,7 @@
102
         <translation type="vanished">Nabigazioa</translation>
103
     </message>
104
     <message>
105
-        <location line="+628"/>
106
+        <location line="+604"/>
107
         <source>Frame type:</source>
108
         <translation>Frame mota:</translation>
109
     </message>
110
@@ -2966,7 +2964,7 @@
111
         <translation type="vanished">Audio Neurgailua</translation>
112
     </message>
113
     <message>
114
-        <location line="+340"/>
115
+        <location line="+318"/>
116
         <source>&amp;Open...</source>
117
         <translation>&amp;Ireki...</translation>
118
     </message>
119
@@ -3473,8 +3471,8 @@
120
         <translation>Ctrl+Alt+C</translation>
121
     </message>
122
     <message>
123
-        <location line="-967"/>
124
-        <location line="+978"/>
125
+        <location line="-921"/>
126
+        <location line="+932"/>
127
         <source>&amp;Navigation</source>
128
         <translation>&amp;Nabigazioa</translation>
129
     </message>
130
@@ -3600,12 +3598,17 @@
131
         <translation type="obsolete">Bideo CD-a</translation>
132
     </message>
133
     <message>
134
-        <location line="-1703"/>
135
+        <location line="-1657"/>
136
         <source>Codec O&amp;ptions</source>
137
         <translation type="unfinished"></translation>
138
     </message>
139
     <message>
140
-        <location line="+743"/>
141
+        <location line="+33"/>
142
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
143
+        <translation type="unfinished"></translation>
144
+    </message>
145
+    <message>
146
+        <location line="+710"/>
147
         <source>Play [SPACE]</source>
148
         <translation type="unfinished"></translation>
149
     </message>
150
@@ -3616,11 +3619,6 @@
151
     </message>
152
     <message>
153
         <location line="+26"/>
154
-        <source>Stop [SPACE]</source>
155
-        <translation type="unfinished"></translation>
156
-    </message>
157
-    <message>
158
-        <location line="+23"/>
159
         <source>Go to previous frame [LEFT]</source>
160
         <translation type="unfinished"></translation>
161
     </message>
162
@@ -3685,7 +3683,7 @@
163
         <translation type="unfinished"></translation>
164
     </message>
165
     <message>
166
-        <location line="+185"/>
167
+        <location line="+178"/>
168
         <source>Se&amp;lection</source>
169
         <translation type="unfinished"></translation>
170
     </message>
171
@@ -3715,7 +3713,7 @@
172
         <translation type="unfinished"></translation>
173
     </message>
174
     <message>
175
-        <location line="+100"/>
176
+        <location line="+84"/>
177
         <source>Audio &amp;Metre</source>
178
         <translation type="unfinished"></translation>
179
     </message>
180
@@ -4962,7 +4960,7 @@
181
     </message>
182
     <message>
183
         <location line="+1"/>
184
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+353"/>
185
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+366"/>
186
         <source>Stereo</source>
187
         <translation>Estereoa</translation>
188
     </message>
189
@@ -5160,7 +5158,7 @@
190
         <location filename="../../common/gui_save.cpp" line="+281"/>
191
         <location line="+21"/>
192
         <location line="+7"/>
193
-        <location filename="../../common/gui_savenew.cpp" line="+383"/>
194
+        <location filename="../../common/gui_savenew.cpp" line="+403"/>
195
         <source>Audio</source>
196
         <translation>Audioa</translation>
197
     </message>
198
@@ -5261,7 +5259,7 @@
199
         <translation type="vanished">Dekodeatu bideoa VDPAU erabiliz</translation>
200
     </message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_fr.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_fr.ts Changed
201
 
1
@@ -155,7 +155,7 @@
2
 Ignorer les informations de timing ?</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+186"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+193"/>
7
         <source>Cannot find a demuxer for %s</source>
8
         <translation>Impossible de trouver un demuxer pour lire %s</translation>
9
     </message>
10
@@ -820,7 +820,7 @@
11
         <translation>Avidemux</translation>
12
     </message>
13
     <message>
14
-        <location line="+102"/>
15
+        <location line="+105"/>
16
         <source>&amp;Help</source>
17
         <translation>&amp;Aide</translation>
18
     </message>
19
@@ -849,12 +849,7 @@
20
         <translation type="obsolete">Options</translation>
21
     </message>
22
     <message>
23
-        <location line="+79"/>
24
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
25
-        <translation>&lt;b&gt;Décodeur Vidéo&lt;/b&gt;</translation>
26
-    </message>
27
-    <message>
28
-        <location line="+100"/>
29
+        <location line="+182"/>
30
         <location line="+142"/>
31
         <location line="+169"/>
32
         <location line="+181"/>
33
@@ -899,7 +894,7 @@
34
         <translation>&lt;b&gt;Format de sortie&lt;/b&gt;</translation>
35
     </message>
36
     <message>
37
-        <location line="+968"/>
38
+        <location line="+922"/>
39
         <source>&amp;Open...</source>
40
         <translation>&amp;Ouvrir...</translation>
41
     </message>
42
@@ -972,7 +967,7 @@
43
         <translation>Cot&amp;e à cote</translation>
44
     </message>
45
     <message>
46
-        <location line="-1824"/>
47
+        <location line="-1781"/>
48
         <source>Vi&amp;deo</source>
49
         <translation></translation>
50
     </message>
51
@@ -1007,12 +1002,17 @@
52
         <translation>&amp;Récent</translation>
53
     </message>
54
     <message>
55
-        <location line="+41"/>
56
+        <location line="+44"/>
57
         <source>Codec O&amp;ptions</source>
58
         <translation></translation>
59
     </message>
60
     <message>
61
-        <location line="+108"/>
62
+        <location line="+33"/>
63
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
64
+        <translation>&lt;b&gt;Décodeur Vidéo&lt;/b&gt;</translation>
65
+    </message>
66
+    <message>
67
+        <location line="+75"/>
68
         <location line="+7"/>
69
         <source>XXXX</source>
70
         <translation></translation>
71
@@ -1024,12 +1024,12 @@
72
     </message>
73
     <message>
74
         <location line="+149"/>
75
-        <location line="+978"/>
76
+        <location line="+932"/>
77
         <source>&amp;Navigation</source>
78
         <translation type="unfinished"></translation>
79
     </message>
80
     <message>
81
-        <location line="-903"/>
82
+        <location line="-857"/>
83
         <source>Play [SPACE]</source>
84
         <translation>Lire [SPACE]</translation>
85
     </message>
86
@@ -1046,24 +1046,18 @@
87
         <location line="+23"/>
88
         <location line="+23"/>
89
         <location line="+23"/>
90
-        <location line="+23"/>
91
         <location line="+26"/>
92
         <location line="+23"/>
93
         <location line="+23"/>
94
         <location line="+23"/>
95
         <location line="+23"/>
96
         <location line="+26"/>
97
-        <location line="+352"/>
98
+        <location line="+345"/>
99
         <source>...</source>
100
         <translation></translation>
101
     </message>
102
     <message>
103
-        <location line="-637"/>
104
-        <source>Stop [SPACE]</source>
105
-        <translation></translation>
106
-    </message>
107
-    <message>
108
-        <location line="+23"/>
109
+        <location line="-607"/>
110
         <source>Go to previous frame [LEFT]</source>
111
         <translation type="unfinished">Image précédente [GAUCHE]</translation>
112
     </message>
113
@@ -1115,7 +1109,7 @@
114
     <message>
115
         <location line="+23"/>
116
         <source>Backward one minute [CTRL+DOWN]</source>
117
-        <translation>Reculer d&quot;une minute [CTRL+BAS]</translation>
118
+        <translation>Reculer d&apos;une minute [CTRL+BAS]</translation>
119
     </message>
120
     <message>
121
         <location line="+23"/>
122
@@ -1133,7 +1127,7 @@
123
         <translation>Temps:</translation>
124
     </message>
125
     <message>
126
-        <location line="+19"/>
127
+        <location line="+18"/>
128
         <source>00:00:00.000</source>
129
         <translation></translation>
130
     </message>
131
@@ -1153,7 +1147,7 @@
132
         <translation></translation>
133
     </message>
134
     <message>
135
-        <location line="+44"/>
136
+        <location line="+38"/>
137
         <source>Se&amp;lection</source>
138
         <translation></translation>
139
     </message>
140
@@ -1199,7 +1193,7 @@
141
         <translation></translation>
142
     </message>
143
     <message>
144
-        <location line="+100"/>
145
+        <location line="+84"/>
146
         <source>Audio &amp;Metre</source>
147
         <translation></translation>
148
     </message>
149
@@ -1431,7 +1425,7 @@
150
         <translation type="obsolete">Utiliser VDPAU pour décoder</translation>
151
     </message>
152
     <message>
153
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
154
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
155
         <source>Decode video using DXVA2 (windows)</source>
156
         <translation>Utiliser DXVA2 pour décoder (Windows)</translation>
157
     </message>
158
@@ -1441,12 +1435,11 @@
159
         <translation>Activer OpenGL</translation>
160
     </message>
161
     <message>
162
-        <location line="+6"/>
163
         <source>_Use systray while encoding</source>
164
-        <translation>Réduire dans la barre de taches</translation>
165
+        <translation type="vanished">Réduire dans la barre de taches</translation>
166
     </message>
167
     <message>
168
-        <location line="+1"/>
169
+        <location line="+6"/>
170
         <source>_Accept non-standard audio frequency for DVD</source>
171
         <translation>Accepter les fréquences non standard pour les DVDs</translation>
172
     </message>
173
@@ -1458,7 +1451,17 @@
174
     <message>
175
         <location line="+1"/>
176
         <source>_Revert to saved default output settings on video load</source>
177
-        <translation>&amp;Revenir aux paramètres par défaut enregistrés lors du chargement vidéo</translation>
178
+        <translation>_Revenir aux paramètres par défaut enregistrés lors du chargement vidéo</translation>
179
+    </message>
180
+    <message>
181
+        <location line="+1"/>
182
+        <source>_Enable alternative keyboard shortcuts</source>
183
+        <translation>Activer les raccourcis claviers alternatifs</translation>
184
+    </message>
185
+    <message>
186
+        <location line="+1"/>
187
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
188
+        <translation>Inverser les touches HAUT et BAS pour la navigation</translation>
189
     </message>
190
     <message>
191
         <location line="+6"/>
192
@@ -1568,6 +1571,11 @@
193
         <translation>Utiliser un tag alternatif pour les pistes mp3 (.mp4)</translation>
194
     </message>
195
     <message>
196
+        <location line="+2"/>
197
+        <source>_Default to the directory of the last read file for saving</source>
198
+        <translation>Utiliser le répertoire du dernier fichier lu comme répertoire de sauvegarde par défaut</translation>
199
+    </message>
200
+    <message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_hu.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_hu.ts Changed
201
 
1
@@ -4,7 +4,7 @@
2
 <context>
3
     <name>ADM_Composer</name>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation>A %s megnyitása sikertelen!</translation>
9
     </message>
10
@@ -607,7 +607,7 @@
11
         <translation>Avidemux</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation>Másolás</translation>
19
@@ -639,24 +639,23 @@
20
         <location line="+23"/>
21
         <location line="+23"/>
22
         <location line="+23"/>
23
-        <location line="+23"/>
24
         <location line="+26"/>
25
         <location line="+23"/>
26
         <location line="+23"/>
27
         <location line="+23"/>
28
         <location line="+23"/>
29
         <location line="+26"/>
30
-        <location line="+352"/>
31
+        <location line="+345"/>
32
         <source>...</source>
33
         <translation>…</translation>
34
     </message>
35
     <message>
36
-        <location line="-297"/>
37
+        <location line="-290"/>
38
         <source>Time:</source>
39
         <translation>Idő:</translation>
40
     </message>
41
     <message>
42
-        <location line="+19"/>
43
+        <location line="+18"/>
44
         <source>00:00:00.000</source>
45
         <translation>00:00:00.000</translation>
46
     </message>
47
@@ -675,13 +674,13 @@
48
         <translation type="vanished">Kijelölés</translation>
49
     </message>
50
     <message>
51
-        <location line="+134"/>
52
+        <location line="+128"/>
53
         <location line="+10"/>
54
         <source>000000</source>
55
         <translation>000000</translation>
56
     </message>
57
     <message>
58
-        <location line="-1441"/>
59
+        <location line="-1414"/>
60
         <source>&amp;Help</source>
61
         <translation>&amp;Súgó</translation>
62
     </message>
63
@@ -726,7 +725,7 @@
64
         <translation>U&amp;grás</translation>
65
     </message>
66
     <message>
67
-        <location line="+1583"/>
68
+        <location line="+1540"/>
69
         <source>&amp;Open...</source>
70
         <translation>M&amp;egnyitás…</translation>
71
     </message>
72
@@ -789,12 +788,12 @@
73
         <translation>F7</translation>
74
     </message>
75
     <message>
76
-        <location line="-1075"/>
77
+        <location line="-1029"/>
78
         <source>ms</source>
79
         <translation>ms</translation>
80
     </message>
81
     <message>
82
-        <location line="+793"/>
83
+        <location line="+763"/>
84
         <source>A:</source>
85
         <translation>A:</translation>
86
     </message>
87
@@ -804,7 +803,7 @@
88
         <translation>B:</translation>
89
     </message>
90
     <message>
91
-        <location line="+290"/>
92
+        <location line="+274"/>
93
         <source>&amp;Input</source>
94
         <translation>&amp;Bemenet</translation>
95
     </message>
96
@@ -824,17 +823,17 @@
97
         <translation>Fen&amp;t</translation>
98
     </message>
99
     <message>
100
-        <location line="-533"/>
101
+        <location line="-511"/>
102
         <source>Frame type:</source>
103
         <translation>Képkocka típus:</translation>
104
     </message>
105
     <message>
106
-        <location line="+521"/>
107
+        <location line="+499"/>
108
         <source>&amp;Separate</source>
109
         <translation>&amp;Szeparált</translation>
110
     </message>
111
     <message>
112
-        <location line="-1786"/>
113
+        <location line="-1743"/>
114
         <source>&amp;Toolbars</source>
115
         <translation>Eszköz&amp;tárak</translation>
116
     </message>
117
@@ -853,12 +852,11 @@
118
         <translation type="vanished">Kódoló beállítás</translation>
119
     </message>
120
     <message>
121
-        <location line="+74"/>
122
         <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
123
-        <translation>&lt;b&gt;Videó dekódoló&lt;b&gt;</translation>
124
+        <translation type="vanished">&lt;b&gt;Videó dekódoló&lt;b&gt;</translation>
125
     </message>
126
     <message>
127
-        <location line="+75"/>
128
+        <location line="+152"/>
129
         <location line="+7"/>
130
         <source>XXXX</source>
131
         <translation>XXXX</translation>
132
@@ -900,7 +898,7 @@
133
         <translation type="vanished">Hang méter</translation>
134
     </message>
135
     <message>
136
-        <location line="+1078"/>
137
+        <location line="+1032"/>
138
         <source>&amp;Codec Options</source>
139
         <translation>&amp;Kódek beállítás</translation>
140
     </message>
141
@@ -910,8 +908,8 @@
142
         <translation>Alt+Ctrl+C</translation>
143
     </message>
144
     <message>
145
-        <location line="-967"/>
146
-        <location line="+978"/>
147
+        <location line="-921"/>
148
+        <location line="+932"/>
149
         <source>&amp;Navigation</source>
150
         <translation>&amp;Navigálás</translation>
151
     </message>
152
@@ -946,12 +944,17 @@
153
         <translation>Ctrl+Alt+M</translation>
154
     </message>
155
     <message>
156
-        <location line="-1691"/>
157
+        <location line="-1645"/>
158
         <source>Codec O&amp;ptions</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+743"/>
163
+        <location line="+33"/>
164
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
165
+        <translation type="unfinished"></translation>
166
+    </message>
167
+    <message>
168
+        <location line="+710"/>
169
         <source>Play [SPACE]</source>
170
         <translation type="unfinished"></translation>
171
     </message>
172
@@ -962,11 +965,6 @@
173
     </message>
174
     <message>
175
         <location line="+26"/>
176
-        <source>Stop [SPACE]</source>
177
-        <translation type="unfinished"></translation>
178
-    </message>
179
-    <message>
180
-        <location line="+23"/>
181
         <source>Go to previous frame [LEFT]</source>
182
         <translation type="unfinished"></translation>
183
     </message>
184
@@ -1031,7 +1029,7 @@
185
         <translation type="unfinished"></translation>
186
     </message>
187
     <message>
188
-        <location line="+185"/>
189
+        <location line="+178"/>
190
         <source>Se&amp;lection</source>
191
         <translation type="unfinished"></translation>
192
     </message>
193
@@ -1061,7 +1059,7 @@
194
         <translation type="unfinished"></translation>
195
     </message>
196
     <message>
197
-        <location line="+100"/>
198
+        <location line="+84"/>
199
         <source>Audio &amp;Metre</source>
200
         <translation type="unfinished"></translation>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_it.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_it.ts Changed
201
 
1
@@ -3768,7 +3768,7 @@
2
         <translation type="obsolete">Potrebbe essere correlato a un vecchio file di indice.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation>Tentativo di aprire %s fallito!</translation>
9
     </message>
10
@@ -5552,7 +5552,7 @@
11
         <translation type="obsolete">&lt;b&gt;Video&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation>Copia</translation>
19
@@ -5592,14 +5592,13 @@
20
         <location line="+23"/>
21
         <location line="+23"/>
22
         <location line="+23"/>
23
-        <location line="+23"/>
24
         <location line="+26"/>
25
         <location line="+23"/>
26
         <location line="+23"/>
27
         <location line="+23"/>
28
         <location line="+23"/>
29
         <location line="+26"/>
30
-        <location line="+352"/>
31
+        <location line="+345"/>
32
         <source>...</source>
33
         <translation>...</translation>
34
     </message>
35
@@ -5616,12 +5615,12 @@
36
         <translation type="obsolete">/ 0</translation>
37
     </message>
38
     <message>
39
-        <location line="-297"/>
40
+        <location line="-290"/>
41
         <source>Time:</source>
42
         <translation>Tempo:</translation>
43
     </message>
44
     <message>
45
-        <location line="+19"/>
46
+        <location line="+18"/>
47
         <source>00:00:00.000</source>
48
         <translation>00:00:00.000</translation>
49
     </message>
50
@@ -5644,13 +5643,13 @@
51
         <translation type="vanished">Selezione</translation>
52
     </message>
53
     <message>
54
-        <location line="+134"/>
55
+        <location line="+128"/>
56
         <location line="+10"/>
57
         <source>000000</source>
58
         <translation>000000</translation>
59
     </message>
60
     <message>
61
-        <location line="-1441"/>
62
+        <location line="-1414"/>
63
         <source>&amp;Help</source>
64
         <translation>A&amp;iuto</translation>
65
     </message>
66
@@ -5711,7 +5710,7 @@
67
         <translation type="obsolete">A&amp;uto</translation>
68
     </message>
69
     <message>
70
-        <location line="+1583"/>
71
+        <location line="+1540"/>
72
         <source>&amp;Open...</source>
73
         <translation>&amp;Apri...</translation>
74
     </message>
75
@@ -6238,12 +6237,12 @@
76
         <translation>Affiancati ver&amp;ticalmente</translation>
77
     </message>
78
     <message>
79
-        <location line="-533"/>
80
+        <location line="-511"/>
81
         <source>Frame type:</source>
82
         <translation>Tipo di fotogramma:</translation>
83
     </message>
84
     <message>
85
-        <location line="+521"/>
86
+        <location line="+499"/>
87
         <source>&amp;Separate</source>
88
         <translation>&amp;Separati</translation>
89
     </message>
90
@@ -6256,7 +6255,7 @@
91
         <translation type="obsolete">Ctrl+W</translation>
92
     </message>
93
     <message>
94
-        <location line="-1184"/>
95
+        <location line="-1138"/>
96
         <source>ms</source>
97
         <translation>ms</translation>
98
     </message>
99
@@ -6265,7 +6264,7 @@
100
         <translation type="obsolete">Salva selezione in immagini JPEG...</translation>
101
     </message>
102
     <message>
103
-        <location line="+793"/>
104
+        <location line="+763"/>
105
         <source>A:</source>
106
         <translation>A:</translation>
107
     </message>
108
@@ -6303,7 +6302,7 @@
109
         <translation type="obsolete">Video CD</translation>
110
     </message>
111
     <message>
112
-        <location line="-1402"/>
113
+        <location line="-1375"/>
114
         <source>&amp;Toolbars</source>
115
         <translation>&amp;Barre degli strumenti</translation>
116
     </message>
117
@@ -6322,12 +6321,11 @@
118
         <translation type="vanished">Opzioni codec</translation>
119
     </message>
120
     <message>
121
-        <location line="+74"/>
122
         <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
123
-        <translation>&lt;b&gt;Decoder video&lt;b&gt;</translation>
124
+        <translation type="vanished">&lt;b&gt;Decoder video&lt;b&gt;</translation>
125
     </message>
126
     <message>
127
-        <location line="+75"/>
128
+        <location line="+152"/>
129
         <location line="+7"/>
130
         <source>XXXX</source>
131
         <translation>XXXX</translation>
132
@@ -6369,7 +6367,7 @@
133
         <translation type="vanished">Audiometro</translation>
134
     </message>
135
     <message>
136
-        <location line="+1078"/>
137
+        <location line="+1032"/>
138
         <source>&amp;Codec Options</source>
139
         <translation>Opzioni &amp;codec</translation>
140
     </message>
141
@@ -6379,8 +6377,8 @@
142
         <translation>Ctrl+Alt+C</translation>
143
     </message>
144
     <message>
145
-        <location line="-967"/>
146
-        <location line="+978"/>
147
+        <location line="-921"/>
148
+        <location line="+932"/>
149
         <source>&amp;Navigation</source>
150
         <translation>&amp;Navigazione</translation>
151
     </message>
152
@@ -6415,12 +6413,17 @@
153
         <translation>Ctrl+Alt+M</translation>
154
     </message>
155
     <message>
156
-        <location line="-1691"/>
157
+        <location line="-1645"/>
158
         <source>Codec O&amp;ptions</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+743"/>
163
+        <location line="+33"/>
164
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
165
+        <translation type="unfinished"></translation>
166
+    </message>
167
+    <message>
168
+        <location line="+710"/>
169
         <source>Play [SPACE]</source>
170
         <translation type="unfinished"></translation>
171
     </message>
172
@@ -6431,11 +6434,6 @@
173
     </message>
174
     <message>
175
         <location line="+26"/>
176
-        <source>Stop [SPACE]</source>
177
-        <translation type="unfinished"></translation>
178
-    </message>
179
-    <message>
180
-        <location line="+23"/>
181
         <source>Go to previous frame [LEFT]</source>
182
         <translation type="unfinished"></translation>
183
     </message>
184
@@ -6500,7 +6498,7 @@
185
         <translation type="unfinished"></translation>
186
     </message>
187
     <message>
188
-        <location line="+185"/>
189
+        <location line="+178"/>
190
         <source>Se&amp;lection</source>
191
         <translation type="unfinished"></translation>
192
     </message>
193
@@ -6530,7 +6528,7 @@
194
         <translation type="unfinished"></translation>
195
     </message>
196
     <message>
197
-        <location line="+100"/>
198
+        <location line="+84"/>
199
         <source>Audio &amp;Metre</source>
200
         <translation type="unfinished"></translation>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_ja.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_ja.ts Changed
201
 
1
@@ -2395,7 +2395,7 @@
2
         <translation type="obsolete">古いインデックスファイルに関係するかもしれません.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">%s を開く試みは失敗しました!</translation>
9
     </message>
10
@@ -3424,7 +3424,7 @@
11
         <translation type="obsolete">&lt;b&gt;映像&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">コピー</translation>
19
@@ -3438,7 +3438,12 @@
20
         <translation type="unfinished">構成</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">フィルタ</translation>
33
@@ -3460,7 +3465,7 @@
34
         <translation type="obsolete">/ 0</translation>
35
     </message>
36
     <message>
37
-        <location line="+671"/>
38
+        <location line="+647"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
@@ -3470,7 +3475,7 @@
43
         <translation type="unfinished">/ 00:00:00.000</translation>
44
     </message>
45
     <message>
46
-        <location line="+176"/>
47
+        <location line="+170"/>
48
         <location line="+10"/>
49
         <source>000000</source>
50
         <translation type="unfinished">000000</translation>
51
@@ -3502,12 +3507,12 @@
52
         <translation type="obsolete">内蔵サポート</translation>
53
     </message>
54
     <message>
55
-        <location line="-137"/>
56
+        <location line="-131"/>
57
         <source>Frame type:</source>
58
         <translation type="unfinished">フレームタイプ:</translation>
59
     </message>
60
     <message>
61
-        <location line="-1284"/>
62
+        <location line="-1263"/>
63
         <source>&amp;Help</source>
64
         <translation type="unfinished"></translation>
65
     </message>
66
@@ -3567,17 +3572,12 @@
67
         <translation type="unfinished"></translation>
68
     </message>
69
     <message>
70
-        <location line="+41"/>
71
+        <location line="+44"/>
72
         <source>Codec O&amp;ptions</source>
73
         <translation type="unfinished"></translation>
74
     </message>
75
     <message>
76
-        <location line="+33"/>
77
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
78
-        <translation type="unfinished"></translation>
79
-    </message>
80
-    <message>
81
-        <location line="+75"/>
82
+        <location line="+108"/>
83
         <location line="+7"/>
84
         <source>XXXX</source>
85
         <translation type="unfinished"></translation>
86
@@ -3614,12 +3614,12 @@
87
     </message>
88
     <message>
89
         <location line="+114"/>
90
-        <location line="+978"/>
91
+        <location line="+932"/>
92
         <source>&amp;Navigation</source>
93
         <translation type="unfinished"></translation>
94
     </message>
95
     <message>
96
-        <location line="-903"/>
97
+        <location line="-857"/>
98
         <source>Play [SPACE]</source>
99
         <translation type="unfinished"></translation>
100
     </message>
101
@@ -3636,24 +3636,18 @@
102
         <location line="+23"/>
103
         <location line="+23"/>
104
         <location line="+23"/>
105
-        <location line="+23"/>
106
         <location line="+26"/>
107
         <location line="+23"/>
108
         <location line="+23"/>
109
         <location line="+23"/>
110
         <location line="+23"/>
111
         <location line="+26"/>
112
-        <location line="+352"/>
113
+        <location line="+345"/>
114
         <source>...</source>
115
         <translation type="unfinished"></translation>
116
     </message>
117
     <message>
118
-        <location line="-637"/>
119
-        <source>Stop [SPACE]</source>
120
-        <translation type="unfinished"></translation>
121
-    </message>
122
-    <message>
123
-        <location line="+23"/>
124
+        <location line="-607"/>
125
         <source>Go to previous frame [LEFT]</source>
126
         <translation type="unfinished"></translation>
127
     </message>
128
@@ -3723,12 +3717,12 @@
129
         <translation type="unfinished"></translation>
130
     </message>
131
     <message>
132
-        <location line="+83"/>
133
+        <location line="+82"/>
134
         <source>?</source>
135
         <translation type="unfinished"></translation>
136
     </message>
137
     <message>
138
-        <location line="+44"/>
139
+        <location line="+38"/>
140
         <source>Se&amp;lection</source>
141
         <translation type="unfinished"></translation>
142
     </message>
143
@@ -3758,7 +3752,7 @@
144
         <translation type="unfinished"></translation>
145
     </message>
146
     <message>
147
-        <location line="+100"/>
148
+        <location line="+84"/>
149
         <source>Audio &amp;Metre</source>
150
         <translation type="unfinished"></translation>
151
     </message>
152
@@ -4452,17 +4446,16 @@
153
 <context>
154
     <name>adm</name>
155
     <message>
156
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
157
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
158
         <source>Decode video using DXVA2 (windows)</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+10"/>
163
         <source>_Use systray while encoding</source>
164
-        <translation type="unfinished">エンコード中シストレーを使う(_U)</translation>
165
+        <translation type="obsolete">エンコード中シストレーを使う(_U)</translation>
166
     </message>
167
     <message>
168
-        <location line="+1"/>
169
+        <location line="+10"/>
170
         <source>_Accept non-standard audio frequency for DVD</source>
171
         <translation type="unfinished">DVDに標準でない音声周波数を受け付ける(_A)</translation>
172
     </message>
173
@@ -4477,6 +4470,16 @@
174
         <translation type="unfinished"></translation>
175
     </message>
176
     <message>
177
+        <location line="+1"/>
178
+        <source>_Enable alternative keyboard shortcuts</source>
179
+        <translation type="unfinished"></translation>
180
+    </message>
181
+    <message>
182
+        <location line="+1"/>
183
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
184
+        <translation type="unfinished"></translation>
185
+    </message>
186
+    <message>
187
         <location line="+4"/>
188
         <source>SIMD</source>
189
         <translation type="unfinished">
190
@@ -4602,13 +4605,23 @@
191
         <translation type="unfinished">.mp4にmp3の代替タグを使う(_U)</translation>
192
     </message>
193
     <message>
194
+        <location line="+2"/>
195
+        <source>_Default to the directory of the last read file for saving</source>
196
+        <translation type="unfinished"></translation>
197
+    </message>
198
+    <message>
199
         <location line="+5"/>
200
         <source>XVideo (best)</source>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_pl.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_pl.ts Changed
201
 
1
@@ -3614,7 +3614,7 @@
2
         <translation type="obsolete">Może być związany ze starym plikiem indeksu.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Nie udało się otworzyć %s!</translation>
9
     </message>
10
@@ -4874,7 +4874,7 @@
11
         <translation type="obsolete">&lt;b&gt;Obraz&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Kopiuj</translation>
19
@@ -4888,7 +4888,12 @@
20
         <translation type="unfinished">Konfiguruj</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Filtry</translation>
33
@@ -4911,12 +4916,12 @@
34
         <translation type="obsolete">0</translation>
35
     </message>
36
     <message>
37
-        <location line="+612"/>
38
+        <location line="+588"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
     <message>
43
-        <location line="+181"/>
44
+        <location line="+175"/>
45
         <source>A:</source>
46
         <translation type="unfinished">A:</translation>
47
     </message>
48
@@ -4952,12 +4957,12 @@
49
         <translation type="obsolete">DVD</translation>
50
     </message>
51
     <message>
52
-        <location line="-137"/>
53
+        <location line="-131"/>
54
         <source>Frame type:</source>
55
         <translation type="unfinished">Typ klatki:</translation>
56
     </message>
57
     <message>
58
-        <location line="-1284"/>
59
+        <location line="-1263"/>
60
         <source>&amp;Help</source>
61
         <translation type="unfinished"></translation>
62
     </message>
63
@@ -5017,17 +5022,12 @@
64
         <translation type="unfinished"></translation>
65
     </message>
66
     <message>
67
-        <location line="+41"/>
68
+        <location line="+44"/>
69
         <source>Codec O&amp;ptions</source>
70
         <translation type="unfinished"></translation>
71
     </message>
72
     <message>
73
-        <location line="+33"/>
74
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
75
-        <translation type="unfinished"></translation>
76
-    </message>
77
-    <message>
78
-        <location line="+75"/>
79
+        <location line="+108"/>
80
         <location line="+7"/>
81
         <source>XXXX</source>
82
         <translation type="unfinished"></translation>
83
@@ -5059,12 +5059,12 @@
84
     </message>
85
     <message>
86
         <location line="+114"/>
87
-        <location line="+978"/>
88
+        <location line="+932"/>
89
         <source>&amp;Navigation</source>
90
         <translation type="unfinished"></translation>
91
     </message>
92
     <message>
93
-        <location line="-903"/>
94
+        <location line="-857"/>
95
         <source>Play [SPACE]</source>
96
         <translation type="unfinished"></translation>
97
     </message>
98
@@ -5081,24 +5081,18 @@
99
         <location line="+23"/>
100
         <location line="+23"/>
101
         <location line="+23"/>
102
-        <location line="+23"/>
103
         <location line="+26"/>
104
         <location line="+23"/>
105
         <location line="+23"/>
106
         <location line="+23"/>
107
         <location line="+23"/>
108
         <location line="+26"/>
109
-        <location line="+352"/>
110
+        <location line="+345"/>
111
         <source>...</source>
112
         <translation type="unfinished"></translation>
113
     </message>
114
     <message>
115
-        <location line="-637"/>
116
-        <source>Stop [SPACE]</source>
117
-        <translation type="unfinished"></translation>
118
-    </message>
119
-    <message>
120
-        <location line="+23"/>
121
+        <location line="-607"/>
122
         <source>Go to previous frame [LEFT]</source>
123
         <translation type="unfinished"></translation>
124
     </message>
125
@@ -5168,7 +5162,7 @@
126
         <translation type="unfinished"></translation>
127
     </message>
128
     <message>
129
-        <location line="+41"/>
130
+        <location line="+40"/>
131
         <source>/ 00:00:00.000</source>
132
         <translation type="unfinished"></translation>
133
     </message>
134
@@ -5178,7 +5172,7 @@
135
         <translation type="unfinished"></translation>
136
     </message>
137
     <message>
138
-        <location line="+44"/>
139
+        <location line="+38"/>
140
         <source>Se&amp;lection</source>
141
         <translation type="unfinished"></translation>
142
     </message>
143
@@ -5208,7 +5202,7 @@
144
         <translation type="unfinished"></translation>
145
     </message>
146
     <message>
147
-        <location line="+100"/>
148
+        <location line="+84"/>
149
         <source>Audio &amp;Metre</source>
150
         <translation type="unfinished"></translation>
151
     </message>
152
@@ -5985,17 +5979,16 @@
153
 <context>
154
     <name>adm</name>
155
     <message>
156
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
157
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
158
         <source>Decode video using DXVA2 (windows)</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+10"/>
163
         <source>_Use systray while encoding</source>
164
-        <translation type="unfinished">Użyj tacki systemowej podczas kodowania</translation>
165
+        <translation type="obsolete">Użyj tacki systemowej podczas kodowania</translation>
166
     </message>
167
     <message>
168
-        <location line="+1"/>
169
+        <location line="+10"/>
170
         <source>_Accept non-standard audio frequency for DVD</source>
171
         <translation type="unfinished">_Akceptuj niestandardową częstotliwość dźwięku dla DVD</translation>
172
     </message>
173
@@ -6010,6 +6003,16 @@
174
         <translation type="unfinished"></translation>
175
     </message>
176
     <message>
177
+        <location line="+1"/>
178
+        <source>_Enable alternative keyboard shortcuts</source>
179
+        <translation type="unfinished"></translation>
180
+    </message>
181
+    <message>
182
+        <location line="+1"/>
183
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
184
+        <translation type="unfinished"></translation>
185
+    </message>
186
+    <message>
187
         <location line="+4"/>
188
         <source>SIMD</source>
189
         <translation type="unfinished">SIMD</translation>
190
@@ -6122,12 +6125,22 @@
191
         <translation type="unfinished">_Użyj alternatywnej etykiety dla pliku MP3 w .mp4</translation>
192
     </message>
193
     <message>
194
+        <location line="+2"/>
195
+        <source>_Default to the directory of the last read file for saving</source>
196
+        <translation type="unfinished"></translation>
197
+    </message>
198
+    <message>
199
         <location line="+5"/>
200
         <source>XVideo (best)</source>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_pt_BR.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_pt_BR.ts Changed
201
 
1
@@ -33,7 +33,7 @@
2
 <context>
3
     <name>ADM_Composer</name>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+186"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+193"/>
7
         <source>Cannot find a demuxer for %s</source>
8
         <translation type="unfinished"></translation>
9
     </message>
10
@@ -494,7 +494,7 @@
11
         <translation type="unfinished"></translation>
12
     </message>
13
     <message>
14
-        <location line="+102"/>
15
+        <location line="+105"/>
16
         <source>&amp;Help</source>
17
         <translation type="unfinished"></translation>
18
     </message>
19
@@ -554,13 +554,13 @@
20
         <translation type="unfinished"></translation>
21
     </message>
22
     <message>
23
-        <location line="+41"/>
24
+        <location line="+44"/>
25
         <source>Codec O&amp;ptions</source>
26
         <translation type="unfinished"></translation>
27
     </message>
28
     <message>
29
         <location line="+33"/>
30
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
31
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
32
         <translation type="unfinished"></translation>
33
     </message>
34
     <message>
35
@@ -621,12 +621,12 @@
36
     </message>
37
     <message>
38
         <location line="+114"/>
39
-        <location line="+978"/>
40
+        <location line="+932"/>
41
         <source>&amp;Navigation</source>
42
         <translation type="unfinished"></translation>
43
     </message>
44
     <message>
45
-        <location line="-903"/>
46
+        <location line="-857"/>
47
         <source>Play [SPACE]</source>
48
         <translation type="unfinished"></translation>
49
     </message>
50
@@ -643,24 +643,18 @@
51
         <location line="+23"/>
52
         <location line="+23"/>
53
         <location line="+23"/>
54
-        <location line="+23"/>
55
         <location line="+26"/>
56
         <location line="+23"/>
57
         <location line="+23"/>
58
         <location line="+23"/>
59
         <location line="+23"/>
60
         <location line="+26"/>
61
-        <location line="+352"/>
62
+        <location line="+345"/>
63
         <source>...</source>
64
         <translation type="unfinished"></translation>
65
     </message>
66
     <message>
67
-        <location line="-637"/>
68
-        <source>Stop [SPACE]</source>
69
-        <translation type="unfinished"></translation>
70
-    </message>
71
-    <message>
72
-        <location line="+23"/>
73
+        <location line="-607"/>
74
         <source>Go to previous frame [LEFT]</source>
75
         <translation type="unfinished"></translation>
76
     </message>
77
@@ -730,7 +724,7 @@
78
         <translation type="unfinished"></translation>
79
     </message>
80
     <message>
81
-        <location line="+19"/>
82
+        <location line="+18"/>
83
         <source>00:00:00.000</source>
84
         <translation type="unfinished"></translation>
85
     </message>
86
@@ -750,7 +744,7 @@
87
         <translation type="unfinished"></translation>
88
     </message>
89
     <message>
90
-        <location line="+44"/>
91
+        <location line="+38"/>
92
         <source>Se&amp;lection</source>
93
         <translation type="unfinished"></translation>
94
     </message>
95
@@ -796,7 +790,7 @@
96
         <translation type="unfinished"></translation>
97
     </message>
98
     <message>
99
-        <location line="+100"/>
100
+        <location line="+84"/>
101
         <source>Audio &amp;Metre</source>
102
         <translation type="unfinished"></translation>
103
     </message>
104
@@ -1079,7 +1073,7 @@
105
 <context>
106
     <name>adm</name>
107
     <message>
108
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+430"/>
109
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+443"/>
110
         <source>Output</source>
111
         <translation type="unfinished">Saida</translation>
112
     </message>
113
@@ -1330,7 +1324,7 @@
114
         <location filename="../../common/gui_save.cpp" line="+281"/>
115
         <location line="+21"/>
116
         <location line="+7"/>
117
-        <location filename="../../common/gui_savenew.cpp" line="+383"/>
118
+        <location filename="../../common/gui_savenew.cpp" line="+403"/>
119
         <source>Audio</source>
120
         <translation type="unfinished"></translation>
121
     </message>
122
@@ -1427,7 +1421,7 @@
123
         <translation type="unfinished"></translation>
124
     </message>
125
     <message>
126
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="-165"/>
127
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="-171"/>
128
         <source>Decode video using DXVA2 (windows)</source>
129
         <translation type="unfinished"></translation>
130
     </message>
131
@@ -1458,22 +1452,27 @@
132
     </message>
133
     <message>
134
         <location line="+3"/>
135
-        <source>_Use systray while encoding</source>
136
+        <source>_Accept non-standard audio frequency for DVD</source>
137
         <translation type="unfinished"></translation>
138
     </message>
139
     <message>
140
         <location line="+1"/>
141
-        <source>_Accept non-standard audio frequency for DVD</source>
142
+        <source>Create _OpenDML files</source>
143
         <translation type="unfinished"></translation>
144
     </message>
145
     <message>
146
         <location line="+1"/>
147
-        <source>Create _OpenDML files</source>
148
+        <source>_Revert to saved default output settings on video load</source>
149
         <translation type="unfinished"></translation>
150
     </message>
151
     <message>
152
         <location line="+1"/>
153
-        <source>_Revert to saved default output settings on video load</source>
154
+        <source>_Enable alternative keyboard shortcuts</source>
155
+        <translation type="unfinished"></translation>
156
+    </message>
157
+    <message>
158
+        <location line="+1"/>
159
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
160
         <translation type="unfinished"></translation>
161
     </message>
162
     <message>
163
@@ -1599,6 +1598,11 @@
164
         <translation type="unfinished"></translation>
165
     </message>
166
     <message>
167
+        <location line="+2"/>
168
+        <source>_Default to the directory of the last read file for saving</source>
169
+        <translation type="unfinished"></translation>
170
+    </message>
171
+    <message>
172
         <location line="+5"/>
173
         <source>XVideo (best)</source>
174
         <translation type="unfinished"></translation>
175
@@ -1609,6 +1613,11 @@
176
         <translation type="unfinished"></translation>
177
     </message>
178
     <message>
179
+        <location line="+3"/>
180
+        <source>DXVA2 (best)</source>
181
+        <translation type="unfinished"></translation>
182
+    </message>
183
+    <message>
184
         <location line="+7"/>
185
         <source>OpenGL (best)</source>
186
         <translation type="unfinished"></translation>
187
@@ -1880,6 +1889,11 @@
188
         <translation type="unfinished"></translation>
189
     </message>
190
     <message>
191
+        <location line="+1"/>
192
+        <source>Reset Markers</source>
193
+        <translation type="unfinished"></translation>
194
+    </message>
195
+    <message>
196
         <location line="+2"/>
197
         <source>Pr&amp;eferences</source>
198
         <translation type="unfinished"></translation>
199
@@ -2013,11 +2027,11 @@
200
     <message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_ru.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_ru.ts Changed
201
 
1
@@ -1056,7 +1056,7 @@
2
     </message>
3
     <message>
4
         <source>_Accept non-standard audio frequency for DVD</source>
5
-        <translation type="obsolete">Позволять нестрандартную частоту звука для DVD</translation>
6
+        <translation type="obsolete">Позволять нестандартную частоту звука для DVD</translation>
7
     </message>
8
     <message>
9
         <source>Create _OpenDML files</source>
10
@@ -1208,7 +1208,7 @@
11
     </message>
12
     <message>
13
         <source>Default Postprocessing</source>
14
-        <translation type="obsolete">Постпроцессинг по-умолчанию</translation>
15
+        <translation type="obsolete">Постпроцессинг по умолчанию</translation>
16
     </message>
17
     <message>
18
         <source>Use _Global GlyphSet</source>
19
@@ -2293,7 +2293,7 @@
20
         <translation type="obsolete">Файл идентифицирован, но не поддерживается.</translation>
21
     </message>
22
     <message>
23
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
24
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
25
         <source>Attempt to open %s failed!</source>
26
         <translation type="unfinished">Ошибка при открытии %s!</translation>
27
     </message>
28
@@ -3339,7 +3339,7 @@
29
         <translation type="obsolete">&lt;b&gt;Видео&lt;/b&gt;</translation>
30
     </message>
31
     <message>
32
-        <location filename="../ADM_userInterfaces/ADM_gui/gui2.ui" line="+477"/>
33
+        <location filename="../ADM_userInterfaces/ADM_gui/gui2.ui" line="+483"/>
34
         <location line="+169"/>
35
         <source>Copy</source>
36
         <translation type="unfinished">Копировать</translation>
37
@@ -3381,7 +3381,7 @@
38
             </translation>
39
     </message>
40
     <message>
41
-        <location line="+625"/>
42
+        <location line="+602"/>
43
         <source>Time:</source>
44
         <translation type="unfinished">Время:</translation>
45
     </message>
46
@@ -3394,7 +3394,7 @@
47
         <translation type="obsolete">Выделено</translation>
48
     </message>
49
     <message>
50
-        <location line="-1214"/>
51
+        <location line="-1194"/>
52
         <source>&amp;Help</source>
53
         <translation type="unfinished">Сп&amp;равка</translation>
54
     </message>
55
@@ -3455,7 +3455,7 @@
56
         <translation type="obsolete">&amp;Авто</translation>
57
     </message>
58
     <message>
59
-        <location line="+1583"/>
60
+        <location line="+1540"/>
61
         <source>&amp;Open...</source>
62
         <translation type="unfinished">&amp;Открыть...</translation>
63
     </message>
64
@@ -3807,12 +3807,17 @@
65
         <translation type="unfinished">&amp;Сверху</translation>
66
     </message>
67
     <message>
68
-        <location line="-533"/>
69
+        <location line="-1636"/>
70
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
71
+        <translation>&lt;b&gt;Декодер видео&lt;/b&gt;</translation>
72
+    </message>
73
+    <message>
74
+        <location line="+1125"/>
75
         <source>Frame type:</source>
76
         <translation type="unfinished">Тип кадра:</translation>
77
     </message>
78
     <message>
79
-        <location line="+521"/>
80
+        <location line="+499"/>
81
         <source>&amp;Separate</source>
82
         <translation type="unfinished">&amp;Отделить</translation>
83
     </message>
84
@@ -3821,12 +3826,12 @@
85
         <translation type="obsolete">&amp;Закрыть</translation>
86
     </message>
87
     <message>
88
-        <location line="-1907"/>
89
+        <location line="-1867"/>
90
         <source>Avidemux</source>
91
         <translation type="unfinished"></translation>
92
     </message>
93
     <message>
94
-        <location line="+121"/>
95
+        <location line="+124"/>
96
         <source>&amp;Toolbars</source>
97
         <translation type="unfinished">&amp;Панели</translation>
98
     </message>
99
@@ -3841,17 +3846,16 @@
100
         <translation type="unfinished">&amp;Недавно</translation>
101
     </message>
102
     <message>
103
-        <location line="+41"/>
104
+        <location line="+44"/>
105
         <source>Codec O&amp;ptions</source>
106
         <translation type="unfinished">На&amp;стройки кодека</translation>
107
     </message>
108
     <message>
109
-        <location line="+33"/>
110
         <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
111
-        <translation type="unfinished">&lt;b&gt;Декодер видео&lt;b&gt;</translation>
112
+        <translation type="obsolete">&lt;b&gt;Декодер видео&lt;b&gt;</translation>
113
     </message>
114
     <message>
115
-        <location line="+75"/>
116
+        <location line="+108"/>
117
         <location line="+7"/>
118
         <source>XXXX</source>
119
         <translation type="unfinished"></translation>
120
@@ -3883,12 +3887,12 @@
121
     </message>
122
     <message>
123
         <location line="+114"/>
124
-        <location line="+978"/>
125
+        <location line="+932"/>
126
         <source>&amp;Navigation</source>
127
         <translation type="unfinished">&amp;Навигация</translation>
128
     </message>
129
     <message>
130
-        <location line="-903"/>
131
+        <location line="-857"/>
132
         <source>Play [SPACE]</source>
133
         <translation type="unfinished">Воспроизвести [SPACE]</translation>
134
     </message>
135
@@ -3905,24 +3909,18 @@
136
         <location line="+23"/>
137
         <location line="+23"/>
138
         <location line="+23"/>
139
-        <location line="+23"/>
140
         <location line="+26"/>
141
         <location line="+23"/>
142
         <location line="+23"/>
143
         <location line="+23"/>
144
         <location line="+23"/>
145
         <location line="+26"/>
146
-        <location line="+352"/>
147
+        <location line="+345"/>
148
         <source>...</source>
149
         <translation type="unfinished"></translation>
150
     </message>
151
     <message>
152
-        <location line="-637"/>
153
-        <source>Stop [SPACE]</source>
154
-        <translation type="unfinished">Остановить [SPACE]</translation>
155
-    </message>
156
-    <message>
157
-        <location line="+23"/>
158
+        <location line="-607"/>
159
         <source>Go to previous frame [LEFT]</source>
160
         <translation type="unfinished">Предыдущий кадр [LEFT]</translation>
161
     </message>
162
@@ -3944,12 +3942,12 @@
163
     <message>
164
         <location line="+23"/>
165
         <source>Set start marker [CTRL+PAGEUP]</source>
166
-        <translation type="unfinished">Установить маркер A [CTRL+PAGEUP]</translation>
167
+        <translation type="unfinished">Поставить маркер A [CTRL+PAGEUP]</translation>
168
     </message>
169
     <message>
170
         <location line="+23"/>
171
         <source>Set end marker [CTRL+PAGEDOWN]</source>
172
-        <translation type="unfinished">Установить маркер B [CTRL+PAGEDOWN]</translation>
173
+        <translation type="unfinished">Поставить маркер B [CTRL+PAGEDOWN]</translation>
174
     </message>
175
     <message>
176
         <location line="+26"/>
177
@@ -3987,7 +3985,7 @@
178
         <translation type="unfinished">Вперед на 1 минуту</translation>
179
     </message>
180
     <message>
181
-        <location line="+77"/>
182
+        <location line="+76"/>
183
         <source>00:00:00.000</source>
184
         <translation type="unfinished"></translation>
185
     </message>
186
@@ -4002,9 +4000,9 @@
187
         <translation type="unfinished"></translation>
188
     </message>
189
     <message>
190
-        <location line="+44"/>
191
+        <location line="+38"/>
192
         <source>Se&amp;lection</source>
193
-        <translation type="unfinished">&amp;lВыбор</translation>
194
+        <translation type="unfinished">&amp;Выбор</translation>
195
     </message>
196
     <message>
197
         <location line="+73"/>
198
@@ -4048,7 +4046,7 @@
199
         <translation type="unfinished">&amp;Громкость</translation>
200
     </message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_sr.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_sr.ts Changed
201
 
1
@@ -2304,7 +2304,7 @@
2
         <translation type="obsolete">Можда се односи на неку стару датотеку са индексом.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Покушај да отворим %s није успео!</translation>
9
     </message>
10
@@ -3327,7 +3327,7 @@
11
         <translation type="obsolete">&lt;b&gt;Видео&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Без измене</translation>
19
@@ -3341,7 +3341,12 @@
20
         <translation type="unfinished">Поставке</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Филтери</translation>
33
@@ -3363,7 +3368,7 @@
34
         <translation type="obsolete">/ 0</translation>
35
     </message>
36
     <message>
37
-        <location line="+671"/>
38
+        <location line="+647"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
@@ -3373,7 +3378,7 @@
43
         <translation type="unfinished">/ 00:00:00.000</translation>
44
     </message>
45
     <message>
46
-        <location line="+176"/>
47
+        <location line="+170"/>
48
         <location line="+10"/>
49
         <source>000000</source>
50
         <translation type="unfinished">000000</translation>
51
@@ -3405,12 +3410,12 @@
52
         <translation type="obsolete">Подржани су</translation>
53
     </message>
54
     <message>
55
-        <location line="-137"/>
56
+        <location line="-131"/>
57
         <source>Frame type:</source>
58
         <translation type="unfinished">Тип кадра:</translation>
59
     </message>
60
     <message>
61
-        <location line="-1284"/>
62
+        <location line="-1263"/>
63
         <source>&amp;Help</source>
64
         <translation type="unfinished"></translation>
65
     </message>
66
@@ -3470,17 +3475,12 @@
67
         <translation type="unfinished"></translation>
68
     </message>
69
     <message>
70
-        <location line="+41"/>
71
+        <location line="+44"/>
72
         <source>Codec O&amp;ptions</source>
73
         <translation type="unfinished"></translation>
74
     </message>
75
     <message>
76
-        <location line="+33"/>
77
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
78
-        <translation type="unfinished"></translation>
79
-    </message>
80
-    <message>
81
-        <location line="+75"/>
82
+        <location line="+108"/>
83
         <location line="+7"/>
84
         <source>XXXX</source>
85
         <translation type="unfinished"></translation>
86
@@ -3517,12 +3517,12 @@
87
     </message>
88
     <message>
89
         <location line="+114"/>
90
-        <location line="+978"/>
91
+        <location line="+932"/>
92
         <source>&amp;Navigation</source>
93
         <translation type="unfinished"></translation>
94
     </message>
95
     <message>
96
-        <location line="-903"/>
97
+        <location line="-857"/>
98
         <source>Play [SPACE]</source>
99
         <translation type="unfinished"></translation>
100
     </message>
101
@@ -3539,24 +3539,18 @@
102
         <location line="+23"/>
103
         <location line="+23"/>
104
         <location line="+23"/>
105
-        <location line="+23"/>
106
         <location line="+26"/>
107
         <location line="+23"/>
108
         <location line="+23"/>
109
         <location line="+23"/>
110
         <location line="+23"/>
111
         <location line="+26"/>
112
-        <location line="+352"/>
113
+        <location line="+345"/>
114
         <source>...</source>
115
         <translation type="unfinished"></translation>
116
     </message>
117
     <message>
118
-        <location line="-637"/>
119
-        <source>Stop [SPACE]</source>
120
-        <translation type="unfinished"></translation>
121
-    </message>
122
-    <message>
123
-        <location line="+23"/>
124
+        <location line="-607"/>
125
         <source>Go to previous frame [LEFT]</source>
126
         <translation type="unfinished"></translation>
127
     </message>
128
@@ -3626,12 +3620,12 @@
129
         <translation type="unfinished"></translation>
130
     </message>
131
     <message>
132
-        <location line="+83"/>
133
+        <location line="+82"/>
134
         <source>?</source>
135
         <translation type="unfinished"></translation>
136
     </message>
137
     <message>
138
-        <location line="+44"/>
139
+        <location line="+38"/>
140
         <source>Se&amp;lection</source>
141
         <translation type="unfinished"></translation>
142
     </message>
143
@@ -3661,7 +3655,7 @@
144
         <translation type="unfinished"></translation>
145
     </message>
146
     <message>
147
-        <location line="+100"/>
148
+        <location line="+84"/>
149
         <source>Audio &amp;Metre</source>
150
         <translation type="unfinished"></translation>
151
     </message>
152
@@ -4347,17 +4341,16 @@
153
 <context>
154
     <name>adm</name>
155
     <message>
156
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
157
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
158
         <source>Decode video using DXVA2 (windows)</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+10"/>
163
         <source>_Use systray while encoding</source>
164
-        <translation type="unfinished">Смести у о_бавештајну зону панела приликом кодирања</translation>
165
+        <translation type="obsolete">Смести у о_бавештајну зону панела приликом кодирања</translation>
166
     </message>
167
     <message>
168
-        <location line="+1"/>
169
+        <location line="+10"/>
170
         <source>_Accept non-standard audio frequency for DVD</source>
171
         <translation type="unfinished">_Дозволи нестандардне учестаности звука за ДВД</translation>
172
     </message>
173
@@ -4372,6 +4365,16 @@
174
         <translation type="unfinished"></translation>
175
     </message>
176
     <message>
177
+        <location line="+1"/>
178
+        <source>_Enable alternative keyboard shortcuts</source>
179
+        <translation type="unfinished"></translation>
180
+    </message>
181
+    <message>
182
+        <location line="+1"/>
183
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
184
+        <translation type="unfinished"></translation>
185
+    </message>
186
+    <message>
187
         <location line="+4"/>
188
         <source>SIMD</source>
189
         <translation type="unfinished">SIMD</translation>
190
@@ -4484,12 +4487,22 @@
191
         <translation type="unfinished">Користи _алтернативни таг за MP3 у .mp4</translation>
192
     </message>
193
     <message>
194
+        <location line="+2"/>
195
+        <source>_Default to the directory of the last read file for saving</source>
196
+        <translation type="unfinished"></translation>
197
+    </message>
198
+    <message>
199
         <location line="+5"/>
200
         <source>XVideo (best)</source>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_sr@latin.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_sr@latin.ts Changed
201
 
1
@@ -2304,7 +2304,7 @@
2
         <translation type="obsolete">Možda se odnosi na neku staru datoteku sa indeksom.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">Pokušaj da otvorim %s nije uspeo!</translation>
9
     </message>
10
@@ -3327,7 +3327,7 @@
11
         <translation type="obsolete">&lt;b&gt;Video&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Bez izmene</translation>
19
@@ -3341,7 +3341,12 @@
20
         <translation type="unfinished">Postavke</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Filteri</translation>
33
@@ -3363,7 +3368,7 @@
34
         <translation type="obsolete">/ 0</translation>
35
     </message>
36
     <message>
37
-        <location line="+671"/>
38
+        <location line="+647"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
@@ -3373,7 +3378,7 @@
43
         <translation type="unfinished">/ 00:00:00.000</translation>
44
     </message>
45
     <message>
46
-        <location line="+176"/>
47
+        <location line="+170"/>
48
         <location line="+10"/>
49
         <source>000000</source>
50
         <translation type="unfinished">000000</translation>
51
@@ -3405,12 +3410,12 @@
52
         <translation type="obsolete">Podržani su</translation>
53
     </message>
54
     <message>
55
-        <location line="-137"/>
56
+        <location line="-131"/>
57
         <source>Frame type:</source>
58
         <translation type="unfinished">Tip kadra:</translation>
59
     </message>
60
     <message>
61
-        <location line="-1284"/>
62
+        <location line="-1263"/>
63
         <source>&amp;Help</source>
64
         <translation type="unfinished"></translation>
65
     </message>
66
@@ -3470,17 +3475,12 @@
67
         <translation type="unfinished"></translation>
68
     </message>
69
     <message>
70
-        <location line="+41"/>
71
+        <location line="+44"/>
72
         <source>Codec O&amp;ptions</source>
73
         <translation type="unfinished"></translation>
74
     </message>
75
     <message>
76
-        <location line="+33"/>
77
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
78
-        <translation type="unfinished"></translation>
79
-    </message>
80
-    <message>
81
-        <location line="+75"/>
82
+        <location line="+108"/>
83
         <location line="+7"/>
84
         <source>XXXX</source>
85
         <translation type="unfinished"></translation>
86
@@ -3517,12 +3517,12 @@
87
     </message>
88
     <message>
89
         <location line="+114"/>
90
-        <location line="+978"/>
91
+        <location line="+932"/>
92
         <source>&amp;Navigation</source>
93
         <translation type="unfinished"></translation>
94
     </message>
95
     <message>
96
-        <location line="-903"/>
97
+        <location line="-857"/>
98
         <source>Play [SPACE]</source>
99
         <translation type="unfinished"></translation>
100
     </message>
101
@@ -3539,24 +3539,18 @@
102
         <location line="+23"/>
103
         <location line="+23"/>
104
         <location line="+23"/>
105
-        <location line="+23"/>
106
         <location line="+26"/>
107
         <location line="+23"/>
108
         <location line="+23"/>
109
         <location line="+23"/>
110
         <location line="+23"/>
111
         <location line="+26"/>
112
-        <location line="+352"/>
113
+        <location line="+345"/>
114
         <source>...</source>
115
         <translation type="unfinished"></translation>
116
     </message>
117
     <message>
118
-        <location line="-637"/>
119
-        <source>Stop [SPACE]</source>
120
-        <translation type="unfinished"></translation>
121
-    </message>
122
-    <message>
123
-        <location line="+23"/>
124
+        <location line="-607"/>
125
         <source>Go to previous frame [LEFT]</source>
126
         <translation type="unfinished"></translation>
127
     </message>
128
@@ -3626,12 +3620,12 @@
129
         <translation type="unfinished"></translation>
130
     </message>
131
     <message>
132
-        <location line="+83"/>
133
+        <location line="+82"/>
134
         <source>?</source>
135
         <translation type="unfinished"></translation>
136
     </message>
137
     <message>
138
-        <location line="+44"/>
139
+        <location line="+38"/>
140
         <source>Se&amp;lection</source>
141
         <translation type="unfinished"></translation>
142
     </message>
143
@@ -3661,7 +3655,7 @@
144
         <translation type="unfinished"></translation>
145
     </message>
146
     <message>
147
-        <location line="+100"/>
148
+        <location line="+84"/>
149
         <source>Audio &amp;Metre</source>
150
         <translation type="unfinished"></translation>
151
     </message>
152
@@ -4347,17 +4341,16 @@
153
 <context>
154
     <name>adm</name>
155
     <message>
156
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
157
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
158
         <source>Decode video using DXVA2 (windows)</source>
159
         <translation type="unfinished"></translation>
160
     </message>
161
     <message>
162
-        <location line="+10"/>
163
         <source>_Use systray while encoding</source>
164
-        <translation type="unfinished">Smesti u o_baveštajnu zonu panela prilikom kodiranja</translation>
165
+        <translation type="obsolete">Smesti u o_baveštajnu zonu panela prilikom kodiranja</translation>
166
     </message>
167
     <message>
168
-        <location line="+1"/>
169
+        <location line="+10"/>
170
         <source>_Accept non-standard audio frequency for DVD</source>
171
         <translation type="unfinished">_Dozvoli nestandardne učestanosti zvuka za DVD</translation>
172
     </message>
173
@@ -4372,6 +4365,16 @@
174
         <translation type="unfinished"></translation>
175
     </message>
176
     <message>
177
+        <location line="+1"/>
178
+        <source>_Enable alternative keyboard shortcuts</source>
179
+        <translation type="unfinished"></translation>
180
+    </message>
181
+    <message>
182
+        <location line="+1"/>
183
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
184
+        <translation type="unfinished"></translation>
185
+    </message>
186
+    <message>
187
         <location line="+4"/>
188
         <source>SIMD</source>
189
         <translation type="unfinished">SIMD</translation>
190
@@ -4484,12 +4487,22 @@
191
         <translation type="unfinished">Koristi _alternativni tag za MP3 u .mp4</translation>
192
     </message>
193
     <message>
194
+        <location line="+2"/>
195
+        <source>_Default to the directory of the last read file for saving</source>
196
+        <translation type="unfinished"></translation>
197
+    </message>
198
+    <message>
199
         <location line="+5"/>
200
         <source>XVideo (best)</source>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_tr.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_tr.ts Changed
201
 
1
@@ -2571,7 +2571,7 @@
2
         <translation type="obsolete">Eski bir endeks dosyasıyla ilgili olabilir.</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">%s açma teşebbüsü başarısız oldu!</translation>
9
     </message>
10
@@ -3625,7 +3625,7 @@
11
         <translation type="obsolete">&lt;b&gt;Video&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">Kopyala</translation>
19
@@ -3639,7 +3639,12 @@
20
         <translation type="unfinished">Yapılandır</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">Süzgeçler</translation>
33
@@ -3662,7 +3667,7 @@
34
              {0?}</translation>
35
     </message>
36
     <message>
37
-        <location line="+671"/>
38
+        <location line="+647"/>
39
         <source>00:00:00.000</source>
40
         <translation type="unfinished">00:00:00.000</translation>
41
     </message>
42
@@ -3673,7 +3678,7 @@
43
              {00:00:00.000?}</translation>
44
     </message>
45
     <message>
46
-        <location line="+176"/>
47
+        <location line="+170"/>
48
         <location line="+10"/>
49
         <source>000000</source>
50
         <translation type="unfinished">000000</translation>
51
@@ -3707,13 +3712,13 @@
52
             </translation>
53
     </message>
54
     <message>
55
-        <location line="-137"/>
56
+        <location line="-131"/>
57
         <source>Frame type:</source>
58
         <translation type="unfinished">
59
             </translation>
60
     </message>
61
     <message>
62
-        <location line="-1284"/>
63
+        <location line="-1263"/>
64
         <source>&amp;Help</source>
65
         <translation type="unfinished"></translation>
66
     </message>
67
@@ -3773,17 +3778,12 @@
68
         <translation type="unfinished"></translation>
69
     </message>
70
     <message>
71
-        <location line="+41"/>
72
+        <location line="+44"/>
73
         <source>Codec O&amp;ptions</source>
74
         <translation type="unfinished"></translation>
75
     </message>
76
     <message>
77
-        <location line="+33"/>
78
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
79
-        <translation type="unfinished"></translation>
80
-    </message>
81
-    <message>
82
-        <location line="+75"/>
83
+        <location line="+108"/>
84
         <location line="+7"/>
85
         <source>XXXX</source>
86
         <translation type="unfinished"></translation>
87
@@ -3820,12 +3820,12 @@
88
     </message>
89
     <message>
90
         <location line="+114"/>
91
-        <location line="+978"/>
92
+        <location line="+932"/>
93
         <source>&amp;Navigation</source>
94
         <translation type="unfinished"></translation>
95
     </message>
96
     <message>
97
-        <location line="-903"/>
98
+        <location line="-857"/>
99
         <source>Play [SPACE]</source>
100
         <translation type="unfinished"></translation>
101
     </message>
102
@@ -3842,24 +3842,18 @@
103
         <location line="+23"/>
104
         <location line="+23"/>
105
         <location line="+23"/>
106
-        <location line="+23"/>
107
         <location line="+26"/>
108
         <location line="+23"/>
109
         <location line="+23"/>
110
         <location line="+23"/>
111
         <location line="+23"/>
112
         <location line="+26"/>
113
-        <location line="+352"/>
114
+        <location line="+345"/>
115
         <source>...</source>
116
         <translation type="unfinished"></translation>
117
     </message>
118
     <message>
119
-        <location line="-637"/>
120
-        <source>Stop [SPACE]</source>
121
-        <translation type="unfinished"></translation>
122
-    </message>
123
-    <message>
124
-        <location line="+23"/>
125
+        <location line="-607"/>
126
         <source>Go to previous frame [LEFT]</source>
127
         <translation type="unfinished"></translation>
128
     </message>
129
@@ -3929,12 +3923,12 @@
130
         <translation type="unfinished"></translation>
131
     </message>
132
     <message>
133
-        <location line="+83"/>
134
+        <location line="+82"/>
135
         <source>?</source>
136
         <translation type="unfinished"></translation>
137
     </message>
138
     <message>
139
-        <location line="+44"/>
140
+        <location line="+38"/>
141
         <source>Se&amp;lection</source>
142
         <translation type="unfinished"></translation>
143
     </message>
144
@@ -3964,7 +3958,7 @@
145
         <translation type="unfinished"></translation>
146
     </message>
147
     <message>
148
-        <location line="+100"/>
149
+        <location line="+84"/>
150
         <source>Audio &amp;Metre</source>
151
         <translation type="unfinished"></translation>
152
     </message>
153
@@ -4699,18 +4693,17 @@
154
 <context>
155
     <name>adm</name>
156
     <message>
157
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
158
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
159
         <source>Decode video using DXVA2 (windows)</source>
160
         <translation type="unfinished"></translation>
161
     </message>
162
     <message>
163
-        <location line="+10"/>
164
         <source>_Use systray while encoding</source>
165
-        <translation type="unfinished">
166
+        <translation type="obsolete">
167
             </translation>
168
     </message>
169
     <message>
170
-        <location line="+1"/>
171
+        <location line="+10"/>
172
         <source>_Accept non-standard audio frequency for DVD</source>
173
         <translation type="unfinished">
174
             </translation>
175
@@ -4727,6 +4720,16 @@
176
         <translation type="unfinished"></translation>
177
     </message>
178
     <message>
179
+        <location line="+1"/>
180
+        <source>_Enable alternative keyboard shortcuts</source>
181
+        <translation type="unfinished"></translation>
182
+    </message>
183
+    <message>
184
+        <location line="+1"/>
185
+        <source>Re_verse UP and DOWN arrow keys for navigation</source>
186
+        <translation type="unfinished"></translation>
187
+    </message>
188
+    <message>
189
         <location line="+4"/>
190
         <source>SIMD</source>
191
         <translation type="unfinished">
192
@@ -4860,13 +4863,23 @@
193
             </translation>
194
     </message>
195
     <message>
196
+        <location line="+2"/>
197
+        <source>_Default to the directory of the last read file for saving</source>
198
+        <translation type="unfinished"></translation>
199
+    </message>
200
+    <message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/i18n/avidemux_zh_TW.ts -> avidemux_2.6.19.tar.gz/avidemux/qt4/i18n/avidemux_zh_TW.ts Changed
201
 
1
@@ -3546,7 +3546,7 @@
2
         <translation type="obsolete">可能被關聯至一個舊的索引檔。</translation>
3
     </message>
4
     <message>
5
-        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+222"/>
6
+        <location filename="../../common/ADM_editor/src/ADM_edit.cpp" line="+229"/>
7
         <source>Attempt to open %s failed!</source>
8
         <translation type="unfinished">嘗試開啟 %s 失敗!</translation>
9
     </message>
10
@@ -5054,7 +5054,7 @@
11
         <translation type="obsolete">&lt;b&gt;視訊&lt;/b&gt;</translation>
12
     </message>
13
     <message>
14
-        <location line="+462"/>
15
+        <location line="+468"/>
16
         <location line="+169"/>
17
         <source>Copy</source>
18
         <translation type="unfinished">複製</translation>
19
@@ -5068,7 +5068,12 @@
20
         <translation type="unfinished">設定</translation>
21
     </message>
22
     <message>
23
-        <location line="-334"/>
24
+        <location line="-592"/>
25
+        <source>&lt;b&gt;Video Decoder&lt;/b&gt;</source>
26
+        <translation type="unfinished"></translation>
27
+    </message>
28
+    <message>
29
+        <location line="+258"/>
30
         <location line="+169"/>
31
         <source>Filters</source>
32
         <translation type="unfinished">濾鏡</translation>
33
@@ -5099,14 +5104,13 @@
34
         <location line="+23"/>
35
         <location line="+23"/>
36
         <location line="+23"/>
37
-        <location line="+23"/>
38
         <location line="+26"/>
39
         <location line="+23"/>
40
         <location line="+23"/>
41
         <location line="+23"/>
42
         <location line="+23"/>
43
         <location line="+26"/>
44
-        <location line="+352"/>
45
+        <location line="+345"/>
46
         <source>...</source>
47
         <translation type="unfinished">...</translation>
48
     </message>
49
@@ -5123,12 +5127,12 @@
50
         <translation type="obsolete">/ 0</translation>
51
     </message>
52
     <message>
53
-        <location line="-297"/>
54
+        <location line="-290"/>
55
         <source>Time:</source>
56
         <translation type="unfinished">時間:</translation>
57
     </message>
58
     <message>
59
-        <location line="+19"/>
60
+        <location line="+18"/>
61
         <source>00:00:00.000</source>
62
         <translation type="unfinished">00:00:00.000</translation>
63
     </message>
64
@@ -5151,7 +5155,7 @@
65
         <translation type="obsolete">選取</translation>
66
     </message>
67
     <message>
68
-        <location line="+117"/>
69
+        <location line="+111"/>
70
         <source>A:</source>
71
         <translation type="unfinished">A:</translation>
72
     </message>
73
@@ -5167,7 +5171,7 @@
74
         <translation type="unfinished">B:</translation>
75
     </message>
76
     <message>
77
-        <location line="-1421"/>
78
+        <location line="-1394"/>
79
         <source>&amp;Help</source>
80
         <translation type="unfinished">說明(&amp;H)</translation>
81
     </message>
82
@@ -5228,7 +5232,7 @@
83
         <translation type="obsolete">儲存(&amp;S)</translation>
84
     </message>
85
     <message>
86
-        <location line="+1568"/>
87
+        <location line="+1525"/>
88
         <source>&amp;Open...</source>
89
         <translation type="unfinished">開啟(&amp;O)...</translation>
90
     </message>
91
@@ -5760,12 +5764,12 @@
92
         <translation type="obsolete">DVD</translation>
93
     </message>
94
     <message>
95
-        <location line="-521"/>
96
+        <location line="-499"/>
97
         <source>Frame type:</source>
98
         <translation type="unfinished">畫格類型:</translation>
99
     </message>
100
     <message>
101
-        <location line="-1265"/>
102
+        <location line="-1244"/>
103
         <source>&amp;Toolbars</source>
104
         <translation type="unfinished"></translation>
105
     </message>
106
@@ -5780,17 +5784,12 @@
107
         <translation type="unfinished"></translation>
108
     </message>
109
     <message>
110
-        <location line="+41"/>
111
+        <location line="+44"/>
112
         <source>Codec O&amp;ptions</source>
113
         <translation type="unfinished"></translation>
114
     </message>
115
     <message>
116
-        <location line="+33"/>
117
-        <source>&lt;b&gt;Video Decoder&lt;b&gt;</source>
118
-        <translation type="unfinished"></translation>
119
-    </message>
120
-    <message>
121
-        <location line="+75"/>
122
+        <location line="+108"/>
123
         <location line="+7"/>
124
         <source>XXXX</source>
125
         <translation type="unfinished"></translation>
126
@@ -5817,12 +5816,12 @@
127
     </message>
128
     <message>
129
         <location line="+114"/>
130
-        <location line="+978"/>
131
+        <location line="+932"/>
132
         <source>&amp;Navigation</source>
133
         <translation type="unfinished"></translation>
134
     </message>
135
     <message>
136
-        <location line="-903"/>
137
+        <location line="-857"/>
138
         <source>Play [SPACE]</source>
139
         <translation type="unfinished"></translation>
140
     </message>
141
@@ -5833,11 +5832,6 @@
142
     </message>
143
     <message>
144
         <location line="+26"/>
145
-        <source>Stop [SPACE]</source>
146
-        <translation type="unfinished"></translation>
147
-    </message>
148
-    <message>
149
-        <location line="+23"/>
150
         <source>Go to previous frame [LEFT]</source>
151
         <translation type="unfinished"></translation>
152
     </message>
153
@@ -5902,7 +5896,7 @@
154
         <translation type="unfinished"></translation>
155
     </message>
156
     <message>
157
-        <location line="+185"/>
158
+        <location line="+178"/>
159
         <source>Se&amp;lection</source>
160
         <translation type="unfinished"></translation>
161
     </message>
162
@@ -5932,7 +5926,7 @@
163
         <translation type="unfinished"></translation>
164
     </message>
165
     <message>
166
-        <location line="+100"/>
167
+        <location line="+84"/>
168
         <source>Audio &amp;Metre</source>
169
         <translation type="unfinished"></translation>
170
     </message>
171
@@ -6655,17 +6649,16 @@
172
 <context>
173
     <name>adm</name>
174
     <message>
175
-        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+210"/>
176
+        <location filename="../../common/ADM_commonUI/DIA_prefs.cpp" line="+217"/>
177
         <source>Decode video using DXVA2 (windows)</source>
178
         <translation type="unfinished"></translation>
179
     </message>
180
     <message>
181
-        <location line="+10"/>
182
         <source>_Use systray while encoding</source>
183
-        <translation type="unfinished">編碼時使用工作欄(_U)</translation>
184
+        <translation type="obsolete">編碼時使用工作欄(_U)</translation>
185
     </message>
186
     <message>
187
-        <location line="+1"/>
188
+        <location line="+10"/>
189
         <source>_Accept non-standard audio frequency for DVD</source>
190
         <translation type="unfinished">同意在 DVD 使用非標準的音訊頻率(_A)</translation>
191
     </message>
192
@@ -6680,6 +6673,16 @@
193
         <translation type="unfinished"></translation>
194
     </message>
195
     <message>
196
+        <location line="+1"/>
197
+        <source>_Enable alternative keyboard shortcuts</source>
198
+        <translation type="unfinished"></translation>
199
+    </message>
200
+    <message>
201
avidemux_2.6.18.tar.gz/avidemux/qt4/qt4PackageDebian.cmake -> avidemux_2.6.19.tar.gz/avidemux/qt4/qt4PackageDebian.cmake Changed
10
 
1
@@ -5,7 +5,7 @@
2
 
3
 SET(CPACK_DEBIAN_PACKAGE_NAME        "avidemux3-${QT_EXTENSION}")
4
 SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Simple video editor,main program qt4 version ")
5
-SET(DEPS "libc6 (>=2.4),libstdc++6 (>=4.2.1),libx11-6,  libxv1, zlib1g (>=1:1.1.4), libglib2.0-0, libpng12-0, avidemux3-core-runtime (>=${AVIDEMUX_VERSION})")
6
+SET(DEPS "libc6 (>=2.4), libstdc++6 (>=4.2.1), libx11-6, zlib1g (>=1:1.1.4), libglib2.0-0, libpng12-0 | libpng16-16, avidemux3-core-runtime (>=${AVIDEMUX_VERSION})")
7
 # QT5
8
 SET(DEPS "${DEPS}, libqt5opengl5, libqt5widgets5, libqt5gui5, libqt5core5a")
9
 IF(USE_XV)
10
avidemux_2.6.19.tar.gz/avidemux2.appdata.xml Added
32
 
1
@@ -0,0 +1,30 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<!-- Copyright 2017 Adrien Vergé -->
4
+<component type="desktop-application">
5
+    <id>avidemux2.desktop</id>
6
+    <metadata_license>CC0</metadata_license>
7
+    <name>Avidemux</name>
8
+    <summary>Multi-purpose video editing and processing software</summary>
9
+    <description>
10
+        <p>
11
+            Avidemux is a free open-source program designed for multi-purpose
12
+            video editing and processing, which can be used on almost all known
13
+            operating systems and computer platforms.
14
+        </p>
15
+    </description>
16
+    <categories>
17
+        <category>AudioVideo</category>
18
+        <category>AudioVideoEditing</category>
19
+        <category>Video</category>
20
+    </categories>
21
+    <url type="homepage">https://www.avidemux.org/</url>
22
+    <provides>
23
+        <binary>avidemux2_gtk</binary>
24
+    </provides>
25
+    <project_license>GPL-2.0+</project_license>
26
+    <update_contact>Avidemux team -- avidemux.org/smif/</update_contact>
27
+    <screenshots>
28
+        <screenshot type="default">http://fixounet.free.fr/avidemux/index_files/screenshot1.png</screenshot>
29
+        <screenshot type="default">http://fixounet.free.fr/avidemux/index_files/screenshot2.png</screenshot>
30
+    </screenshots>
31
+</component>
32
avidemux_2.6.18.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_mingw.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_mingw.cpp Changed
9
 
1
@@ -376,6 +376,6 @@
2
 void ADM_backTrack(const char *info, int lineno, const char *file)
3
 {  
4
     char title[2048]={0};
5
-        snprintf(title,2000,"%s at line %d, file %s",info,lineno,file);
6
+        snprintf(title,2000,"%s at line %d, file %s\n",info,lineno,file);
7
    HandleException(title,NULL, NULL);
8
 }
9
avidemux_2.6.18.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_unix.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_core/src/ADM_crashdump_unix.cpp Changed
10
 
1
@@ -200,7 +200,7 @@
2
 
3
    count = backtrace(stack, MAX_BACKTRACK);
4
    functions = backtrace_symbols(stack, count);
5
-   sprintf(wholeStuff,"%s\n at line %d, file %s",info,lineno,file);
6
+   sprintf(wholeStuff,"%s\n at line %d, file %s\n",info,lineno,file);
7
         int status;
8
         size_t size=2047;
9
     // it looks like that xxxx (functionName+0x***) XXXX
10
avidemux_2.6.18.tar.gz/avidemux_core/ADM_core/src/ADM_debug.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_core/src/ADM_debug.cpp Changed
10
 
1
@@ -48,7 +48,7 @@
2
 #if _WIN32
3
       printf("[%s] %02d:%02d:%02d-%03d %s", func, (int)hh,(int)mn,(int)seconds,(int)mseconds,p);
4
 #else
5
-    printf("%s [%s] %02d:%02d:%02d-%03d  %s %s",color,func,(int)hh,(int)mn,(int)seconds,(int)mseconds,p,ADM_DEFAULT_COLOR);
6
+    printf("%s [%s] %02d:%02d:%02d-%03d  %s%s",color,func,(int)hh,(int)mn,(int)seconds,(int)mseconds,p,ADM_DEFAULT_COLOR);
7
 #endif
8
 }
9
 
10
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudio/src/ADM_audioIdentify.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudio/src/ADM_audioIdentify.cpp Changed
59
 
1
@@ -18,6 +18,7 @@
2
 #include "ADM_audiodef.h"
3
 #include "ADM_mp3info.h"
4
 #include "ADM_a52info.h"
5
+#include "ADM_eac3info.h"
6
 #include "ADM_audioCodecEnum.h"
7
 #include "ADM_audioIdentify.h"
8
 #include "fourcc.h"
9
@@ -176,6 +177,41 @@
10
        return false;
11
 }
12
 /**
13
+ * \fn idEAC3
14
+ */
15
+static bool idEAC3(int bufferSize,const uint8_t *data,WAVHeader &oinfo,uint32_t &offset)
16
+{
17
+    uint32_t syncOffset;
18
+    ADM_EAC3_INFO info,info2;
19
+
20
+   if( !ADM_EAC3GetInfo(data,bufferSize, &syncOffset,&info))
21
+    {
22
+            ADM_info("Not EAC3\n");
23
+            return false;
24
+    };
25
+    // Need a 2nd packet...
26
+    const uint8_t *second=data+syncOffset;
27
+    int size2=bufferSize-syncOffset;
28
+    ADM_assert(size2>0);
29
+    ADM_info("Maybe EAC3... \n");
30
+    // Try on 2nd packet...
31
+    if( ADM_EAC3GetInfo(second,size2, &syncOffset,&info2))
32
+    {
33
+        if((info.frequency==info2.frequency) && (info.channels==info2.channels) && (info.byterate==info2.byterate))
34
+        {
35
+            ADM_warning("\tProbably EAC3 : Fq=%d br=%d chan=%d\n",(int)info.frequency,(int)info.byterate,(int)info.channels);
36
+            oinfo.encoding=WAV_EAC3;
37
+            oinfo.channels=info.channels;
38
+            oinfo.byterate=info.byterate; // already in bytes/sec
39
+            oinfo.frequency=info.frequency;
40
+            return true;
41
+        }
42
+    }
43
+    ADM_info("Cannot confirm EAC3\n");
44
+    return false; 
45
+}
46
+
47
+/**
48
     \fn idAC3
49
     \brief return true if the tracks is mp2
50
 */
51
@@ -270,6 +306,7 @@
52
     memset(&info,0,sizeof(info));
53
     if(idWAV(bufferSize,buffer,info,offset)) return true;
54
     if(idMP2(bufferSize,buffer,info,offset)) return true;
55
+    if(idEAC3(bufferSize,buffer,info,offset)) return true;
56
     if(idAAACADTS(bufferSize,buffer,info,offset)) return true;
57
     if(idAC3(bufferSize,buffer,info,offset)) return true;
58
     
59
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudioDevice/include/ADM_audiodevice.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudioDevice/include/ADM_audiodevice.h Changed
19
 
1
@@ -42,6 +42,7 @@
2
                         virtual uint8_t  stop(void)=0;
3
                         virtual uint8_t  play(uint32_t len, float *data) =0;
4
                         virtual uint8_t  setVolume(int volume) {return 1;}
5
+                        virtual bool     hasVolumeControl(void) {return true;}
6
                         virtual uint32_t getLatencyMs(void) {return 0;}
7
 }   ;
8
 
9
@@ -96,7 +97,8 @@
10
          protected:
11
                     virtual     bool     localInit(void);
12
                     virtual     bool     localStop(void);
13
-                    virtual     void     sendData(void);    
14
+                    virtual     void     sendData(void);
15
+                    virtual     bool     hasVolumeControl(void) { return false; }
16
                     virtual const CHANNEL_TYPE *getWantedChannelMapping(uint32_t channels){return myChannelType;}
17
 }   ;
18
 
19
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudioDevice/include/audio_out.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudioDevice/include/audio_out.h Changed
9
 
1
@@ -34,6 +34,7 @@
2
 ADM_COREAUDIODEVICE6_EXPORT uint32_t    AVDM_GetLayencyMs(void);
3
 ADM_COREAUDIODEVICE6_EXPORT AUDIO_DEVICE   AVDM_getCurrentDevice( void);
4
 ADM_COREAUDIODEVICE6_EXPORT uint8_t         AVDM_setVolume(int volume);
5
+ADM_COREAUDIODEVICE6_EXPORT bool            AVDM_hasVolumeControl(void);
6
 // Get infos
7
 ADM_COREAUDIODEVICE6_EXPORT uint32_t    ADM_av_getNbDevices(void);
8
 ADM_COREAUDIODEVICE6_EXPORT bool        ADM_av_getDeviceInfo(int filter, std::string &name, uint32_t *major,uint32_t *minor,uint32_t *patch);
9
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudioDevice/src/ADM_audiodevice.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudioDevice/src/ADM_audiodevice.cpp Changed
21
 
1
@@ -256,6 +256,19 @@
2
 
3
 }
4
 /**
5
+    \fn AVDM_hasVolumeControl
6
+*/
7
+bool AVDM_hasVolumeControl(void)
8
+{
9
+    bool r=true;
10
+    if(!device)
11
+        return false;
12
+    r=device->hasVolumeControl();
13
+    if(!r)
14
+        ADM_info("The current audio device doesn't support volume control\n");
15
+    return r;
16
+}
17
+/**
18
     \fn AVDM_AudioPlay
19
     \brief Send float data to be played immediately by the device
20
 
21
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudioParser/include/ADM_eac3info.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudioParser/include/ADM_eac3info.h Changed
9
 
1
@@ -24,5 +24,5 @@
2
     uint32_t samples;
3
 }ADM_EAC3_INFO;
4
 
5
-ADM_AUDIOPARSER6_EXPORT bool     ADM_EAC3GetInfo(uint8_t *buf, uint32_t len, uint32_t *syncoff,ADM_EAC3_INFO *info);
6
+ADM_AUDIOPARSER6_EXPORT bool     ADM_EAC3GetInfo(const uint8_t *buf, uint32_t len, uint32_t *syncoff,ADM_EAC3_INFO *info);
7
 #endif //ADM_EAC3INFO_H
8
\ No newline at end of file
9
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreAudioParser/src/ADM_eac3info.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreAudioParser/src/ADM_eac3info.cpp Changed
10
 
1
@@ -20,7 +20,7 @@
2
 /**
3
     \fn ADM_EAC3GetInfo
4
 */
5
-bool     ADM_EAC3GetInfo(uint8_t *buf, uint32_t len, uint32_t *syncoff,ADM_EAC3_INFO *info)
6
+bool     ADM_EAC3GetInfo(const uint8_t *buf, uint32_t len, uint32_t *syncoff,ADM_EAC3_INFO *info)
7
 {
8
 uint32_t l;
9
 uint32_t of=0;
10
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreImage/include/ADM_rgb.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreImage/include/ADM_rgb.h Changed
11
 
1
@@ -39,7 +39,8 @@
2
     ADM_COLOR_LIBVA,
3
     ADM_COLOR_YV12_10BITS,
4
     ADM_COLOR_Y8,
5
-    ADM_COLOR_YUV444_10BITS
6
+    ADM_COLOR_YUV444_10BITS,
7
+    ADM_COLOR_NV12_10BITS
8
  } ADM_colorspace;
9
 #define ADM_COLOR_BACKWARD 0x8000
10
 #define ADM_COLOR_MASK     0x7FFF
11
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreImage/src/ADM_colorspace.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreImage/src/ADM_colorspace.cpp Changed
9
 
1
@@ -97,6 +97,7 @@
2
     case ADM_COLOR_RGB24: return AV_PIX_FMT_RGB24;
3
     case ADM_COLOR_BGR24: return AV_PIX_FMT_BGR24;
4
     case ADM_COLOR_YV12_10BITS: return AV_PIX_FMT_YUV420P10LE;
5
+    case ADM_COLOR_NV12_10BITS:  return AV_PIX_FMT_P010LE;
6
     case ADM_COLOR_YUV444_10BITS: return AV_PIX_FMT_YUV444P10LE;
7
     case ADM_COLOR_Y8: return AV_PIX_FMT_GRAY8;
8
     default : ADM_assert(0); 
9
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreMuxer/include/ADM_muxer.h Changed
23
 
1
@@ -57,8 +57,8 @@
2
 
3
                 uint64_t videoIncrement; // Used/set by initUI
4
                 uint64_t videoDuration;
5
-                DIA_encodingBase  *encoding;
6
-                
7
+                DIA_encodingBase *encoding;
8
+
9
 public:
10
                           ADM_muxer() {vStream=NULL;aStreams=NULL;nbAStreams=0;encoding=NULL;};
11
         virtual           ~ADM_muxer() {closeUI();};
12
@@ -67,8 +67,9 @@
13
 
14
         virtual  bool     save(void)=0;
15
         virtual  bool     close(void)=0; 
16
-        
17
+        virtual  DIA_encodingBase *getEncoding(void) { return encoding; };
18
         virtual  bool     initUI(const char *title);
19
+        virtual  bool     createUI(uint64_t duration);
20
         virtual  bool     updateUI(void);
21
         virtual  bool     closeUI(void);
22
         virtual  bool     useGlobalHeader(void) {return false;}
23
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreMuxer/src/ADM_muxerUtils.cpp Changed
41
 
1
@@ -18,7 +18,6 @@
2
 #include "ADM_muxerUtils.h"
3
 #include "fourcc.h"
4
 #include "ADM_vidMisc.h"
5
-#include "prefs.h"
6
 
7
 /**
8
     \fn rescaleFps
9
@@ -75,8 +74,11 @@
10
 {
11
         videoIncrement=vStream->getFrameIncrement();  // Video increment in AVI-Tick
12
         videoDuration=vStream->getVideoDuration();
13
-        ADM_info("Muxer, creating UI, video duration is %s\n",ADM_us2plain(videoDuration));
14
-        encoding=createEncoding(videoDuration);
15
+        if(!encoding)
16
+        {
17
+            ADM_info("Muxer, creating UI, video duration is %s\n",ADM_us2plain(videoDuration));
18
+            createUI(videoDuration);
19
+        }
20
         // Set video stream etc...
21
         encoding->setPhasis(title);
22
         encoding->setVideoCodec(fourCC::tostring(vStream->getFCC()));
23
@@ -85,6 +87,17 @@
24
                 else    encoding->setAudioCodec(getStrFromAudioCodec(aStreams[0]->getInfo()->encoding));
25
         return true;
26
 }
27
+
28
+/**
29
+    \fn createUI
30
+    \brief create an encoding dialog / progress indicator
31
+*/
32
+bool ADM_muxer::createUI(uint64_t duration)
33
+{
34
+    encoding=createEncoding(duration);
35
+    return true;
36
+}
37
+
38
 /**
39
         \fn updateUI
40
         \brief Update the progress bar
41
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUI/include/DIA_encoding.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUI/include/DIA_encoding.h Changed
25
 
1
@@ -51,6 +51,7 @@
2
                 uint32_t  _originalPriority;
3
                 encodingSample samples[ADM_ENCODING_SAMPLE];
4
                 uint32_t  sampleIndex;
5
+                uint32_t  percent;
6
         
7
 public:
8
                              DIA_encodingBase(uint64_t duration);
9
@@ -65,14 +66,13 @@
10
                 virtual void setTotalSize(uint64_t size)=0;
11
                 virtual void setFrameCount(uint32_t nb)=0;
12
                 virtual void setElapsedTimeMs(uint32_t nb)=0;
13
-                virtual void setRemainingTimeMS(uint32_t nb)=0;
14
                 virtual void setAverageQz(uint32_t nb)=0;
15
                 virtual void setAverageBitrateKbits(uint32_t kb)=0;
16
             
17
 
18
 public:
19
                 virtual void setPercent(uint32_t percent)=0;
20
-public:
21
+                virtual void setRemainingTimeMS(uint32_t nb)=0;
22
                 virtual void setPhasis(const char *n)=0;
23
                 virtual void setVideoCodec(const char *n)=0;
24
                 virtual void setAudioCodec(const char *n)=0;
25
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUI/src/DIA_encoding.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUI/src/DIA_encoding.cpp Changed
26
 
1
@@ -61,6 +61,7 @@
2
         _fps_average=0;
3
         _remainingTimeUs=0;
4
         sampleIndex=0;
5
+        percent=0;
6
         memset(samples,0,sizeof(samples));
7
         clock.reset();
8
         UI_purge();
9
@@ -138,10 +139,12 @@
10
                     _fps_average=_fps_average*0.5+0.5*thisAverage;
11
                     //printf("************** Fps:%d\n",(int)_fps_average);
12
                     setFps(_fps_average);
13
-                    float percent=(float)_currentDts/(float)_totalDurationUs;
14
-                    if(percent>1.0) percent=1.0;
15
-                    percent*=100;
16
-                    setPercent((uint32_t)percent);
17
+                    float p=(float)_currentDts/(float)_totalDurationUs;
18
+                    if(p>1.0) p=1.0;
19
+                    p*=100;
20
+                    if(percent<(uint32_t)p)
21
+                        percent=(uint32_t)p; // avoid progress bar going backwards
22
+                    setPercent(percent);
23
                     setFrameCount(_currentFrameCount);
24
                     setElapsedTimeMs(time);
25
                 }
26
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_h265_tag.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_h265_tag.h Changed
68
 
1
@@ -1,5 +1,5 @@
2
 /***************************************************************************
3
-                      NAL TYPE for H265
4
+                      NAL TYPE for H264
5
                       
6
 **************************************************************************/
7
 /***************************************************************************
8
@@ -10,17 +10,48 @@
9
  *   (at your option) any later version.                                   *
10
  *                                                                         *
11
  ***************************************************************************/
12
-#ifndef ADM_H265_TAG_H
13
-#define    ADM_H265_TAG_H
14
-#define H265_NAL_IDR_W          19
15
-#define H265_NAL_IDR_N          20
16
-#define H265_NAL_SPS            33
17
-#define H265_NAL_PPS            34
18
-#define H265_NAL_AU_DELIMITER   35
19
-#define H265_NAL_FD             38
20
-#define H265_NAL_PREFIX_SEI     39
21
-#define H265_NAL_SUFIX_SEI      40
22
+#pragma once
23
 
24
+#define LIST_OF_NAL_TYPE\
25
+    NAME(NAL_H265_TRAIL_N,      0)    , \
26
+    NAME(NAL_H265_TRAIL_R,      1)    , \
27
+    NAME(NAL_H265_TSA_N      , 2),\
28
+    NAME(NAL_H265_TSA_R      , 3),\
29
+    NAME(NAL_H265_STSA_N     , 4),\
30
+    NAME(NAL_H265_STSA_R     , 5),\
31
+    NAME(NAL_H265_RADL_N     , 6),\
32
+    NAME(NAL_H265_RADL_R     , 7),\
33
+    NAME(NAL_H265_RASL_N     , 8),\
34
+    NAME(NAL_H265_RASL_R     , 9),\
35
+    NAME(NAL_H265_BLA_W_LP   , 16),\
36
+    NAME(NAL_H265_BLA_W_RADL , 17),\
37
+    NAME(NAL_H265_BLA_N_LP   , 18),\
38
+    NAME(NAL_H265_IDR_W_RADL , 19),\
39
+    NAME(NAL_H265_IDR_N_LP,     20) , \
40
+    NAME(NAL_H265_CRA_NUT    ,  21),\
41
+    NAME(NAL_H265_IRAP_VCL23 ,  23),\
42
+    NAME(NAL_H265_VPS  ,        32)    ,\
43
+    NAME(NAL_H265_SPS  ,        33)    ,\
44
+    NAME(NAL_H265_PPS  ,        34)    ,\
45
+    NAME(NAL_H265_AUD  ,        35)    ,\
46
+    NAME(NAL_H265_FD_NUT  ,        38)    ,\
47
+    NAME(NAL_H265_SEI_PREFIX,   39),\
48
+    NAME(NAL_H265_SEI_SUFFIX,   40),\
49
 
50
-#endif /* ADM_H265_TAG_H */
51
 
52
+#define NAME(x,y) x= y
53
+
54
+enum{
55
+LIST_OF_NAL_TYPE
56
+};
57
+#undef NAME
58
+#define NAME(x,y) {y,#x}
59
+
60
+typedef struct NAL_DESC{int value; const char *name;}NAL_DESC;
61
+
62
+const NAL_DESC nalDesc[]={
63
+    LIST_OF_NAL_TYPE
64
+};
65
+    
66
+
67
+//EOF
68
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_last.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_last.h Changed
10
 
1
@@ -20,6 +20,8 @@
2
 ADM_COREUTILS6_EXPORT void  setLastReadFolder(const std::string &folder);
3
 ADM_COREUTILS6_EXPORT void  getLastReadFolder( std::string &folder);
4
 
5
+ADM_COREUTILS6_EXPORT void  getLastReadFile( std::string &file);
6
+
7
 ADM_COREUTILS6_EXPORT void  setLastWriteFolder(const std::string &folder);
8
 ADM_COREUTILS6_EXPORT void  getLastWriteFolder( std::string &folder);
9
 
10
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_videoInfoExtractor.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/include/ADM_videoInfoExtractor.h Changed
71
 
1
@@ -17,6 +17,7 @@
2
 
3
 #include "ADM_coreUtils6_export.h"
4
 
5
+
6
 ADM_COREUTILS6_EXPORT uint8_t extractMpeg4Info(uint8_t *data,uint32_t dataSize,uint32_t *w,uint32_t *h,uint32_t *time_inc);
7
 ADM_COREUTILS6_EXPORT uint8_t extractH263Info(uint8_t *data,uint32_t dataSize,uint32_t *w,uint32_t *h);
8
 ADM_COREUTILS6_EXPORT uint8_t extractH263FLVInfo (uint8_t * buffer, uint32_t len, uint32_t * w, uint32_t * h);
9
@@ -36,16 +37,48 @@
10
     uint32_t CpbDpbToSkip;
11
 }ADM_SPSInfo;
12
 
13
-ADM_COREUTILS6_EXPORT uint8_t extractSPSInfo(uint8_t *data, uint32_t len,ADM_SPSInfo *info);
14
-ADM_COREUTILS6_EXPORT bool extractSPSInfo_mp4Header(uint8_t *data, uint32_t len,ADM_SPSInfo *info);
15
+/**
16
+    \struct ADM_SPSinfoH265
17
+*/
18
+class ADM_COREUTILS6_EXPORT ADM_SPSinfoH265
19
+{
20
+public:
21
+    ADM_SPSinfoH265()
22
+    {
23
+      width=height=fps1000=0;
24
+      num_extra_slice_header_bits=0;  //copied from pps
25
+      address_coding_length=0;
26
+    }
27
+    int     width;
28
+    int     height;
29
+    int     fps1000;
30
+    int     num_extra_slice_header_bits;
31
+    bool    dependent_slice_segments_enabled_flag;
32
+    int     address_coding_length;
33
+};
34
+
35
+
36
+
37
+ADM_COREUTILS6_EXPORT bool    ADM_SPSannexBToMP4(uint32_t dataLen,uint8_t *incoming, uint32_t *outLen, uint8_t *outData);
38
+
39
+ADM_COREUTILS6_EXPORT bool    extractSPSInfo(uint8_t *data, uint32_t len,ADM_SPSInfo *info);
40
+ADM_COREUTILS6_EXPORT bool    extractSPSInfo_mp4Header(uint8_t *data, uint32_t len,ADM_SPSInfo *info);
41
 
42
 ADM_COREUTILS6_EXPORT uint8_t extractH264FrameType(uint32_t nalSize,uint8_t *buffer,uint32_t len,uint32_t *flags);
43
 ADM_COREUTILS6_EXPORT uint8_t extractH265FrameType(uint32_t nalSize,uint8_t *buffer,uint32_t len,uint32_t *flags);
44
-uint8_t extractH264FrameType_startCode(uint32_t nalSize,uint8_t *buffer,uint32_t len,uint32_t *flags);
45
+ADM_COREUTILS6_EXPORT uint8_t extractH264FrameType_startCode(uint32_t nalSize,uint8_t *buffer,uint32_t len,uint32_t *flags);
46
 ADM_COREUTILS6_EXPORT bool    ADM_getH264SpsPpsFromExtraData(uint32_t extraLen,uint8_t *extra,
47
                                     uint32_t *spsLen,uint8_t **spsData,
48
                                     uint32_t *ppsLen,uint8_t **ppsData); // return a copy of pps/sps extracted
49
 
50
+
51
+ADM_COREUTILS6_EXPORT bool    extractSPSInfoH265_mp4Header(uint8_t *data, uint32_t len,ADM_SPSinfoH265 *info); 
52
+ADM_COREUTILS6_EXPORT bool    extractSPSInfoH265(uint8_t *data, uint32_t len,ADM_SPSinfoH265 *info); 
53
+
54
+
55
+
56
+
57
+
58
 typedef struct
59
 {
60
     uint8_t  *start;
61
@@ -55,7 +88,8 @@
62
 ADM_COREUTILS6_EXPORT int ADM_splitNalu(uint8_t *start, uint8_t *end, uint32_t maxNalu,NALU_descriptor *desc);
63
 ADM_COREUTILS6_EXPORT int ADM_findNalu(uint32_t nalu,uint32_t maxNalu,NALU_descriptor *desc);
64
 ADM_COREUTILS6_EXPORT int ADM_convertFromAnnexBToMP4(uint8_t *inData,uint32_t inSize, uint8_t *outData,uint32_t outMaxSize);
65
-
66
+ADM_COREUTILS6_EXPORT int     ADM_splitNaluH265(uint8_t *start, uint8_t *end, uint32_t maxNalu,NALU_descriptor *desc);
67
+ADM_COREUTILS6_EXPORT NALU_descriptor *ADM_findNaluH265(uint32_t nalu,uint32_t maxNalu,NALU_descriptor *desc);
68
 #define SHORT_START_CODE
69
 
70
 #ifdef SHORT_START_CODE
71
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/include/prefs2_list.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/include/prefs2_list.h Changed
18
 
1
@@ -17,6 +17,16 @@
2
 FEATURES_CAP_REFRESH_ENABLED,  //bool
3
 FEATURES_CAP_REFRESH_VALUE,    //uint32_t
4
 FEATURES_SDLDRIVER,    //string
5
+FEATURES_USE_LAST_READ_DIR_AS_TARGET,  //bool
6
+KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,    //bool
7
+KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,  //bool
8
+KEYBOARD_SHORTCUTS_ALT_MARK_A,     //string
9
+KEYBOARD_SHORTCUTS_ALT_MARK_B,     //string
10
+KEYBOARD_SHORTCUTS_ALT_RESET_MARKERS,  //string
11
+KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_A,    //string
12
+KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_B,    //string
13
+KEYBOARD_SHORTCUTS_ALT_BEGIN,  //string
14
+KEYBOARD_SHORTCUTS_ALT_END,    //string
15
 UPDATE_ENABLED,    //bool
16
 UPDATE_LASTCHECK,  //uint32_t
17
 LASTFILES_LASTDIR_READ,    //string
18
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractor.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractor.cpp Changed
11
 
1
@@ -152,8 +152,7 @@
2
     Warning this function expects data to start AFTER startcode, contrarily to other functions here!
3
 */
4
 
5
-uint8_t
6
-extractVopInfo (uint8_t * data, uint32_t len, uint32_t timeincbits,
7
+ADM_COREUTILS6_EXPORT uint8_t extractVopInfo (uint8_t * data, uint32_t len, uint32_t timeincbits,
8
        uint32_t * vopType, uint32_t * modulo, uint32_t * time_inc,
9
        uint32_t * vopcoded)
10
 {
11
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractorH264.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractorH264.cpp Changed
49
 
1
@@ -54,7 +54,7 @@
2
     \fn ADM_getH264SpsPpsFromExtraData
3
     \brief Returns a copy of PPS/SPS extracted from extrdata
4
 */
5
-static bool ADM_SPSannexBToMP4(uint32_t dataLen,uint8_t *incoming,
6
+bool ADM_SPSannexBToMP4(uint32_t dataLen,uint8_t *incoming,
7
                                     uint32_t *outLen, uint8_t *outData)
8
 {
9
     if(dataLen>200)
10
@@ -787,7 +787,7 @@
11
     ADM_info("Incoming SPS info\n");
12
     mixDump(data,len);
13
 
14
-    ADM_info("\nconverted SPS info\n");
15
+    ADM_info("converted SPS info\n");
16
 
17
     uint32_t converted;
18
     uint8_t buffer[256];
19
@@ -797,12 +797,11 @@
20
         return false;
21
     }
22
     mixDump(buffer,converted);
23
-    ADM_info("\n");
24
     return    extractSPSInfo_mp4Header(buffer,converted,spsinfo) ;
25
 
26
 }
27
 
28
-uint8_t extractSPSInfo (uint8_t * data, uint32_t len, ADM_SPSInfo *spsinfo)
29
+bool  extractSPSInfo (uint8_t * data, uint32_t len, ADM_SPSInfo *spsinfo)
30
 {
31
 #define DPY(x) ADM_info(#x":%d\n",(int)spsinfo->x);
32
 #if 1
33
@@ -959,6 +958,7 @@
34
     index++;
35
     return index;
36
 }
37
+
38
 /**
39
     \fn ADM_findNalu
40
     \brief lookup for a specific NALU in the given buffer
41
@@ -972,7 +972,6 @@
42
     }
43
     return -1;
44
 }
45
-
46
 static void writeBE32(uint8_t *p, uint32_t size)
47
 {
48
     p[0]=size>>24;
49
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractorH265.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_infoExtractorH265.cpp Changed
201
 
1
@@ -24,76 +24,307 @@
2
 #define aprintf(...) {}
3
 #include "ADM_getbits.h"
4
 #include "ADM_videoInfoExtractor.h"
5
-#include "ADM_h265_tag.h"
6
+
7
+
8
+
9
+extern "C"
10
+{
11
+#include "libavcodec/parser.h"
12
+#include "libavcodec/hevc.h"
13
+#include "libavcodec/avcodec.h"
14
+#include "libavcodec/ff_spsinfo.h"
15
+}
16
+
17
+extern "C"
18
+{
19
+extern  HEVCSPS *ff_hevc_parser_get_sps(AVCodecParserContext *parser);
20
+extern  HEVCPPS *ff_hevc_parser_get_pps(AVCodecParserContext *parser);
21
+extern  HEVCVPS *ff_hevc_parser_get_vps(AVCodecParserContext *parser);
22
+   
23
+
24
+}
25
+
26
+#include "../include/ADM_h265_tag.h"
27
+
28
+extern bool ADM_SPSannexBToMP4(uint32_t dataLen,uint8_t *incoming,
29
+                                    uint32_t *outLen, uint8_t *outData);
30
+extern bool ADM_findMpegStartCode (uint8_t * start, uint8_t * end,
31
+                uint8_t * outstartcode, uint32_t * offset);
32
+
33
 
34
 /**
35
-      \fn extractH265FrameType
36
-      \brief return frametype in flags (KEY_FRAME or 0). 
37
-             To be used only with  mkv/mp4 nal type (i.e. no startcode)
38
-                    but 4 bytes NALU
39
-      
40
-*/
41
-uint8_t extractH265FrameType (uint32_t nalSize, uint8_t * buffer, uint32_t len,  uint32_t * flags)
42
+ */
43
+class H265Parser
44
 {
45
-  uint8_t *head = buffer, *tail = buffer + len;
46
-  uint8_t stream;
47
-
48
-  uint32_t val, hnt;
49
-  nalSize=4;
50
-// Check for short nalSize, i.e. size coded on 3 bytes
51
-  {
52
-      uint32_t length =(head[0] << 24) + (head[1] << 16) + (head[2] << 8) + (head[3]);
53
-      if(length>len)
54
-      {
55
-          nalSize=3;
56
-      }
57
-  }
58
-  uint32_t recovery=0xff;
59
-  *flags=0;
60
-  while (head + nalSize < tail)
61
+public : 
62
+    H265Parser  (int len,uint8_t *data);
63
+    ~H265Parser();
64
+    bool parseAnnexB(ADM_SPSinfoH265 *spsinfo);
65
+    bool parseMpeg4(ADM_SPSinfoH265 *spsinfo);    
66
+    bool init();
67
+
68
+protected:
69
+    int myLen,originalLength;
70
+    uint8_t *myData;
71
+    AVCodecParserContext *parser;
72
+    AVCodecContext *ctx;
73
+    AVCodec *codec;
74
+};
75
+
76
+
77
+H265Parser::H265Parser  (int len,uint8_t *data)
78
+{
79
+    originalLength=len;
80
+    myLen=len+FF_INPUT_BUFFER_PADDING_SIZE;
81
+    myData=new uint8_t[myLen];
82
+    memset(myData,0x2,myLen);
83
+    memcpy(myData,data,len);
84
+    parser=NULL;
85
+    ctx=NULL;
86
+    codec=NULL;
87
+}
88
+H265Parser::~H265Parser()
89
+{
90
+    if(myData)
91
+    {
92
+        delete [] myData;
93
+        myData=NULL;
94
+    }
95
+    //-
96
+    if(ctx)
97
+    {
98
+        avcodec_close(ctx);
99
+        av_free(ctx);
100
+        ctx=NULL;
101
+    }    
102
+    if(parser)
103
     {
104
+        av_parser_close(parser);
105
+        parser=NULL;
106
+    }
107
+    
108
+}
109
 
110
-      uint32_t length =(head[0] << 16) + (head[1] << 8) + (head[2] << 0) ;
111
-      if(nalSize==4)
112
-          length=(length<<8)+head[3];
113
-      if (length > len)// || length < 2)
114
-      {
115
-          ADM_warning ("Warning , incomplete nal (%u/%u),(%0x/%0x)\n", length, len, length, len);
116
-          *flags = 0;
117
-          return 0;
118
-        }
119
-      head += nalSize;     // Skip nal lenth
120
-      
121
-      stream = ((*head)>>1) & 0x3F;
122
-      
123
+bool H265Parser::init()
124
+{
125
+     parser=av_parser_init(AV_CODEC_ID_HEVC);
126
+    if(!parser)
127
+    {
128
+        ADM_error("cannot create h265 parser\n");
129
+        return false;;
130
+    }
131
+    ADM_info("Parser created\n");
132
+    codec=avcodec_find_decoder(AV_CODEC_ID_HEVC);
133
+    if(!codec)
134
+    {
135
+        ADM_error("cannot create h265 codec\n");
136
+        return false;;
137
+    }
138
+    ADM_info("Codec created\n");
139
+    ctx=avcodec_alloc_context3(codec);
140
+   if (avcodec_open2(ctx, codec, NULL) < 0)
141
+   {
142
+        ADM_error("cannot create h265 context\n");
143
+        return false;;
144
+    }
145
+    parser->flags|=PARSER_FLAG_COMPLETE_FRAMES;
146
+    return true;
147
+}
148
+/**
149
+ * 
150
+ * @return 
151
+ */
152
+bool H265Parser::parseMpeg4(ADM_SPSinfoH265 *spsinfo)
153
+{
154
+    uint8_t *outptr=NULL;
155
+    int outsize=0;
156
 
157
-      switch (stream)
158
-        {
159
-            case H265_NAL_PREFIX_SEI:
160
-            case H265_NAL_SUFIX_SEI:
161
-                //getRecoveryFromSei(length-1, head+1,&recovery);
162
-                break;
163
-            case H265_NAL_SPS:
164
-            case H265_NAL_PPS: 
165
-            case H265_NAL_AU_DELIMITER:
166
-            case H265_NAL_FD:
167
-                    break;
168
-            case H265_NAL_IDR_W:
169
-            case H265_NAL_IDR_N:
170
-              *flags = AVI_KEY_FRAME;
171
-              return 1;
172
-              break;
173
-            /*case NAL_NON_IDR:
174
-              getNalType(head+1,head+length,flags,recovery);
175
-              return 1;
176
-              break;*/
177
-            default:
178
-              ADM_warning ("unknown nal ??0x%x\n", stream);
179
-              break;
180
+    ctx->extradata=myData;
181
+    ctx->extradata_size=myLen;
182
+    int used=av_parser_parse2(parser, ctx, &outptr, &outsize, NULL, 0, 0, 0,0);
183
+    printf("Used bytes %d, total = %d, outsize=%d (+5)\n",used,myLen,outsize);
184
+    if(!used)
185
+    {
186
+        ADM_warning("Failed to extract SPS info\n");
187
+        return false;
188
+    }
189
+    return  true;
190
+}
191
+
192
+static int bitsNeeded(int v)
193
+{
194
+    int b=1;
195
+    while(v)
196
+    {
197
+        v>>=1;
198
+        b++;
199
+    }
200
+    return b;
201
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_last.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/ADM_last.cpp Changed
15
 
1
@@ -72,4 +72,13 @@
2
     
3
 }
4
 
5
+/**
6
+ * \fn getLastReadFile
7
+ * \brief get the file name and path of the currently loaded video
8
+ */
9
+ void admCoreUtils::getLastReadFile( std::string &file)
10
+ {
11
+     internalGetFolder(LASTFILES_FILE1,file);
12
+ }
13
+
14
 // EOF
15
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/avidemutils.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/avidemutils.cpp Changed
9
 
1
@@ -81,6 +81,7 @@
2
    {
3
         printf("\n %04" PRIx32" : %s %s", (len >> 4) << 4, str, str2);
4
    }
5
+    printf("\n");
6
 }
7
 /*
8
    A bunch of Endianness swapper to ease handling
9
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2.conf -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2.conf Changed
21
 
1
@@ -35,6 +35,19 @@
2
 bool:cap_refresh_enabled,              0,      0,      1
3
 uint32_t:cap_refresh_value,            100,    10,     1000
4
 string:sdlDriver,                      ""
5
+bool:use_last_read_dir_as_target,      0,      0,      1
6
+}
7
+#
8
+keyboard_shortcuts{
9
+bool:use_alternate_kbd_shortcuts,      0,      0,      1
10
+bool:swap_up_down_keys,                0,      0,      1
11
+string:alt_mark_a,                     "I"
12
+string:alt_mark_b,                     "O"
13
+string:alt_reset_markers,              "R"
14
+string:alt_goto_mark_a,                "A"
15
+string:alt_goto_mark_b,                "B"
16
+string:alt_begin,                      "S"
17
+string:alt_end,                        "E"
18
 }
19
 #
20
 update{
21
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2.h Changed
22
 
1
@@ -24,8 +24,20 @@
2
    bool cap_refresh_enabled;
3
    uint32_t cap_refresh_value;
4
    std::string sdlDriver;
5
+   bool use_last_read_dir_as_target;
6
 }features;
7
 struct  {
8
+   bool use_alternate_kbd_shortcuts;
9
+   bool swap_up_down_keys;
10
+   std::string alt_mark_a;
11
+   std::string alt_mark_b;
12
+   std::string alt_reset_markers;
13
+   std::string alt_goto_mark_a;
14
+   std::string alt_goto_mark_b;
15
+   std::string alt_begin;
16
+   std::string alt_end;
17
+}keyboard_shortcuts;
18
+struct  {
19
    bool enabled;
20
    uint32_t lastCheck;
21
 }update;
22
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_desc.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_desc.cpp Changed
18
 
1
@@ -19,6 +19,16 @@
2
  {"features.cap_refresh_enabled",offsetof(my_prefs_struct,features.cap_refresh_enabled),"bool",ADM_param_bool},
3
  {"features.cap_refresh_value",offsetof(my_prefs_struct,features.cap_refresh_value),"uint32_t",ADM_param_uint32_t},
4
  {"features.sdlDriver",offsetof(my_prefs_struct,features.sdlDriver),"std::string",ADM_param_stdstring},
5
+ {"features.use_last_read_dir_as_target",offsetof(my_prefs_struct,features.use_last_read_dir_as_target),"bool",ADM_param_bool},
6
+ {"keyboard_shortcuts.use_alternate_kbd_shortcuts",offsetof(my_prefs_struct,keyboard_shortcuts.use_alternate_kbd_shortcuts),"bool",ADM_param_bool},
7
+ {"keyboard_shortcuts.swap_up_down_keys",offsetof(my_prefs_struct,keyboard_shortcuts.swap_up_down_keys),"bool",ADM_param_bool},
8
+ {"keyboard_shortcuts.alt_mark_a",offsetof(my_prefs_struct,keyboard_shortcuts.alt_mark_a),"std::string",ADM_param_stdstring},
9
+ {"keyboard_shortcuts.alt_mark_b",offsetof(my_prefs_struct,keyboard_shortcuts.alt_mark_b),"std::string",ADM_param_stdstring},
10
+ {"keyboard_shortcuts.alt_reset_markers",offsetof(my_prefs_struct,keyboard_shortcuts.alt_reset_markers),"std::string",ADM_param_stdstring},
11
+ {"keyboard_shortcuts.alt_goto_mark_a",offsetof(my_prefs_struct,keyboard_shortcuts.alt_goto_mark_a),"std::string",ADM_param_stdstring},
12
+ {"keyboard_shortcuts.alt_goto_mark_b",offsetof(my_prefs_struct,keyboard_shortcuts.alt_goto_mark_b),"std::string",ADM_param_stdstring},
13
+ {"keyboard_shortcuts.alt_begin",offsetof(my_prefs_struct,keyboard_shortcuts.alt_begin),"std::string",ADM_param_stdstring},
14
+ {"keyboard_shortcuts.alt_end",offsetof(my_prefs_struct,keyboard_shortcuts.alt_end),"std::string",ADM_param_stdstring},
15
  {"update.enabled",offsetof(my_prefs_struct,update.enabled),"bool",ADM_param_bool},
16
  {"update.lastCheck",offsetof(my_prefs_struct,update.lastCheck),"uint32_t",ADM_param_uint32_t},
17
  {"lastfiles.lastdir_read",offsetof(my_prefs_struct,lastfiles.lastdir_read),"std::string",ADM_param_stdstring},
18
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_json.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_json.cpp Changed
20
 
1
@@ -27,6 +27,18 @@
2
 json.addBool("cap_refresh_enabled",key->features.cap_refresh_enabled);
3
 json.addUint32("cap_refresh_value",key->features.cap_refresh_value);
4
 json.addString("sdlDriver",key->features.sdlDriver);
5
+json.addBool("use_last_read_dir_as_target",key->features.use_last_read_dir_as_target);
6
+json.endNode();
7
+json.addNode("keyboard_shortcuts");
8
+json.addBool("use_alternate_kbd_shortcuts",key->keyboard_shortcuts.use_alternate_kbd_shortcuts);
9
+json.addBool("swap_up_down_keys",key->keyboard_shortcuts.swap_up_down_keys);
10
+json.addString("alt_mark_a",key->keyboard_shortcuts.alt_mark_a);
11
+json.addString("alt_mark_b",key->keyboard_shortcuts.alt_mark_b);
12
+json.addString("alt_reset_markers",key->keyboard_shortcuts.alt_reset_markers);
13
+json.addString("alt_goto_mark_a",key->keyboard_shortcuts.alt_goto_mark_a);
14
+json.addString("alt_goto_mark_b",key->keyboard_shortcuts.alt_goto_mark_b);
15
+json.addString("alt_begin",key->keyboard_shortcuts.alt_begin);
16
+json.addString("alt_end",key->keyboard_shortcuts.alt_end);
17
 json.endNode();
18
 json.addNode("update");
19
 json.addBool("enabled",key->update.enabled);
20
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_pref.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreUtils/src/prefs2_pref.h Changed
18
 
1
@@ -30,6 +30,16 @@
2
 { FEATURES_CAP_REFRESH_ENABLED,"features.cap_refresh_enabled"         ,ADM_param_bool      ,"0",   0,  1},
3
 { FEATURES_CAP_REFRESH_VALUE,"features.cap_refresh_value"             ,ADM_param_uint32_t  ,"100", 10, 1000},
4
 { FEATURES_SDLDRIVER,"features.sdlDriver"                             ,ADM_param_stdstring     ,"",    0,  0},
5
+{ FEATURES_USE_LAST_READ_DIR_AS_TARGET,"features.use_last_read_dir_as_target",ADM_param_bool       ,"0",   0,  1},
6
+{ KEYBOARD_SHORTCUTS_USE_ALTERNATE_KBD_SHORTCUTS,"keyboard_shortcuts.use_alternate_kbd_shortcuts",ADM_param_bool       ,"0",   0,  1},
7
+{ KEYBOARD_SHORTCUTS_SWAP_UP_DOWN_KEYS,"keyboard_shortcuts.swap_up_down_keys",ADM_param_bool       ,"0",   0,  1},
8
+{ KEYBOARD_SHORTCUTS_ALT_MARK_A,"keyboard_shortcuts.alt_mark_a"       ,ADM_param_stdstring     ,"I",   0,  0},
9
+{ KEYBOARD_SHORTCUTS_ALT_MARK_B,"keyboard_shortcuts.alt_mark_b"       ,ADM_param_stdstring     ,"O",   0,  0},
10
+{ KEYBOARD_SHORTCUTS_ALT_RESET_MARKERS,"keyboard_shortcuts.alt_reset_markers",ADM_param_stdstring      ,"R",   0,  0},
11
+{ KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_A,"keyboard_shortcuts.alt_goto_mark_a",ADM_param_stdstring      ,"A",   0,  0},
12
+{ KEYBOARD_SHORTCUTS_ALT_GOTO_MARK_B,"keyboard_shortcuts.alt_goto_mark_b",ADM_param_stdstring      ,"B",   0,  0},
13
+{ KEYBOARD_SHORTCUTS_ALT_BEGIN,"keyboard_shortcuts.alt_begin"         ,ADM_param_stdstring     ,"S",   0,  0},
14
+{ KEYBOARD_SHORTCUTS_ALT_END,"keyboard_shortcuts.alt_end"             ,ADM_param_stdstring     ,"E",   0,  0},
15
 { UPDATE_ENABLED,"update.enabled"                                     ,ADM_param_bool      ,"1",   0,  1},
16
 { UPDATE_LASTCHECK,"update.lastCheck"                                 ,ADM_param_uint32_t  ,"0",   0,  5000},
17
 { LASTFILES_LASTDIR_READ,"lastfiles.lastdir_read"                     ,ADM_param_stdstring     ,"",    0,  0},
18
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/include/ADM_coreDxva2.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/include/ADM_coreDxva2.h Changed
30
 
1
@@ -33,7 +33,7 @@
2
     void                 *parent;
3
     LPDIRECT3DSURFACE9    surface;
4
     IDirectXVideoDecoder *decoder;
5
-
6
+    ADMColorScalerSimple *color10Bits; // To be optimized, it's the same for all images from the same source
7
     bool                  surfaceToAdmImage(ADMImage *out);
8
     int                   refCount;
9
 public:
10
@@ -51,15 +51,14 @@
11
         static bool init(GUI_WindowInfo *x);
12
         static bool isOperationnal(void);
13
         static bool cleanup(void);
14
-        static bool supported(AVCodecID codec);
15
-        static IDirectXVideoDecoder *createDecoder(AVCodecID codec,int width, int height,int numSurface, LPDIRECT3DSURFACE9 *surface,int align);
16
+        static bool supported(AVCodecID codec,int bits);
17
+        static IDirectXVideoDecoder *createDecoder(AVCodecID codec,int width, int height,int numSurface, LPDIRECT3DSURFACE9 *surface,int align,int bits);
18
         static bool destroyDecoder(IDirectXVideoDecoder *decoder);
19
-        static DXVA2_ConfigPictureDecode *getDecoderConfig(AVCodecID codec);
20
-        static bool allocateD3D9Surface(int num,int width, int height,void *array,int align);
21
+        static DXVA2_ConfigPictureDecode *getDecoderConfig(AVCodecID codec,int bits);
22
+        static bool allocateD3D9Surface(int num,int width, int height,void *array,int align,int bits=8);
23
         static bool destroyD3DSurface(int num,void *surfaces);
24
         static bool decoderAddRef(IDirectXVideoDecoder *decoder);
25
         static bool decoderRemoveRef(IDirectXVideoDecoder *decoder);
26
 };
27
 
28
 bool ADM_COREVIDEOCODEC6_EXPORT admDxva2_exitCleanup(void);
29
-
30
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/src/ADM_coreDxva2.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreDxva2/src/ADM_coreDxva2.cpp Changed
201
 
1
@@ -61,6 +61,7 @@
2
 DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main,  0x5b11d51b, 0x2f4c,0x4452,0xbc,0xc3,0x09,0xf2,0xa1,0x16,0x0c,0xc0);
3
 DEFINE_GUID(DXVA2_ModeVP9_VLD_Profile0, 0x463707f8, 0xa1d0,0x4585,0x87,0x6d,0x83,0xaa,0x6d,0x60,0xb8,0x9e);
4
 DEFINE_GUID(DXVA2_NoEncrypt,          0x1b81beD0, 0xa0c7,0x11d3,0xb9,0x84,0x00,0xc0,0x4f,0x2e,0x73,0xc5);
5
+DEFINE_GUID(DXVA2_ModeHEVC_VLD_Main10,0x107af0e0, 0xef1a,0x4d19,0xab,0xa8,0x67,0xa1,0x63,0x07,0x3d,0x13);
6
 DEFINE_GUID(GUID_NULL,                0x00000000, 0x0000,0x0000,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);
7
 /**
8
  */
9
@@ -68,6 +69,7 @@
10
 {
11
   const GUID     *guid;
12
   enum AVCodecID codec;
13
+  int            bitsPerChannel;
14
 } dxva2_mode;
15
 /**
16
  */
17
@@ -83,28 +85,29 @@
18
 static const dxva2_mode dxva2_modes[] =
19
 {
20
     /* MPEG-2 */
21
-    { &DXVA2_ModeMPEG2_VLD,      AV_CODEC_ID_MPEG2VIDEO },
22
-    { &DXVA2_ModeMPEG2and1_VLD,  AV_CODEC_ID_MPEG2VIDEO },
23
+    { &DXVA2_ModeMPEG2_VLD,      AV_CODEC_ID_MPEG2VIDEO ,8},
24
+    { &DXVA2_ModeMPEG2and1_VLD,  AV_CODEC_ID_MPEG2VIDEO ,8},
25
 
26
     /* H.264 */
27
-    { &DXVA2_ModeH264_F,         AV_CODEC_ID_H264 },
28
-    { &DXVA2_ModeH264_E,         AV_CODEC_ID_H264 },
29
+    { &DXVA2_ModeH264_F,         AV_CODEC_ID_H264 ,8},
30
+    { &DXVA2_ModeH264_E,         AV_CODEC_ID_H264 ,8},
31
     /* Intel specific H.264 mode */
32
-    { &DXVADDI_Intel_ModeH264_E, AV_CODEC_ID_H264 },
33
+    { &DXVADDI_Intel_ModeH264_E, AV_CODEC_ID_H264 ,8},
34
 
35
     /* VC-1 / WMV3 */
36
-    { &DXVA2_ModeVC1_D2010,      AV_CODEC_ID_VC1  },
37
-    { &DXVA2_ModeVC1_D2010,      AV_CODEC_ID_WMV3 },
38
-    { &DXVA2_ModeVC1_D,          AV_CODEC_ID_VC1  },
39
-    { &DXVA2_ModeVC1_D,          AV_CODEC_ID_WMV3 },
40
+    { &DXVA2_ModeVC1_D2010,      AV_CODEC_ID_VC1  ,8},
41
+    { &DXVA2_ModeVC1_D2010,      AV_CODEC_ID_WMV3 ,8},
42
+    { &DXVA2_ModeVC1_D,          AV_CODEC_ID_VC1  ,8},
43
+    { &DXVA2_ModeVC1_D,          AV_CODEC_ID_WMV3 ,8},
44
 
45
     /* HEVC/H.265 */
46
-    { &DXVA2_ModeHEVC_VLD_Main,  AV_CODEC_ID_HEVC },
47
+    { &DXVA2_ModeHEVC_VLD_Main,   AV_CODEC_ID_HEVC ,8},
48
+    { &DXVA2_ModeHEVC_VLD_Main10, AV_CODEC_ID_HEVC ,10},
49
 
50
     /* VP8/9 */
51
-    { &DXVA2_ModeVP9_VLD_Profile0, AV_CODEC_ID_VP9 },
52
+    { &DXVA2_ModeVP9_VLD_Profile0,AV_CODEC_ID_VP9 ,8},
53
 
54
-    { NULL,                      (AVCodecID)0 },
55
+    { NULL,                      (AVCodecID)0 ,0},
56
 };
57
 typedef struct
58
 {
59
@@ -118,6 +121,23 @@
60
 
61
 static Dxv2SupportMap dxva2H265={AV_CODEC_ID_HEVC,false};
62
 static Dxv2SupportMap dxva2H264={AV_CODEC_ID_H264,false};
63
+static Dxv2SupportMap dxva2H265_10Bits={AV_CODEC_ID_HEVC,false};
64
+
65
+/**
66
+  \fn dxvaBitsToFormat
67
+  \brief returns D3D format depending on bits per component
68
+*/
69
+static D3DFORMAT dxvaBitsToFormat(int bits)
70
+{
71
+  switch(bits)
72
+  {
73
+    case 8: return (D3DFORMAT)MKTAG('N','V','1','2');break;
74
+    case 10:return (D3DFORMAT)MKTAG('P','0','1','0');break;
75
+    default:
76
+        ADM_assert(0); break;
77
+  }
78
+  return (D3DFORMAT)MKTAG('N','V','1','2');
79
+}
80
 /**
81
  */
82
 static void dumpGUID(const char *name,const GUID &guid)
83
@@ -206,7 +226,7 @@
84
  * \fn lookupCodec
85
  * \brief find and populate the configuration for a given codec
86
  */
87
-static bool lookupCodec(const char *codecName,Dxv2SupportMap *context,unsigned int guid_count,GUID *guid_list)
88
+static bool lookupCodec(const char *codecName,Dxv2SupportMap *context,unsigned int guid_count,GUID *guid_list, int bitsPerComponent)
89
 {
90
     HRESULT hr;
91
     D3DFORMAT target_format = (D3DFORMAT) 0;
92
@@ -236,10 +256,12 @@
93
         {
94
             continue;
95
         }
96
+        D3DFORMAT tgt;
97
+        tgt=dxvaBitsToFormat(bitsPerComponent);
98
         for (j = 0; j < target_count; j++)
99
         {
100
             const D3DFORMAT format = target_list[j];
101
-            if (format == MKTAG('N','V','1','2'))
102
+            if (format ==tgt)
103
             {
104
                 target_format = format;
105
                 break;
106
@@ -344,8 +366,9 @@
107
             ADM_warning("Failed to retrieve decoder device GUIDs\n");
108
             goto failInit;
109
         }
110
-        lookupCodec("H264",&dxva2H264,guid_count,guid_list);
111
-        lookupCodec("H265",&dxva2H265,guid_count,guid_list);
112
+        lookupCodec("H264",&dxva2H264,guid_count,guid_list,8);
113
+        lookupCodec("H265",&dxva2H265,guid_count,guid_list,8);
114
+        lookupCodec("H265",&dxva2H265_10Bits,guid_count,guid_list,10);
115
         CoTaskMemFree(guid_list);
116
     }
117
     ADM_info("Scanning supported format done\n");
118
@@ -357,18 +380,20 @@
119
 }
120
 /**
121
  */
122
-bool admDxva2::allocateD3D9Surface(int num,int w, int h,void *array,int surface_alignment)
123
+bool admDxva2::allocateD3D9Surface(int num,int w, int h,void *array,int surface_alignment,int bits)
124
 {
125
     HRESULT hr;
126
     LPDIRECT3DSURFACE9 *surfaces=(LPDIRECT3DSURFACE9 *)array;
127
     int width=ALIGN(w,surface_alignment);
128
     int height=ALIGN(h,surface_alignment);
129
+    D3DFORMAT fmt;
130
+    fmt=dxvaBitsToFormat(bits);
131
 
132
      hr = IDirectXVideoDecoderService_CreateSurface(decoder_service,
133
                                                    width,
134
                                                    height,
135
                                                    num - 1,
136
-                                                   (D3DFORMAT)MKTAG('N','V','1','2'), D3DPOOL_DEFAULT, 0,
137
+                                                   fmt, D3DPOOL_DEFAULT, 0,
138
                                                    DXVA2_VideoDecoderRenderTarget,
139
                                                    surfaces, NULL);
140
      if(ADM_FAILED(hr))
141
@@ -442,23 +467,29 @@
142
 /**
143
  *
144
  */
145
-bool        admDxva2::supported(AVCodecID codec)
146
+bool        admDxva2::supported(AVCodecID codec,int bits)
147
 {
148
-#define SUPSUP(a,b) if(codec==a) return (b.enabled) ;
149
-    SUPSUP(AV_CODEC_ID_H264,dxva2H264)
150
-    SUPSUP(AV_CODEC_ID_HEVC,dxva2H265)
151
+#define SUPSUP(a,b,c) if(codec==a && bits==c) return (b.enabled) ;
152
+    SUPSUP(AV_CODEC_ID_H264,dxva2H264,8)
153
+    SUPSUP(AV_CODEC_ID_HEVC,dxva2H265,8)
154
+    SUPSUP(AV_CODEC_ID_HEVC,dxva2H265_10Bits,10)
155
     return false;
156
 }
157
 /**
158
  * \fn getDecoderConfig
159
  */
160
-DXVA2_ConfigPictureDecode *admDxva2::getDecoderConfig(AVCodecID codec)
161
+DXVA2_ConfigPictureDecode *admDxva2::getDecoderConfig(AVCodecID codec,int bits)
162
 {
163
     Dxv2SupportMap *cmap;
164
     switch(codec)
165
     {
166
         case AV_CODEC_ID_H264: cmap=&dxva2H264;break;
167
-        case AV_CODEC_ID_H265: cmap=&dxva2H265;break;
168
+        case AV_CODEC_ID_H265:
169
+              if(10==bits)
170
+                cmap=&dxva2H265_10Bits;
171
+              else
172
+                cmap=&dxva2H265;
173
+              break;
174
         default:
175
             ADM_assert(0);
176
             break;
177
@@ -474,15 +505,29 @@
178
 /**
179
  * \fn createDecoder
180
  */
181
-IDirectXVideoDecoder  *admDxva2::createDecoder(AVCodecID codec, int with, int height, int numSurface, LPDIRECT3DSURFACE9 *surface,int align)
182
+IDirectXVideoDecoder  *admDxva2::createDecoder(AVCodecID codec, int with, int height, int numSurface, LPDIRECT3DSURFACE9 *surface,int align,int bits)
183
 {
184
     Dxv2SupportMap *cmap;
185
     int paddedWidth=ALIGN(with,align);
186
     int paddedHeight=ALIGN(height,align);
187
     switch(codec)
188
     {
189
-        case AV_CODEC_ID_H264: cmap=&dxva2H264;break;
190
-        case AV_CODEC_ID_H265: cmap=&dxva2H265;break;
191
+        case AV_CODEC_ID_H264:
192
+                ADM_info("Creating decoder DXVA2/H264/8 Bits\n");
193
+                cmap=&dxva2H264;
194
+                break;
195
+        case AV_CODEC_ID_H265:
196
+                if(bits==10)
197
+                {
198
+                    ADM_info("Creating decoder DXVA2/H264/10 Bits\n");
199
+                    cmap=&dxva2H265_10Bits;
200
+                }
201
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreLibVA/src/ADM_coreLibVA.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreLibVA/src/ADM_coreLibVA.cpp Changed
201
 
1
@@ -59,6 +59,7 @@
2
  void                   *context;
3
  VADisplay              display;
4
  VAConfigID             configH264;
5
+ VAConfigID             configMpeg2;
6
  VAConfigID             configH265;
7
  VAConfigID             configH26510Bits;
8
  VAConfigID             configVC1;
9
@@ -312,16 +313,16 @@
10
     if(!r)
11
         return false;
12
 
13
-
14
-    checkProfile(VAProfileH264High,     &ADM_coreLibVA::configH264,"H264 Hight");
15
-    checkProfile(VAProfileVC1Advanced,  &ADM_coreLibVA::configVC1 ,"VC1");
16
+    checkProfile(VAProfileMPEG2Main,    &ADM_coreLibVA::configMpeg2,    "Mpeg 2 Main");
17
+    checkProfile(VAProfileH264High,     &ADM_coreLibVA::configH264,     "H264 Hight");
18
+    checkProfile(VAProfileVC1Advanced,  &ADM_coreLibVA::configVC1 ,     "VC1");
19
 #ifdef LIBVA_HEVC_DEC
20
-    checkProfile(VAProfileHEVCMain,     &ADM_coreLibVA::configH265,"HEVC Main");
21
-    checkProfile(VAProfileHEVCMain10,   &ADM_coreLibVA::configH26510Bits ,"H265 10Bits");
22
+    checkProfile(VAProfileHEVCMain,     &ADM_coreLibVA::configH265,     "HEVC Main");
23
+    checkProfile(VAProfileHEVCMain10,   &ADM_coreLibVA::configH26510Bits,"H265 10Bits");
24
 #endif
25
 
26
 #ifdef LIBVA_VP9_DEC
27
-    checkProfile(VAProfileVP9Profile3,  &ADM_coreLibVA::configVP9 ,"VP9");
28
+    checkProfile(VAProfileVP9Profile3,  &ADM_coreLibVA::configVP9 ,     "VP9");
29
 #endif
30
     return true;
31
 }
32
@@ -344,8 +345,8 @@
33
 }
34
 
35
 /**
36
- * 
37
- * @return 
38
+ *
39
+ * @return
40
  */
41
 VADisplay admLibVA::getDisplay()
42
 {
43
@@ -406,11 +407,12 @@
44
     VAConfigID cid;
45
     switch(profile)
46
     {
47
-       case VAProfileH264High: cid=ADM_coreLibVA::configH264;break;
48
-       case VAProfileVC1Advanced: cid=ADM_coreLibVA::configVC1;break;
49
+       case VAProfileMPEG2Main:     cid=ADM_coreLibVA::configMpeg2;break;
50
+       case VAProfileH264High:      cid=ADM_coreLibVA::configH264;break;
51
+       case VAProfileVC1Advanced:   cid=ADM_coreLibVA::configVC1;break;
52
 #ifdef LIBVA_HEVC_DEC
53
-       case VAProfileHEVCMain: cid=ADM_coreLibVA::configH265;break;
54
-       case VAProfileHEVCMain10: cid=ADM_coreLibVA::configH26510Bits;break;
55
+       case VAProfileHEVCMain:      cid=ADM_coreLibVA::configH265;break;
56
+       case VAProfileHEVCMain10:    cid=ADM_coreLibVA::configH26510Bits;break;
57
 #endif
58
 
59
 #ifdef LIBVA_VP9_DEC
60
@@ -501,6 +503,7 @@
61
 #define SUPSUP(a,b) case a: if(ADM_coreLibVA::b!=-1) return true;break;
62
     switch(profile)
63
     {
64
+        SUPSUP(VAProfileMPEG2Main,configMpeg2)
65
         SUPSUP(VAProfileH264High,configH264)
66
         SUPSUP(VAProfileVC1Advanced,configVC1)
67
 #ifdef LIBVA_HEVC_DEC
68
@@ -538,6 +541,7 @@
69
 
70
     switch(profile)
71
     {
72
+       case VAProfileMPEG2Main:   cid=ADM_coreLibVA::configMpeg2;break;
73
        case VAProfileH264High:    cid=ADM_coreLibVA::configH264;break;
74
        case VAProfileVC1Advanced: cid=ADM_coreLibVA::configVC1;break;
75
 #ifdef LIBVA_HEVC_DEC
76
@@ -761,8 +765,9 @@
77
     //--------------------------
78
     // Wait for surface to be ready...
79
     //--------------------------
80
-    int countDown=20;
81
-    while(1)
82
+    int countDown=50;
83
+    bool end=false;
84
+    while(!end)
85
     {
86
      CHECK_ERROR(vaQuerySurfaceStatus ( ADM_coreLibVA::display, src->surface,&status));
87
      if(xError)
88
@@ -770,14 +775,34 @@
89
          ADM_warning("QuerySurfacStatus failed\n");
90
          return false;
91
      }
92
-     if(status==VASurfaceReady) break;
93
-     countDown--;
94
-     if(!countDown)
95
+     aprintf("surface status = %d\n",status);
96
+     switch(status)
97
      {
98
-         ADM_warning("Timeout waiting for surface\n");
99
-         return false;
100
-     }
101
-     ADM_usleep(1000);
102
+        case VASurfaceReady:
103
+                end=true;
104
+                continue;
105
+                break;
106
+        case VASurfaceSkipped:
107
+                end=true;
108
+                continue;
109
+                break;
110
+      default:
111
+          countDown--;
112
+          if(!countDown)
113
+          {
114
+              ADM_warning("Timeout waiting for surface\n");
115
+              end=true;
116
+              continue;
117
+          }
118
+          ADM_usleep(1000);
119
+          break;
120
+    }
121
+   }
122
+    if(status!=VASurfaceReady)
123
+    {
124
+      ADM_warning("Error getting surface within timeout = %d\n",(int)status);
125
+      dest->_noPicture=true;
126
+      return true;
127
     }
128
     //--------------------------
129
     // Derive Image
130
@@ -1124,7 +1149,7 @@
131
  * allocateWithSurface
132
  * @param w
133
  * @param h
134
- * @return 
135
+ * @return
136
  */
137
 ADM_vaSurface *ADM_vaSurface::allocateWithSurface(int w,int h)
138
 {
139
@@ -1205,16 +1230,16 @@
140
     return false;
141
 }
142
 /**
143
- * 
144
- * @return 
145
+ *
146
+ * @return
147
  */
148
 VAConfigID  admLibVA::createFilterConfig()
149
 {
150
       VAStatus xError;
151
       VAConfigID id=VA_INVALID;
152
-      
153
+
154
       if(!coreLibVAWorking) {ADM_warning("Libva not operationnal\n");return VA_INVALID;}
155
-      
156
+
157
       CHECK_ERROR(vaCreateConfig(ADM_coreLibVA::display, VAProfileNone, VAEntrypointVideoProc, 0, 0, &id));
158
       if(xError!=VA_STATUS_SUCCESS)
159
           return VA_INVALID;
160
@@ -1222,37 +1247,37 @@
161
 }
162
 
163
 /**
164
- * 
165
- * @return 
166
+ *
167
+ * @return
168
  */
169
 VAContextID admLibVA::createFilterContext()
170
 {
171
     return VA_INVALID;
172
 }
173
 /**
174
- * 
175
+ *
176
  * @param id
177
- * @return 
178
+ * @return
179
  */
180
 bool        admLibVA::destroyFilterContext(VAContextID &id)
181
 {
182
      VAStatus xError;
183
      if(!coreLibVAWorking) {ADM_warning("Libva not operationnal\n");return false;}
184
-    
185
+
186
     CHECK_ERROR( vaDestroyContext(ADM_coreLibVA::display, id));
187
     id=VA_INVALID;
188
     return true;
189
 }
190
 
191
 /**
192
- * 
193
- * @return 
194
+ *
195
+ * @return
196
  */
197
 bool        admLibVA::destroyFilterConfig(VAConfigID &id)
198
 {
199
     VAStatus xError;
200
      if(!coreLibVAWorking) {ADM_warning("Libva not operationnal\n");return false;}
201
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpau.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpau.h Changed
11
 
1
@@ -104,6 +104,9 @@
2
                                 uint32_t attrCount,
3
                                 const  VdpVideoMixerAttribute *xkeys,
4
                                 void * const* values);
5
+    static bool      queryDecoderCapabilities(      VdpDecoderProfile profile, // return true if supported
6
+                                                    int *        max_width,
7
+                                                    int *        max_height);
8
     static int dimensionRoundUp(int x)
9
     {
10
                 return (x+15) & ~15;
11
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpauInternal.h -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/include/ADM_coreVdpauInternal.h Changed
25
 
1
@@ -38,10 +38,10 @@
2
     VdpOutputSurfaceQueryPutBitsYCbCrCapabilities *putBitsCapsOutputSurface;
3
     VdpOutputSurfaceGetBitsNative                 *getBitsNativeOutputSurface;
4
 
5
-    VdpDecoderCreate        *decoderCreate;
6
-    VdpDecoderDestroy       *decoderDestroy;
7
-    VdpDecoderRender        *decoderRender;
8
-
9
+    VdpDecoderCreate                  *decoderCreate;
10
+    VdpDecoderDestroy                 *decoderDestroy;
11
+    VdpDecoderRender                  *decoderRender;
12
+    VdpDecoderQueryCapabilities       *queryDecoderCapabilities;
13
 
14
     VdpPresentationQueueTargetDestroy *presentationQueueDestroy;
15
     VdpPresentationQueueCreate        *presentationQueueCreate;
16
@@ -61,6 +61,8 @@
17
     VdpVideoSurfaceGetParameters      *mixerGetSurfaceParameters;
18
     
19
     VdpPresentationQueueTargetCreateX11 *presentationQueueDisplayX11Create;
20
+    
21
+    
22
 }VdpFunctions;
23
 
24
 namespace ADM_coreVdpau
25
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpau.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpau.cpp Changed
10
 
1
@@ -142,7 +142,7 @@
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
+    GetMe(queryDecoderCapabilities,VDP_FUNC_ID_DECODER_QUERY_CAPABILITIES);
7
     
8
 
9
     GetMe(presentationQueueDestroy,VDP_FUNC_ID_PRESENTATION_QUEUE_DESTROY);
10
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpauMixer.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/ADM_hwAccel/ADM_coreVdpau/src/ADM_coreVdpauMixer.cpp Changed
32
 
1
@@ -259,6 +259,30 @@
2
     return e;
3
 }
4
 
5
+bool admVdpau::queryDecoderCapabilities(
6
+                                                    VdpDecoderProfile profile,
7
+                                                    int *        maxWidth,
8
+                                                    int *        maxHeight)
9
+  {
10
+    VdpBool is_supported=false;
11
+    uint32_t max_level,max_macroblocks,max_width,max_height;
12
+    VdpStatus e=ADM_coreVdpau::funcs.queryDecoderCapabilities(ADM_coreVdpau::vdpDevice,
13
+                                                              profile,
14
+                                                              &is_supported,
15
+                                                              &max_level,
16
+                                                              &max_macroblocks,
17
+                                                              &max_width,
18
+                                                              &max_height);
19
+    if(VDP_STATUS_OK!=e)
20
+    {   
21
+        ADM_warning("queryDecoderCapabilities  failed :%s\n",getErrorString(e));   
22
+        return false;
23
+    }
24
+    *maxWidth=max_width;
25
+    *maxHeight=max_height;
26
+    return is_supported;
27
+  }
28
+
29
 /**
30
     \fn mixerRenderWithPastAndFuture
31
 */
32
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_codecSearch.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_codecSearch.cpp Changed
12
 
1
@@ -136,8 +136,9 @@
2
     }
3
 
4
   // default : null decoder
5
-  printf ("\n using invalid codec for \n");
6
+  printf ("\n using invalid codec for ");
7
   fourCC::print (fcc);
8
+  printf ("\n");
9
 
10
   return (decoders *) (new decoderEmpty(w,h,fcc,extraLen,extraData,bpp));
11
 }
12
avidemux_2.6.18.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_uyvy.cpp -> avidemux_2.6.19.tar.gz/avidemux_core/ADM_coreVideoCodec/src/ADM_uyvy.cpp Changed
12
 
1
@@ -58,8 +58,8 @@
2
   ptr = in->data;
3
   ptr2=ptr+2*_w;
4
   ptrY = YPLANE(out);
5
-  ptrU = VPLANE(out);
6
-  ptrV = UPLANE(out);
7
+  ptrU = UPLANE(out);
8
+  ptrV = VPLANE(out);
9
   int sy=out->GetPitch(PLANAR_Y);
10
   int su=out->GetPitch(PLANAR_U);
11
   int sv=out->GetPitch(PLANAR_V);
12
avidemux_2.6.18.tar.gz/avidemux_core/corePackageDebian.cmake -> avidemux_2.6.19.tar.gz/avidemux_core/corePackageDebian.cmake Changed
10
 
1
@@ -5,7 +5,7 @@
2
 
3
 SET(CPACK_DEBIAN_PACKAGE_NAME        "avidemux3-core")
4
 SET(CPACK_DEBIAN_PACKAGE_DESCRIPTION "Simple video editor,core libraries")
5
-SET(DEPS "libc6 (>=2.4),libstdc++6 (>=4.2.1),libx11-6,  libxv1, zlib1g (>=1:1.1.4), pkg-config, libpng12-0, libsqlite3-0 (>=3.8.0) ")
6
+SET(DEPS "libc6 (>=2.4), libstdc++6 (>=4.2.1), libx11-6, libxv1, zlib1g (>=1:1.1.4), pkg-config, libpng12-0 | libpng16-16, libsqlite3-0 (>=3.8.0)")
7
 # Add optional DEPS here
8
 SET(CPACK_DEBIAN_PACKAGE_DEPENDS "${DEPS}")
9
 #
10
avidemux_2.6.19.tar.gz/avidemux_core/ffmpeg_package/ffmpeg-3.0.7.tar.bz2 Added
avidemux_2.6.19.tar.gz/avidemux_core/ffmpeg_package/patches/libavcodec_hevc_parser.c.patch Added
101
 
1
@@ -0,0 +1,99 @@
2
+--- libavcodec/hevc_parser.c.org   2017-01-30 07:50:12.779173809 +0100
3
++++ libavcodec/hevc_parser.c   2017-01-30 07:43:40.491714104 +0100
4
+@@ -25,6 +25,11 @@
5
+ #include "golomb.h"
6
+ #include "hevc.h"
7
+ #include "parser.h"
8
++/* MEANX */
9
++HEVCSPS *ff_hevc_parser_get_sps(AVCodecParserContext *s);
10
++HEVCPPS *ff_hevc_parser_get_pps(AVCodecParserContext *s);
11
++HEVCVPS *ff_hevc_parser_get_vps(AVCodecParserContext *s);
12
++/* /MEANX */
13
+ 
14
+ #define START_CODE 0x000001 ///< start_code_prefix_one_3bytes
15
+ 
16
+@@ -46,7 +51,7 @@
17
+ } HEVCParserContext;
18
+ 
19
+ #if !ADVANCED_PARSER
20
+-static int hevc_parse_slice_header(AVCodecParserContext *s, HEVCNAL *nal,
21
++int hevc_parse_slice_header(AVCodecParserContext *s, HEVCNAL *nal,
22
+                                    AVCodecContext *avctx)
23
+ {
24
+     HEVCParserContext *ctx = s->priv_data;
25
+@@ -81,7 +86,6 @@
26
+ 
27
+     return 0;
28
+ }
29
+-
30
+ static int parse_nal_units(AVCodecParserContext *s, const uint8_t *buf,
31
+                            int buf_size, AVCodecContext *avctx)
32
+ {
33
+@@ -128,7 +132,6 @@
34
+     return 0;
35
+ }
36
+ #endif
37
+-
38
+ /**
39
+  * Find the end of the current frame in the bitstream.
40
+  * @return the position of the first byte of the next frame, or END_NOT_FOUND
41
+@@ -174,6 +177,59 @@
42
+ 
43
+ #if ADVANCED_PARSER
44
+ /**
45
++ \fn ff_hevc_parser_get_sps
46
++\brief meanx : extract sps from context
47
++*/
48
++HEVCSPS *ff_hevc_parser_get_sps(AVCodecParserContext *s)
49
++{
50
++      int i;
51
++      HEVCParserContext *ctx = s->priv_data;
52
++      if(!ctx) return NULL;
53
++      HEVCContext       *h   = &ctx->h;
54
++      if(!h) return NULL;
55
++      HEVCParamSets     *ps = &h->ps;
56
++      if(!ps) return NULL;
57
++
58
++     HEVCSPS *sps = ps->sps;
59
++     return sps;
60
++}
61
++/**
62
++ \fn ff_hevc_parser_get_sps
63
++\brief meanx : extract sps from context
64
++*/
65
++HEVCPPS *ff_hevc_parser_get_pps(AVCodecParserContext *s)
66
++{
67
++      int i;
68
++      HEVCParserContext *ctx = s->priv_data;
69
++      if(!ctx) return NULL;
70
++      HEVCContext       *h   = &ctx->h;
71
++      if(!h) return NULL;
72
++      HEVCParamSets     *ps = &h->ps;
73
++      if(!ps) return NULL;
74
++
75
++     HEVCPPS *pps = ps->pps;
76
++     return pps;
77
++}
78
++/**
79
++ \fn ff_hevc_parser_get_sps
80
++\brief meanx : extract sps from context
81
++*/
82
++HEVCVPS *ff_hevc_parser_get_vps(AVCodecParserContext *s)
83
++{
84
++      int i;
85
++      HEVCParserContext *ctx = s->priv_data;
86
++      if(!ctx) return NULL;
87
++      HEVCContext       *h   = &ctx->h;
88
++      if(!h) return NULL;
89
++      HEVCParamSets     *ps = &h->ps;
90
++      if(!ps) return NULL;
91
++
92
++     HEVCVPS *vps = ps->vps;
93
++     return vps;
94
++}
95
++// /MEANX
96
++
97
++/**
98
+  * Parse NAL units of found picture and decode some basic information.
99
+  *
100
+  * @param s parser context.
101
avidemux_2.6.18.tar.gz/avidemux_core/ffmpeg_package/patches/libavcodec_libavcodec.v.patch -> avidemux_2.6.19.tar.gz/avidemux_core/ffmpeg_package/patches/libavcodec_libavcodec.v.patch Changed
26
 
1
@@ -1,15 +1,14 @@
2
-diff --git libavcodec/libavcodec.v libavcodec/libavcodec.v
3
-index c923cd3..84223d8 100644
4
---- libavcodec/libavcodec.v
5
-+++ libavcodec/libavcodec.v
6
-@@ -3,5 +3,10 @@ LIBAVCODEC_$MAJOR {
7
+--- libavcodec/libavcodec.v.org    2017-01-30 07:50:27.523153755 +0100
8
++++ libavcodec/libavcodec.v    2017-01-30 07:43:55.783688107 +0100
9
+@@ -3,5 +3,11 @@
10
                  #deprecated, remove after next bump
11
                  audio_resample;
12
                  audio_resample_close;
13
-+                # Avidemux
14
-+                ff_h264_info;
15
-+                ff_golomb_vlc_len;
16
-+                ff_ue_golomb_vlc_code;
17
-+                ff_se_golomb_vlc_code;
18
++  # Avidemux
19
++        ff_h264_info;
20
++        ff_golomb_vlc_len;
21
++        ff_ue_golomb_vlc_code;
22
++        ff_se_golomb_vlc_code;
23
++        ff_hevc_parser_get_*; 
24
          local:  *;
25
  };
26
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_faad/ADM_ad_faad.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_faad/ADM_ad_faad.cpp Changed
42
 
1
@@ -95,18 +95,18 @@
2
     ADM_info("[FAAD] using %u bytes of extradata\n",l);
3
     if(l)
4
     {
5
-        for(int i=0;i<l;i++) ADM_info("%02x ",d[i]);
6
-        ADM_info("\n");
7
+        for(int i=0;i<l;i++) printf("%02x ",d[i]);
8
+        printf("\n");
9
     }
10
     // if we have some extra data, it means we can init it from it
11
     if(l)
12
     {
13
         
14
         faacDecInit2(_instance, d,l, &srate,&chan);
15
-        ADM_info("[FAAD]Found :%" PRIu32" rate %" PRIu32" channels\n",(uint32_t)srate,(uint32_t)chan);
16
+        ADM_info("[FAAD] Found :%" PRIu32" rate %" PRIu32" channels\n",(uint32_t)srate,(uint32_t)chan);
17
         if(srate!=info->frequency)
18
         {
19
-            ADM_info("[FAAD]Frequency mismatch!!! %d to %" PRIu32" (SBR ?)\n",info->frequency,(uint32_t)srate);
20
+            ADM_info("[FAAD] Frequency mismatch!!! %d to %" PRIu32" (SBR ?)\n",info->frequency,(uint32_t)srate);
21
             if(srate==2*info->frequency)
22
             {
23
                 ADM_info("Sbr detected\n");
24
@@ -117,7 +117,7 @@
25
         }
26
         if(chan!=info->channels) // Ask for stereo !
27
         {
28
-            ADM_info("[FAAD]channel mismatch!!! %d to %d \n",info->channels,chan);
29
+            ADM_info("[FAAD] Channel mismatch!!! %d to %d \n",info->channels,chan);
30
             if(info->channels==1 && chan==2) 
31
             {
32
                     ADM_warning("Workaround Faad mono stream handling... \n");
33
@@ -171,7 +171,7 @@
34
                 break;
35
         }
36
 
37
-       ADM_info("[FAAD]Faad decoder created\n");
38
+       ADM_info("[FAAD] Faad decoder created\n");
39
 }
40
 /**
41
     \fn dtor
42
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_lav/ADM_ad_lav.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_lav/ADM_ad_lav.cpp Changed
9
 
1
@@ -205,7 +205,6 @@
2
 
3
     ADM_info("[ADM_AD_LAV] Using %d bytes of extra header data, %d channels\n", _context->extradata_size,_context->channels);
4
     mixDump((uint8_t *)_context->extradata,_context->extradata_size);
5
-    ADM_info("\n");
6
     
7
     if (avcodec_open2(_context, codec, NULL) < 0)
8
     {
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_vorbis/ADM_ad_vorbis.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioDecoders/ADM_ad_vorbis/ADM_ad_vorbis.cpp Changed
9
 
1
@@ -81,7 +81,6 @@
2
  {
3
      ADM_warning(" sending %s packet of size %d\n",name,pack->bytes);
4
      mixDump(pack->packet,pack->bytes);
5
-     ADM_warning("\n");
6
  }
7
  /**
8
   * 
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioDevices/PulseAudioSimple/ADM_devicePulseSimple.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioDevices/PulseAudioSimple/ADM_devicePulseSimple.h Changed
10
 
1
@@ -27,7 +27,7 @@
2
          virtual const CHANNEL_TYPE *getWantedChannelMapping(uint32_t channels);
3
       public:
4
                 pulseSimpleAudioDevice(void);
5
-                
6
+                bool     hasVolumeControl(void) { return false; }
7
                 uint32_t getLatencyMs(void);
8
      }     ;
9
 #endif
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_aac.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_aac.cpp Changed
23
 
1
@@ -10,5 +10,20 @@
2
 #define ADM_LAV_SAMPLE_PER_P 1024
3
 
4
 #define ADM_LAV_GLOBAL_HEADER 1
5
-#include "audioencoder_lavcodec.cpp"
6
 
7
+#define MENU_BITRATE     diaMenuEntry bitrateM[]={\
8
+                              BITRATE(56),\
9
+                              BITRATE(64),\
10
+                              BITRATE(80),\
11
+                              BITRATE(96),\
12
+                              BITRATE(112),\
13
+                              BITRATE(128),\
14
+                              BITRATE(160),\
15
+                              BITRATE(192),\
16
+                              BITRATE(224),\
17
+                              BITRATE(384),\
18
+                              BITRATE(448),\
19
+                              BITRATE(640)\
20
+                          };
21
+
22
+#include "audioencoder_lavcodec.cpp"
23
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_ac3.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_ac3.cpp Changed
21
 
1
@@ -9,4 +9,19 @@
2
 #define ADM_LAV_MAX_CHANNEL 6
3
 #define ADM_LAV_SAMPLE_PER_P 1536
4
 
5
+#define MENU_BITRATE     diaMenuEntry bitrateM[]={\
6
+                              BITRATE(56),\
7
+                              BITRATE(64),\
8
+                              BITRATE(80),\
9
+                              BITRATE(96),\
10
+                              BITRATE(112),\
11
+                              BITRATE(128),\
12
+                              BITRATE(160),\
13
+                              BITRATE(192),\
14
+                              BITRATE(224),\
15
+                              BITRATE(384),\
16
+                              BITRATE(448),\
17
+                              BITRATE(640)\
18
+                          };
19
+
20
 #include "audioencoder_lavcodec.cpp"
21
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_dts.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_dts.cpp Changed
21
 
1
@@ -9,4 +9,19 @@
2
 #define ADM_LAV_MAX_CHANNEL 6
3
 #define ADM_LAV_SAMPLE_PER_P 1536
4
 
5
+#define MENU_BITRATE     diaMenuEntry bitrateM[]={\
6
+                              BITRATE(56),\
7
+                              BITRATE(64),\
8
+                              BITRATE(80),\
9
+                              BITRATE(96),\
10
+                              BITRATE(112),\
11
+                              BITRATE(128),\
12
+                              BITRATE(160),\
13
+                              BITRATE(192),\
14
+                              BITRATE(224),\
15
+                              BITRATE(384),\
16
+                              BITRATE(448),\
17
+                              BITRATE(640)\
18
+                          };
19
+
20
 #include "audioencoder_lavcodec.cpp"
21
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_mp2.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/ADM_lav_mp2.cpp Changed
19
 
1
@@ -9,5 +9,17 @@
2
 #define ADM_LAV_MAX_CHANNEL 6
3
 #define ADM_LAV_SAMPLE_PER_P 1152
4
 
5
+#define MENU_BITRATE     diaMenuEntry bitrateM[]={\
6
+                              BITRATE(56),\
7
+                              BITRATE(64),\
8
+                              BITRATE(80),\
9
+                              BITRATE(96),\
10
+                              BITRATE(112),\
11
+                              BITRATE(128),\
12
+                              BITRATE(160),\
13
+                              BITRATE(192),\
14
+                              BITRATE(224),\
15
+                              BITRATE(384)\
16
+                          };
17
 
18
 #include "audioencoder_lavcodec.cpp"
19
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/audioencoder_lavcodec.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_audioEncoders/lavcodec/audioencoder_lavcodec.cpp Changed
22
 
1
@@ -514,19 +514,7 @@
2
         ADM_paramLoad(*setup,lav_encoder_param,&config);
3
     }
4
 
5
-    diaMenuEntry bitrateM[]={
6
-                              BITRATE(56),
7
-                              BITRATE(64),
8
-                              BITRATE(80),
9
-                              BITRATE(96),
10
-                              BITRATE(112),
11
-                              BITRATE(128),
12
-                              BITRATE(160),
13
-                              BITRATE(192),
14
-                              BITRATE(224),
15
-                              BITRATE(384),
16
-                              BITRATE(448)
17
-                          };
18
+    MENU_BITRATE
19
     diaElemMenu bitrate(&(config.bitrate),   QT_TRANSLATE_NOOP("lavcodec","_Bitrate:"), SZT(bitrateM),bitrateM);
20
 
21
 
22
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flv.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flv.cpp Changed
80
 
1
@@ -365,7 +365,8 @@
2
 
3
 uint8_t flvHeader::open(const char *name)
4
 {
5
-  uint32_t prevLen, type, size, dts,pos=0;
6
+  uint32_t prevLen, type, size, dts;
7
+  uint64_t pos=0;
8
   bool firstVideo=true;
9
   _isvideopresent=0;
10
   _isaudiopresent=0;
11
@@ -380,11 +381,11 @@
12
     return 0;
13
   }
14
   // Get size
15
-  uint32_t fileSize=0;
16
+  uint64_t fileSize=0;
17
   fseeko(_fd,0,SEEK_END);
18
   fileSize=ftello(_fd);
19
   fseeko(_fd,0,SEEK_SET);
20
-  printf("[FLV] file size :%u bytes\n",fileSize);
21
+  printf("[FLV] file size :%" PRIu64 " bytes\n",fileSize);
22
   // It must begin by F L V 01
23
   uint8_t four[4];
24
 
25
@@ -417,7 +418,7 @@
26
   fseeko(_fd,skip,SEEK_SET);
27
   printf("[FLV] Skipping %u header bytes\n",skip);
28
   pos=ftello(_fd);;
29
-  printf("pos:%u/%u\n",pos,fileSize);
30
+  printf("pos:%" PRIu64 "/%" PRIu64 "\n",pos,fileSize);
31
   // Create our video index
32
   videoTrack=new flvTrak(50);
33
   if(_isaudiopresent)
34
@@ -435,7 +436,8 @@
35
     type=read8();
36
     size=read24();
37
     dts=read24();
38
-    read32(); // ???
39
+    dts|=((uint32_t)read8())<<24;
40
+    read24(); // StreamID, always 0
41
     aprintf("--------\n");
42
     aprintf("prevLen=%d\n",(int)prevLen);
43
     aprintf("type  =%d\n",(int)type);
44
@@ -443,7 +445,7 @@
45
     aprintf("dts   =%d\n",(int)dts);
46
     if(!size) continue;
47
     uint32_t remaining=size;
48
-    //printf("[FLV] At %08x found type %x size %u pts%u\n",pos,type,size,dts);
49
+    //printf("[FLV] At %08" PRIu64 " found type %x size %u pts%u\n",pos,type,size,dts);
50
     switch(type)
51
     {
52
       case FLV_TAG_TYPE_AUDIO:
53
@@ -512,7 +514,7 @@
54
                 insertVideo(ftello(_fd),remaining,frameType,dts,pts);
55
           }
56
            break;
57
-      default: printf("[FLV]At 0x%x, unhandled type %u\n",pos,type);
58
+      default: printf("[FLV]At 0x%" PRIx64 ", unhandled type %u\n",pos,type);
59
     }
60
     Skip(remaining);
61
   } // while
62
@@ -720,7 +722,7 @@
63
       \fn insertVideo
64
       \brief add a frame to the index, grow the index if needed
65
 */
66
-uint8_t flvHeader::insertVideo(uint32_t pos,uint32_t size,uint32_t frameType,uint32_t dts,uint32_t pts)
67
+uint8_t flvHeader::insertVideo(uint64_t pos,uint32_t size,uint32_t frameType,uint32_t dts,uint32_t pts)
68
 {
69
     videoTrack->grow();
70
     flvIndex *x=&(videoTrack->_index[videoTrack->_nbIndex]);
71
@@ -745,7 +747,7 @@
72
       \fn insertVideo
73
       \brief add a frame to the index, grow the index if needed
74
 */
75
-uint8_t flvHeader::insertAudio(uint32_t pos,uint32_t size,uint32_t pts)
76
+uint8_t flvHeader::insertAudio(uint64_t pos,uint32_t size,uint32_t pts)
77
 {
78
     audioTrack->grow();
79
     flvIndex *x=&(audioTrack->_index[audioTrack->_nbIndex]);
80
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flv.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flv.h Changed
12
 
1
@@ -111,8 +111,8 @@
2
     uint32_t    read24(void);
3
     uint32_t    read32(void);
4
     uint8_t     Skip(uint32_t len);
5
-    uint8_t     insertVideo(uint32_t pos,uint32_t size,uint32_t frameType,uint32_t dts,uint32_t pts);
6
-    uint8_t     insertAudio(uint32_t pos,uint32_t size,uint32_t pts);
7
+    uint8_t     insertVideo(uint64_t pos,uint32_t size,uint32_t frameType,uint32_t dts,uint32_t pts);
8
+    uint8_t     insertAudio(uint64_t pos,uint32_t size,uint32_t pts);
9
     uint8_t     setAudioHeader(uint32_t format,uint32_t fq,uint32_t bps,uint32_t channels);
10
     uint8_t     setVideoHeader(uint8_t codec,uint32_t *remaining);
11
     bool        extraHeader(flvTrak *trk,uint32_t *remain,bool haveCts,int32_t *cts);
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flvAudio.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Flv/ADM_flvAudio.cpp Changed
12
 
1
@@ -79,8 +79,8 @@
2
 bool      ADM_flvAccess::goToTime(uint64_t timeUs)
3
 {
4
 
5
-uint32_t target=(timeUs);;
6
-uint32_t mstime=target;
7
+uint64_t target=timeUs;
8
+uint64_t mstime=target;
9
 uint32_t _nbClusters=_track->_nbIndex;
10
 
11
       // First identify the cluster...
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkv.cpp Changed
98
 
1
@@ -20,6 +20,7 @@
2
 #include "ADM_codecType.h"
3
 #include "mkv_tags.h"
4
 #include "ADM_audioXiphUtils.h"
5
+#include "ADM_vidMisc.h"
6
 
7
 /**
8
     \fn open
9
@@ -175,7 +176,7 @@
10
         }
11
         if(enforePtsGreaterThanDts)
12
         {
13
-                ADM_info("Have to delay by %" PRIu32" ms so that PTS>DTS\n",enforePtsGreaterThanDts);
14
+                ADM_info("Have to delay by %" PRIu64" us so that PTS>DTS\n",enforePtsGreaterThanDts);
15
                 for(int i=0;i<_nbAudioTrack+1;i++)
16
                 delayTrack(i,&(_tracks[i]),enforePtsGreaterThanDts);
17
         }
18
@@ -216,7 +217,6 @@
19
         _audioStreams[i]=ADM_audioCreateStream(&(_tracks[1+i].wavHeader), _access[i]);;
20
         _audioStreams[i]->setLanguage(_tracks[1+i].language);
21
     }
22
-  //dumpVideoIndex(200);
23
   printf("[MKV]Matroska successfully read\n");
24
   return 1;
25
 }
26
@@ -250,6 +250,10 @@
27
     int64_t delta,maxDelta=0;
28
     int64_t minDelta=100000000;
29
     *bFramePresent=false;
30
+    int nbValidDts=0;
31
+   
32
+    
33
+    
34
     if(nb>1)
35
     {
36
         bool monotone=true;
37
@@ -272,31 +276,38 @@
38
             ADM_info("PTS is not monotonous, there are bframe\n");
39
             *bFramePresent=true;
40
         }
41
-    }
42
-
43
-    if(nb>1)
44
-    {
45
         // Search minimum and maximum between 2 frames
46
         // the minimum will give us the maximum fps
47
         // the maximum will give us the max PTS-DTS delta so that we can compute DTS
48
         for(int i=0;i<nb-1;i++) 
49
         {
50
+            if(track->index[i].Dts!=ADM_NO_PTS)
51
+                nbValidDts++;
52
             if(track->index[i].flags==AVI_B_FRAME) nbBFrame++;
53
             if(track->index[i+1].Pts==ADM_NO_PTS || track->index[i].Pts==ADM_NO_PTS)
54
                 continue;
55
+            
56
             delta=(int64_t)track->index[i+1].Pts-(int64_t)track->index[i].Pts;
57
             if(delta<0) delta=-delta;
58
+            if(!delta)
59
+            {
60
+                ADM_warning("Duplicate PTS...(%d and %d,size=%d %d)\n",i,i+1,track->index[i].size,track->index[i+1].size);
61
+                continue;
62
+            }
63
             if(delta<minDelta) minDelta=delta;
64
             if(delta>maxDelta) maxDelta=delta;
65
             //printf("\/=%" PRId64" Min %" PRId64" MAX %" PRId64"\n",delta,minDelta,maxDelta);
66
         }
67
     }
68
     if(nbBFrame) *bFramePresent=true;
69
+       
70
+    
71
     ADM_info("Minimum delta found %" PRId64" us\n",minDelta);
72
     ADM_info("Maximum delta found %" PRId64" us\n",maxDelta);
73
+    ADM_info("Default duration    %" PRId64" us\n",track->_defaultFrameDuration);
74
     if(minDelta)
75
     {
76
-        if(minDelta<track->_defaultFrameDuration && labs((long int)minDelta-(long int)track->_defaultFrameDuration)>1000)
77
+        if(minDelta<track->_defaultFrameDuration && labs((long int)minDelta-(long int)track->_defaultFrameDuration)>100)
78
         {
79
             ADM_info("Changing default frame duration from %" PRIu64" to %" PRIu64" us\n",
80
                     track->_defaultFrameDuration,minDelta);
81
@@ -313,6 +324,16 @@
82
 
83
     }
84
     ADM_info("First frame pts     %" PRId64" us\n",track->index[0].Pts);
85
+    
86
+    if(nbValidDts<3)
87
+    {
88
+            ADM_warning("Not enough valid DTS\n");
89
+            *minDeltaX=minDelta;
90
+            *maxDeltaX=0;
91
+            return false;
92
+    }
93
+    
94
+    
95
     uint64_t adj=0;
96
     int limit=32;
97
     if(limit>nb) limit=nb;
98
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvEntries.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Matroska/ADM_mkvEntries.cpp Changed
18
 
1
@@ -220,7 +220,6 @@
2
                 memcpy(_tracks[0].extraData,entry.extraData +sizeof(ADM_BITMAPINFOHEADER),l);
3
                 ADM_info("VFW Header+%d bytes of extradata\n",l);   
4
                 mixDump(_tracks[0].extraData,l);
5
-                printf("\n");
6
           }
7
           delete [] entry.extraData;
8
           entry.extraData=NULL;
9
@@ -258,7 +257,7 @@
10
             ADM_info("Found ACM compatibility header (%d / %d)\n",l,wavSize);
11
             if(l>=wavSize) // we need at least a wavheader
12
             {
13
-                mixDump(entry.extraData,l); printf("\n");
14
+                mixDump(entry.extraData,l);
15
                 memcpy(&(t->wavHeader),entry.extraData,wavSize);
16
                 ADM_info("Encoding : %d\n",t->wavHeader.encoding);
17
                 int x=l-wavSize;
18
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Analyzer.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Analyzer.cpp Changed
10
 
1
@@ -880,7 +880,7 @@
2
                                             mixDump(VDEO.extraData+offset,len);
3
 
4
                                             offset=8+len;
5
-                                            printf("\navcC numOfPictureParSets  :%x\n", MKD8(offset++));
6
+                                            printf("avcC numOfPictureParSets  :%x\n", MKD8(offset++));
7
                                             len=MKD16(offset);
8
                                             offset++;
9
                                             printf("avcC Pic len              :%x\n",len);
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Indexer.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/Mp4/ADM_mp4Indexer.cpp Changed
9
 
1
@@ -219,6 +219,7 @@
2
       {
3
         default:break;
4
         case WAV_PCM: // wtf ?
5
+        case WAV_LPCM: // wtf ?
6
         case WAV_ULAW: // Wtf ?
7
         case WAV_IMAADPCM:
8
         case WAV_MSADPCM:
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsAudio.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsAudio.cpp Changed
9
 
1
@@ -53,7 +53,6 @@
2
             memcpy(extraData,myExtra,extraDataLen);
3
             ADM_info("Creating ts audio access with %d bytes of extradata.",myLen);
4
             mixDump(extraData,extraDataLen);
5
-            ADM_info("\n");
6
         }
7
 }
8
 
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsBruteForce.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsBruteForce.cpp Changed
41
 
1
@@ -170,6 +170,7 @@
2
     int threshold=3;
3
     int nbSuccessMpeg2=0;
4
     int nbSuccessH264=0;
5
+    int nbSuccessH265=0;
6
     for(int i=0;i<nbTry;i++)
7
     {
8
         TS_PESpacket pes(pid);
9
@@ -185,11 +186,17 @@
10
         {
11
             ADM_warning("Found startcode1 =%x\n",scode);
12
         }else continue;
13
+        printf("Scode %x\n",scode);
14
         if(scode==9) // AU delimiter => H264
15
         {
16
             nbSuccessH264++;
17
             continue;
18
         }
19
+        if(scode==0x46)
20
+        {
21
+            nbSuccessH265++;
22
+            continue;
23
+        }
24
         if(mpeg2StartCode(scode))
25
         {
26
             nbSuccessMpeg2++;
27
@@ -202,6 +209,13 @@
28
         ADM_warning("Probably H264\n");
29
         return true;
30
     }
31
+    if(nbSuccessH265>=threshold)
32
+    {
33
+        trackType=ADM_TS_H265;
34
+        ADM_warning("Probably H265\n");
35
+        return true;
36
+    }
37
+    
38
     if(nbSuccessMpeg2>=threshold)
39
     {
40
         trackType=ADM_TS_MPEG2;
41
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.cpp Changed
135
 
1
@@ -80,23 +80,35 @@
2
     delete p;
3
     printf("[TsIndexer] Audio probed, %d found, doing video\n",(int)audioTrack.size());
4
     //
5
-    TsIndexer *dx=new TsIndexer(&audioTrack);
6
+    TsIndexerBase *dx=NULL;
7
     switch(tracks[0].trackType)
8
     {
9
             case ADM_TS_MPEG2: 
10
-                            r=dx->runMpeg2(file,&(tracks[0]));
11
+                            dx=new TsIndexerMpeg2(&audioTrack);
12
                             break;
13
             case ADM_TS_VC1: 
14
-                            r=dx->runVC1(file,&(tracks[0]));
15
+                            dx=new TsIndexerVC1(&audioTrack);
16
+                            break;
17
+            case ADM_TS_H265: 
18
+                            dx=new TsIndexerH265(&audioTrack);
19
                             break;
20
             case ADM_TS_H264: 
21
-                            r=dx->runH264(file,&(tracks[0]));
22
+                            dx=new TsIndexerH264(&audioTrack);
23
                             break;
24
             default:
25
                         r=0;
26
                         break;
27
     }
28
-    delete dx;
29
+    if(!dx)
30
+    {
31
+        ADM_warning("Unsupported video codec \n");
32
+        r=false;
33
+    }else
34
+    {
35
+        r=dx->run( file,&(tracks[0]));
36
+        delete dx;
37
+        dx=NULL;
38
+    }
39
     delete [] tracks;
40
     return r;
41
 }
42
@@ -104,9 +116,9 @@
43
 /**
44
     \fn TsIndexer
45
 */
46
-TsIndexer::TsIndexer(listOfTsAudioTracks *trk)
47
+TsIndexerBase::TsIndexerBase(listOfTsAudioTracks *trk)
48
 {
49
-    memset(&spsInfo,0,sizeof(spsInfo));
50
+
51
     index=NULL;
52
     pkt=NULL;
53
     audioTracks=NULL;
54
@@ -119,7 +131,7 @@
55
 /**
56
     \fn ~TsIndexer
57
 */
58
-TsIndexer::~TsIndexer()
59
+TsIndexerBase::~TsIndexerBase()
60
 {
61
     if(index) qfclose(index);
62
     if(pkt) delete pkt;
63
@@ -130,7 +142,7 @@
64
     \fn updateUI
65
  *  \brief return false if abort is needed
66
 */
67
-bool  TsIndexer::updateUI(void)
68
+bool  TsIndexerBase::updateUI(void)
69
 {
70
     int p=++processedThisRound;
71
         processedThisRound=0;
72
@@ -141,7 +153,7 @@
73
     \fn writeVideo
74
     \brief Write Video section of index file
75
 */
76
-bool TsIndexer::writeVideo(TSVideo *video,ADM_TS_TRACK_TYPE trkType)
77
+bool TsIndexerBase::writeVideo(TSVideo *video,ADM_TS_TRACK_TYPE trkType)
78
 {
79
     qfprintf(index,"[Video]\n");
80
     qfprintf(index,"Width=%d\n",video->w);
81
@@ -161,6 +173,7 @@
82
     {
83
         case ADM_TS_MPEG2: qfprintf(index,"VideoCodec=Mpeg2\n");break;;
84
         case ADM_TS_H264:  qfprintf(index,"VideoCodec=H264\n");break;
85
+        case ADM_TS_H265:  qfprintf(index,"VideoCodec=H265\n");break;
86
         case ADM_TS_VC1:   qfprintf(index,"VideoCodec=VC1\n");break;
87
         default: printf("[TsIndexer] Unsupported video codec\n");return false;
88
 
89
@@ -171,7 +184,7 @@
90
     \fn writeSystem
91
     \brief Write system part of index file
92
 */
93
-bool TsIndexer::writeSystem(const char *filename,bool append)
94
+bool TsIndexerBase::writeSystem(const char *filename,bool append)
95
 {
96
     qfprintf(index,"PSD1\n");
97
     qfprintf(index,"[System]\n");
98
@@ -185,7 +198,7 @@
99
     \fn     writeAudio
100
     \brief  Write audio headers
101
 */
102
-bool TsIndexer::writeAudio(void)
103
+bool TsIndexerBase::writeAudio(void)
104
 {
105
     if(!audioTracks) return false;
106
     qfprintf(index,"[Audio]\n");
107
@@ -218,7 +231,7 @@
108
 /**
109
     \fn dumpUnits
110
 */
111
-bool TsIndexer::dumpUnits(indexerData &data,uint64_t nextConsumed,const dmxPacketInfo *nextPacket)
112
+bool TsIndexerBase::dumpUnits(indexerData &data,uint64_t nextConsumed,const dmxPacketInfo *nextPacket)
113
 {
114
         // if it contain a SPS or a intra/idr, we start a new line
115
         bool mustFlush=false;
116
@@ -284,6 +297,9 @@
117
 
118
         qfprintf(index," %c%c",Type[picUnit->imageType],Structure[pictStruct&3]);
119
         int32_t delta=(int32_t)(nextConsumed-beginConsuming);
120
+        
121
+    //    printf("%d -- %d = %d\n",nextConsumed, beginConsuming,delta);
122
+        
123
         qfprintf(index,":%06" PRIx32,delta);
124
         qfprintf(index,":%" PRId64":%" PRId64,deltaPts,deltaDts);
125
     
126
@@ -294,7 +310,7 @@
127
 /**
128
     \fn addUnit
129
 */
130
-bool TsIndexer::addUnit(indexerData &data,int unitType2,const H264Unit &unit,uint32_t overRead)
131
+bool TsIndexerBase::addUnit(indexerData &data,int unitType2,const H264Unit &unit,uint32_t overRead)
132
 {
133
         H264Unit myUnit=unit;
134
         myUnit.unitType=unitType2;
135
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndex.h Changed
201
 
1
@@ -119,6 +119,167 @@
2
 /**
3
     \class TsIndexer
4
 */
5
+class TsIndexerBase
6
+{
7
+protected:
8
+        uint32_t        beginConsuming;
9
+        uint64_t        fullSize;
10
+        vector <H264Unit> listOfUnits;
11
+        H264Unit        thisUnit;
12
+        bool            decodingImage;
13
+        int             processedThisRound;
14
+        
15
+protected:
16
+        FILE                    *index;
17
+        tsPacketLinearTracker   *pkt;
18
+        listOfTsAudioTracks     *audioTracks;
19
+        DIA_processingBase      *gui;        
20
+        bool                    updateUI(void);
21
+        // H264
22
+        bool                    addUnit(indexerData &data,int unitType,const H264Unit &unit,uint32_t overRead);
23
+        bool                    dumpUnits(indexerData &data,uint64_t nextConsumed,const dmxPacketInfo *nextPacket);
24
+public:
25
+                TsIndexerBase(listOfTsAudioTracks *tr);
26
+        virtual ~TsIndexerBase();
27
+virtual bool    run(const char *file,ADM_TS_TRACK *videoTrac)=0;                
28
+        bool    writeVideo(TSVideo *video,ADM_TS_TRACK_TYPE trkType);
29
+        bool    writeAudio(void);
30
+        bool    writeSystem(const char *filename,bool append);
31
+        bool    updatePicStructure(TSVideo &video,const uint32_t t)
32
+                        {
33
+                                            switch(t)
34
+                                            {
35
+                                                case 3: video.frameCount++;
36
+                                                        thisUnit.imageStructure=pictureFrame;
37
+                                                        break;
38
+                                                case 1:  thisUnit.imageStructure=pictureTopField;
39
+                                                         video.fieldCount++;
40
+                                                         break;
41
+                                                case 2:  thisUnit.imageStructure=pictureBottomField;
42
+                                                         video.fieldCount++;
43
+                                                         break;
44
+                                                default: ADM_warning("frame type 0 met, this is illegal\n");
45
+                                            }
46
+                                            return true;
47
+                        }
48
+};
49
+
50
+/**
51
+    \class TsIndexerH264
52
+*/
53
+class TsIndexerH264 : public TsIndexerBase
54
+{
55
+protected:
56
+        bool            findH264SPS(tsPacketLinearTracker *pkt,TSVideo &video);
57
+        
58
+protected:
59
+        ADM_SPSInfo             spsInfo;
60
+        bool                    decodeSEI(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,pictureStructure *nextpicstruct);
61
+        #define                 ADM_NAL_BUFFER_SIZE (2*1024) // only used to decode SEI, should plenty enough
62
+        uint8_t                 payloadBuffer[ADM_NAL_BUFFER_SIZE];
63
+public:
64
+                TsIndexerH264(listOfTsAudioTracks *tr) : TsIndexerBase(tr)
65
+                {
66
+                      memset(&spsInfo,0,sizeof(spsInfo));
67
+                }
68
+                ~TsIndexerH264()
69
+                {
70
+                  
71
+                } 
72
+        bool    run(const char *file,ADM_TS_TRACK *videoTrac);
73
+        bool    updatePicStructure(TSVideo &video,const uint32_t t)
74
+                        {
75
+                                            switch(t)
76
+                                            {
77
+                                                case 3: video.frameCount++;
78
+                                                        thisUnit.imageStructure=pictureFrame;
79
+                                                        break;
80
+                                                case 1:  thisUnit.imageStructure=pictureTopField;
81
+                                                         video.fieldCount++;
82
+                                                         break;
83
+                                                case 2:  thisUnit.imageStructure=pictureBottomField;
84
+                                                         video.fieldCount++;
85
+                                                         break;
86
+                                                default: ADM_warning("frame type 0 met, this is illegal\n");
87
+                                            }
88
+                                            return true;
89
+                        }
90
+};
91
+
92
+class TsIndexerVC1: public TsIndexerBase
93
+{
94
+protected:
95
+        VC1Context      vc1Context;
96
+        
97
+protected:
98
+        bool            decodeVC1Seq(tsGetBits &bits,TSVideo &video);
99
+        bool            decodeVC1Pic(tsGetBits &bits,uint32_t &frameType,uint32_t &frameStructure);
100
+public:
101
+                        ~TsIndexerVC1()
102
+                        {
103
+                          
104
+                        }
105
+        bool            run(const char *file,ADM_TS_TRACK *videoTrac);
106
+                        TsIndexerVC1(listOfTsAudioTracks *tr) : TsIndexerBase(tr)
107
+                        {
108
+
109
+                        }
110
+};
111
+//--
112
+/**
113
+*
114
+    \class TsIndexerH264
115
+*/
116
+class TsIndexerMpeg2 : public TsIndexerBase
117
+{
118
+protected:
119
+
120
+public:
121
+                ~TsIndexerMpeg2()
122
+                {
123
+                  
124
+                }
125
+        bool    run(const char *file,ADM_TS_TRACK *videoTrac);
126
+                TsIndexerMpeg2(listOfTsAudioTracks *tr) : TsIndexerBase(tr)
127
+                {
128
+
129
+                }
130
+       
131
+};
132
+//--
133
+/**
134
+*
135
+    \class TsIndexerH264
136
+*/
137
+class TsIndexerH265 : public TsIndexerBase
138
+{
139
+protected:
140
+        ADM_SPSinfoH265 info;
141
+        
142
+        bool            findH265VPS(tsPacketLinearTracker *pkt,TSVideo &video);
143
+        bool            decodeH265SPS(tsPacketLinearTracker *pkt);
144
+        int             decodePictureTypeH265(int nalType,getBits &bits) ;     
145
+        bool            decodeSEIH265(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,   pictureStructure *picStruct);
146
+        
147
+protected:
148
+public:
149
+                ~TsIndexerH265()
150
+                {
151
+                  
152
+                }
153
+        bool    run(const char *file,ADM_TS_TRACK *videoTrac);
154
+                TsIndexerH265(listOfTsAudioTracks *tr) : TsIndexerBase(tr)
155
+                {
156
+
157
+                }
158
+        
159
+};
160
+//---
161
+#if 0
162
+/**
163
+*
164
+    \class TsIndexerH264
165
+*/
166
 class TsIndexer
167
 {
168
 protected:
169
@@ -129,6 +290,13 @@
170
         H264Unit        thisUnit;
171
         bool            decodingImage;
172
         int             processedThisRound;
173
+        ADM_SPSinfoH265 info;
174
+        
175
+        bool            findH264SPS(tsPacketLinearTracker *pkt,TSVideo &video);
176
+        bool            findH265VPS(tsPacketLinearTracker *pkt,TSVideo &video);
177
+        bool            decodeH265SPS(tsPacketLinearTracker *pkt);
178
+        int             decodePictureTypeH265(int nalType,getBits &bits) ;       
179
+        
180
 protected:
181
         FILE                    *index;
182
         tsPacketLinearTracker   *pkt;
183
@@ -137,6 +305,7 @@
184
         ADM_SPSInfo             spsInfo;
185
         bool                    updateUI(void);
186
         bool                    decodeSEI(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,pictureStructure *nextpicstruct);
187
+        bool                    decodeSEIH265(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,pictureStructure *nextpicstruct);
188
         bool                    decodeVC1Seq(tsGetBits &bits,TSVideo &video);
189
         bool                    decodeVC1Pic(tsGetBits &bits,uint32_t &frameType,uint32_t &frameStructure);
190
         // H264
191
@@ -149,6 +318,7 @@
192
                 ~TsIndexer();
193
         bool    runMpeg2(const char *file,ADM_TS_TRACK *videoTrac);
194
         bool    runH264(const char *file,ADM_TS_TRACK *videoTrac);
195
+        bool    runH265(const char *file,ADM_TS_TRACK *videoTrac);
196
         bool    runVC1(const char *file,ADM_TS_TRACK *videoTrac);
197
         bool    writeVideo(TSVideo *video,ADM_TS_TRACK_TYPE trkType);
198
         bool    writeAudio(void);
199
@@ -171,6 +341,7 @@
200
                                             return true;
201
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH264.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH264.cpp Changed
174
 
1
@@ -23,7 +23,7 @@
2
         @param recoveryLength # of recovery frame
3
         \return true if recovery found
4
 */
5
-bool TsIndexer::decodeSEI(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,
6
+bool TsIndexerH264::decodeSEI(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,
7
                 pictureStructure *picStruct)
8
 {
9
     if(nalSize+16>=ADM_NAL_BUFFER_SIZE)
10
@@ -73,21 +73,81 @@
11
     //if(payload+1<tail) ADM_warning("Bytes left in SEI %d\n",(int)(tail-payload));
12
     return r;
13
 }
14
+/**
15
+ * \fn findH264SPS
16
+ * @return 
17
+ */
18
+bool TsIndexerH264::findH264SPS(tsPacketLinearTracker *pkt,TSVideo &video)
19
+{
20
+    dmxPacketInfo tmpInfo;
21
+    bool keepRunning=true;
22
+    bool seq_found=false;
23
+    TS_PESpacket SEI_nal(0);
24
+    while(keepRunning)
25
+    {
26
+      int startCode=pkt->findStartCode();
27
 
28
+      if(!pkt->stillOk())
29
+      {
30
+          keepRunning=false;
31
+          continue;
32
+      }
33
+      if(startCode&0x80) continue; // Marker missing
34
+      startCode&=0x1f;
35
+      if(startCode!=NAL_SPS) 
36
+          continue;
37
+
38
+        // Got SPS!
39
+
40
+        uint32_t xA,xR;
41
+        // Get info
42
+        pkt->getInfo(&tmpInfo);
43
+        // Read just enough...
44
+        {
45
+          SEI_nal.empty();
46
+          uint32_t code=0xffff+0xffff0000;
47
+          while(((code&0xffffff)!=1) && pkt->stillOk())
48
+          {
49
+                  uint8_t r=pkt->readi8();
50
+                  code=(code<<8)+r;
51
+                  SEI_nal.pushByte(r);
52
+          }
53
+          if(!pkt->stillOk()) break;;
54
+          pkt->seek(tmpInfo.startAt,tmpInfo.offset-5);
55
+          if (extractSPSInfo(SEI_nal.payload, SEI_nal.payloadSize-4,&spsInfo))
56
+          {
57
+            ADM_info("[TsIndexer] Found video %" PRIu32"x%" PRIu32", fps=%" PRIu32"\n",video.w,video.h,video.fps);
58
+            ADM_info("[TsIndexer] SPS says %" PRIu32"x%" PRIu32"\n",spsInfo.width,spsInfo.height);
59
+            seq_found=1;
60
+            video.w=spsInfo.width;
61
+            video.h=spsInfo.height;
62
+            video.fps=spsInfo.fps1000;
63
+            xA=spsInfo.darNum;
64
+            xR=spsInfo.darDen;
65
+            writeVideo(&video,ADM_TS_H264);
66
+            writeAudio();
67
+            qfprintf(index,"[Data]");
68
+            // Rewind
69
+
70
+            break;
71
+        };
72
+      }
73
+    }
74
+    return seq_found;
75
+}
76
 /**
77
     \fn runH264
78
     \brief Index H264 stream
79
 */
80
-bool TsIndexer::runH264(const char *file,ADM_TS_TRACK *videoTrac)
81
+bool TsIndexerH264::run(const char *file,ADM_TS_TRACK *videoTrac)
82
 {
83
 
84
 bool    seq_found=false;
85
 bool    firstSps=true;
86
-
87
+TS_PESpacket SEI_nal(0);
88
 TSVideo video;
89
 indexerData  data;
90
-dmxPacketInfo tmpInfo;
91
-TS_PESpacket SEI_nal(0);
92
+
93
 bool result=false;
94
 bool bAppend=false;
95
 
96
@@ -96,7 +156,8 @@
97
 
98
     printf("Starting H264 indexer\n");
99
     if(!videoTrac) return false;
100
-    if(videoTrac[0].trackType!=ADM_TS_H264)
101
+    if(videoTrac[0].trackType!=ADM_TS_H264 
102
+       )
103
     {
104
         printf("[Ts Indexer] Only H264 video supported\n");
105
         return false;
106
@@ -136,58 +197,15 @@
107
     //******************
108
     // 1 search SPS
109
     //******************
110
-      while(keepRunning)
111
-      {
112
-        int startCode=pkt->findStartCode();
113
-
114
-        if(!pkt->stillOk())
115
-        {
116
-            keepRunning=false;
117
-            continue;
118
-        }
119
-        if(startCode&0x80) continue; // Marker missing
120
-        startCode&=0x1f;
121
-        if(startCode!=NAL_SPS) 
122
-            continue;
123
-
124
-          // Got SPS!
125
-
126
-          uint32_t xA,xR;
127
-          // Get info
128
-          pkt->getInfo(&tmpInfo);
129
-          // Read just enough...
130
-          {
131
-            SEI_nal.empty();
132
-            uint32_t code=0xffff+0xffff0000;
133
-            while(((code&0xffffff)!=1) && pkt->stillOk())
134
-            {
135
-                    uint8_t r=pkt->readi8();
136
-                    code=(code<<8)+r;
137
-                    SEI_nal.pushByte(r);
138
-            }
139
-            if(!pkt->stillOk()) break;;
140
-            pkt->seek(tmpInfo.startAt,tmpInfo.offset-5);
141
-            if (extractSPSInfo(SEI_nal.payload, SEI_nal.payloadSize-4,&spsInfo))
142
-            {
143
-              ADM_info("[TsIndexer] Found video %" PRIu32"x%" PRIu32", fps=%" PRIu32"\n",video.w,video.h,video.fps);
144
-              ADM_info("[TsIndexer] SPS says %" PRIu32"x%" PRIu32"\n",spsInfo.width,spsInfo.height);
145
-              seq_found=1;
146
-              video.w=spsInfo.width;
147
-              video.h=spsInfo.height;
148
-              video.fps=spsInfo.fps1000;
149
-              xA=spsInfo.darNum;
150
-              xR=spsInfo.darDen;
151
-              writeVideo(&video,ADM_TS_H264);
152
-              writeAudio();
153
-              qfprintf(index,"[Data]");
154
-              // Rewind
155
-
156
-              break;
157
-          };
158
-        }
159
-      }
160
-
161
-        if(!seq_found) goto the_end;
162
+    switch(videoTrac[0].trackType)
163
+    {
164
+        case ADM_TS_H264 :
165
+            seq_found=findH264SPS(pkt,video);
166
+            break;
167
+        default:
168
+            break;
169
+    }    
170
+    if(!seq_found) goto the_end;
171
 
172
         decodingImage=false;
173
     //******************
174
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexH265.cpp Added
201
 
1
@@ -0,0 +1,463 @@
2
+/***************************************************************************
3
+    \brief TS indexer, H265 video
4
+    \author mean fixounet@free.fr
5
+ ***************************************************************************/
6
+
7
+/***************************************************************************
8
+ *                                                                         *
9
+ *   This program is free software; you can redistribute it and/or modify  *
10
+ *   it under the terms of the GNU General Public License as published by  *
11
+ *   the Free Software Foundation; either version 2 of the License, or     *
12
+ *   (at your option) any later version.                                   *
13
+ *                                                                         *
14
+ ***************************************************************************/
15
+#include "ADM_tsIndex.h"
16
+#include "DIA_coreToolkit.h"
17
+#include "ADM_tsIndex.h"
18
+#include "ADM_h265_tag.h"
19
+#include "ADM_vidMisc.h"
20
+/**
21
+ * 
22
+ * @param sc
23
+ * @return 
24
+ */    
25
+static const char *startCodeToString(int sc)
26
+{
27
+    int n= sizeof(nalDesc)/sizeof(NAL_DESC);
28
+    for(int i=0;i<n;i++)
29
+    {
30
+        if(nalDesc[i].value==sc)
31
+            return nalDesc[i].name;
32
+    }
33
+    return "????";
34
+}
35
+
36
+/**
37
+        \fn decodeSEI
38
+        \brief decode SEI to get short ref I
39
+        @param recoveryLength # of recovery frame
40
+        \return true if recovery found
41
+*/
42
+bool TsIndexerH265::decodeSEIH265(uint32_t nalSize, uint8_t *org,uint32_t *recoveryLength,
43
+                pictureStructure *picStruct)
44
+{
45
+#if 0
46
+    if(nalSize+16>=ADM_NAL_BUFFER_SIZE)
47
+    {
48
+        ADM_warning("SEI size too big, probably corrupted input (%u bytes)\n",nalSize);
49
+        return false;
50
+    }
51
+    uint8_t *payload=payloadBuffer;
52
+    bool r=false;
53
+    nalSize=ADM_unescapeH264(nalSize,org,payload);
54
+    uint8_t *tail=payload+nalSize;
55
+    *picStruct=pictureFrame; // frame
56
+    while( payload<tail-2)
57
+    {
58
+                uint32_t sei_type=0,sei_size=0;
59
+                while(payload[0]==0xff) {sei_type+=0xff;payload++;};
60
+                sei_type+=payload[0];payload++;
61
+                while(payload[0]==0xff) {sei_size+=0xff;payload++;};
62
+                sei_size+=payload[0];payload++;
63
+                aprintf("  [SEI] Type: 0x%x, size: %u\n",sei_type,sei_size);
64
+                if(payload+sei_size>=tail)
65
+                {
66
+                        return false;
67
+                }
68
+                switch(sei_type) // Recovery point
69
+                {
70
+
71
+                       case 1:
72
+                        {
73
+                            decoderSei1(spsInfo,sei_size,payload,picStruct);
74
+                            payload+=sei_size;
75
+                            break;
76
+                        }
77
+                       case 6:
78
+                        {
79
+                            decoderSei6(sei_size,payload,recoveryLength);
80
+                            payload+=sei_size;
81
+                            aprintf("[SEI] Recovery :%" PRIu32"\n",*recoveryLength);
82
+                            r=true;
83
+                            break;
84
+                        }
85
+                        default:
86
+                            payload+=sei_size;
87
+                            break;
88
+                }
89
+    }
90
+    //if(payload+1<tail) ADM_warning("Bytes left in SEI %d\n",(int)(tail-payload));
91
+    return r;
92
+#endif
93
+   return false;
94
+}
95
+
96
+/**
97
+ * \fn findGivenStartCode
98
+ * @param pkt
99
+ * @param match
100
+ * @return 
101
+ */
102
+static bool findGivenStartCode(tsPacketLinearTracker *pkt,int match, const char *name)
103
+{
104
+    bool keepRunning=true;    
105
+    while(keepRunning)
106
+    {
107
+      int startCode=pkt->findStartCode();
108
+      if(!pkt->stillOk())
109
+      {
110
+          return false;
111
+      }     
112
+      printf("Match %x %d\n",startCode,((startCode>>1)&0x3f));
113
+      startCode=((startCode>>1)&0x3f);  
114
+      
115
+      if(startCode!=match && match) 
116
+          continue;
117
+        dmxPacketInfo packetInfo;
118
+        pkt->getInfo( &packetInfo);
119
+      
120
+      ADM_info("%s found at 0x%x+0x%x\n",name,(int)packetInfo.startAt,packetInfo.offset);
121
+      return true;
122
+    }
123
+    return false;
124
+}
125
+
126
+/**
127
+ * \fn findGivenStartCode
128
+ * @param pkt
129
+ * @param match: Startcode to find, zero means any startcode
130
+ * @return 
131
+ */
132
+static uint8_t * findGivenStartCodeInBuffer(uint8_t *start, uint8_t *end,int match, const char *name)
133
+{
134
+    
135
+    while(start+4<end)
136
+    {
137
+        if(!start[0]&&!start[1] && start[2]==0x01)
138
+        {
139
+            uint8_t code=(start[3]>>1)&0x3f;
140
+            printf(" Matcho = %d\n",code);
141
+            if(code==match || !match) return start;
142
+        }
143
+        start++;
144
+    }
145
+    ADM_warning("Cannot find %s\n",name);
146
+    return NULL;
147
+}
148
+
149
+/**
150
+ * \fn findH264SPS
151
+ * @return 
152
+ */
153
+bool TsIndexerH265::findH265VPS(tsPacketLinearTracker *pkt,TSVideo &video)
154
+{    
155
+    bool keepRunning=true;
156
+    dmxPacketInfo packetInfo;
157
+    uint8_t headerBuffer[512]={0,0,0,1,(NAL_H265_VPS<<1)}; // we are forcing some bits to be zero...
158
+    // This is a bit naive...
159
+        
160
+    if(!findGivenStartCode(pkt,NAL_H265_VPS ,"VPS"))
161
+    {
162
+        ADM_warning("Cannot find HEVC VPS\n");
163
+        return false;
164
+    }   
165
+    
166
+    pkt->getInfo( &packetInfo);
167
+    thisUnit.consumedSoFar=0; // Head
168
+    
169
+    uint64_t startExtraData=packetInfo.startAt-193; // /!\ It may be in the previous packet, very unlikely though    
170
+    pkt->read(512,headerBuffer+5);
171
+    uint8_t *pointer=headerBuffer+5;
172
+    uint8_t *end=headerBuffer+512;
173
+    // Rewind
174
+    pkt->setPos(packetInfo.startAt);
175
+    
176
+    pointer=findGivenStartCodeInBuffer(pointer,end,NAL_H265_SPS,"SPS");
177
+    if(!pointer)
178
+    {
179
+        ADM_warning("Cannot find HEVC SPS\n");
180
+        return false;
181
+    }
182
+    ADM_info("SPS found at %d\n",(int)(pointer-headerBuffer));
183
+    pointer=findGivenStartCodeInBuffer(pointer,end,NAL_H265_PPS,"PPS");
184
+    if(!pointer)
185
+    {
186
+        ADM_warning("Cannot find HEVC PPS\n");
187
+        return false;
188
+    }
189
+    ADM_info("PPS found at %d\n",(int)(pointer-headerBuffer));
190
+    pointer=findGivenStartCodeInBuffer(pointer+3,end,0,"Any");
191
+    if(!pointer)
192
+    {
193
+        ADM_warning("Cannot find HEVC next marker\n");
194
+        return false;
195
+    }
196
+    ADM_info("Any found at %d\n",(int)(pointer-headerBuffer));
197
+    int extraLen=(int)(pointer-headerBuffer); // should be enough (tm)    
198
+    
199
+    ADM_info("VPS/SPS/PPS lengths = %d bytes \n",extraLen);
200
+    
201
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexMpeg2.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexMpeg2.cpp Changed
10
 
1
@@ -37,7 +37,7 @@
2
 /**
3
     \fn runMpeg2
4
 */  
5
-bool TsIndexer::runMpeg2(const char *file,ADM_TS_TRACK *videoTrac)
6
+bool TsIndexerMpeg2::run(const char *file,ADM_TS_TRACK *videoTrac)
7
 {
8
 uint32_t temporal_ref,val;
9
 uint8_t buffer[50*1024];
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexVC1.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsIndexVC1.cpp Changed
28
 
1
@@ -23,7 +23,7 @@
2
     \fn runVC1
3
     \brief Index VC1 stream
4
 */  
5
-bool TsIndexer::runVC1(const char *file,ADM_TS_TRACK *videoTrac)
6
+bool TsIndexerVC1::run(const char *file,ADM_TS_TRACK *videoTrac)
7
 {
8
 uint32_t temporal_ref,val;
9
 uint8_t buffer[50*1024];
10
@@ -166,7 +166,7 @@
11
         Large part of this borrowed from VLC
12
         Advanced/High profile only
13
 */
14
-bool TsIndexer::decodeVC1Seq(tsGetBits &bits,TSVideo &video)
15
+bool TsIndexerVC1::decodeVC1Seq(tsGetBits &bits,TSVideo &video)
16
 {
17
 
18
 int v;
19
@@ -323,7 +323,7 @@
20
     Borrowed a lot from VLC also
21
 
22
 */
23
-bool TsIndexer::decodeVC1Pic(tsGetBits &bits,uint32_t &frameType,uint32_t &frameStructure)
24
+bool TsIndexerVC1::decodeVC1Pic(tsGetBits &bits,uint32_t &frameType,uint32_t &frameStructure)
25
 {
26
     frameStructure=3;
27
     bool field=false;
28
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsPatPmt.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsPatPmt.cpp Changed
48
 
1
@@ -20,6 +20,7 @@
2
 #include "ADM_ts.h"
3
 #include "ADM_demuxerInternal.h"
4
 #include "ADM_tsPatPmt.h"
5
+#include "fourcc.h"
6
 
7
 typedef vector <ADM_TS_TRACK> listOfTsTracks;
8
 
9
@@ -48,6 +49,7 @@
10
     {0x004,ADM_TS_MPEG_AUDIO,"Mpeg2 Audio"},
11
     {0x005,ADM_TS_UNKNOWN,   "Registration"},
12
     {0x01b,ADM_TS_H264,      "H264 Video"},
13
+    {0x00f,ADM_TS_H264,      "H265 Video"},
14
     {0x081,ADM_TS_AC3,       "AC3 Audio"},
15
     {0x0ea,ADM_TS_VC1,       "VC1 Video"},
16
     {0x006,ADM_TS_UNKNOWN,   "Private Stream"},
17
@@ -129,7 +131,7 @@
18
     for(int i=0;i<list.size();i++)
19
     {
20
         ADM_TS_TRACK_TYPE type=list[i].trackType;
21
-        if(type==ADM_TS_MPEG2 || type==ADM_TS_H264 || type==ADM_TS_VC1)
22
+        if(type==ADM_TS_MPEG2 || type==ADM_TS_H264 || type==ADM_TS_VC1 || type==ADM_TS_H265)
23
         {
24
             videoIndex=i;
25
             break;
26
@@ -255,6 +257,13 @@
27
                printf("\n");
28
                switch(tag)
29
                {
30
+               case 0x05: // registration descriptor
31
+                   if(fourCC::check(head+2,(uint8_t *)"HEVC"))
32
+                   {
33
+                       printf("[PMT} HEVC tag found\n");
34
+                       type=0x24;
35
+                   }
36
+                   break;
37
                case 0xa:  // dvb language
38
                {
39
                    if(tag_len<2) break; // too short
40
@@ -314,6 +323,7 @@
41
                 case 0xF:      *str= "Mpeg AAC ADTS";return ADM_TS_AAC_ADTS;break;
42
                 case 0x11:     *str= "Mpeg AAC LATM";return ADM_TS_AAC_LATM;break;
43
                 case 0x1B:     *str= "H264 Video";return ADM_TS_H264;break;
44
+                case 0x24:     *str= "H265 Video(not sure)";return ADM_TS_H265;break;
45
                 case 0x81:     *str= "AC3 (Not sure)";return ADM_TS_AC3;break;
46
                 //case 0x82:     *str= "DTS (Not sure)";return ADM_TS_DTS;break;
47
                 case 0x83:     *str= "TrueHD AC3  (BluRay)";return ADM_TS_AC3;break;
48
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsPatPmt.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsPatPmt.h Changed
9
 
1
@@ -28,6 +28,7 @@
2
     ADM_TS_UNKNOWN=0,
3
     ADM_TS_MPEG2,
4
     ADM_TS_H264,
5
+    ADM_TS_H265,
6
     ADM_TS_MPEG_AUDIO=10,
7
     ADM_TS_AC3,
8
     ADM_TS_AAC_ADTS,
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsReadIndex.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/ADM_tsReadIndex.cpp Changed
39
 
1
@@ -133,11 +133,16 @@
2
                 if(*(cur)!=':')
3
                 {
4
                     printf("[TsDemuxer]  instead of : (%c %x %x):\n",*cur,*(cur-1),*cur);
5
+                    return false;
6
                 }
7
                 cur++;
8
                 next=strstr(start," ");
9
                 int64_t ppts,ddts;
10
-                ADM_assert(3==sscanf(cur,"%" PRIx32":%" PRId64":%" PRId64,&len,&ppts,&ddts));
11
+                if(3!=sscanf(cur,"%" PRIx32":%" PRId64":%" PRId64,&len,&ppts,&ddts))
12
+                {
13
+                        ADM_warning("Malformed line (%s)\n",buffer);
14
+                        return false;
15
+                }
16
                 
17
                 
18
                 dmxFrame *frame=new dmxFrame;
19
@@ -197,6 +202,7 @@
20
         \brief Read the [video] section of the index file
21
 
22
 */
23
+
24
 bool    tsHeader::readVideo(indexFile *index)
25
 {
26
     printf("[TsDemuxerer] Reading Video\n");
27
@@ -210,9 +216,9 @@
28
     if(type)
29
     {
30
         printf("[TsIndex] codec :<%s>\n",type);
31
-        if(!strcmp(type,"H264"))
32
+        if(!strcmp(type,"H264") || !strcmp(type,"H265"))
33
         {
34
-             _videostream.fccHandler=_video_bih.biCompression=fourCC::get((uint8_t *)"H264");
35
+             _videostream.fccHandler=_video_bih.biCompression=fourCC::get((uint8_t *)type);
36
         }else
37
         if(!strcmp(type,"VC1"))
38
         {
39
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/CMakeLists.txt Changed
9
 
1
@@ -4,6 +4,7 @@
2
    ADM_tsPlugin.cpp
3
    ADM_tsIndex.cpp
4
    ADM_tsIndexH264.cpp
5
+   ADM_tsIndexH265.cpp
6
         ADM_tsIndexVC1.cpp
7
         ADM_tsIndexMpeg2.cpp
8
    ADM_tsReadIndex.cpp
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.cpp Changed
26
 
1
@@ -733,10 +733,10 @@
2
             It is expected that the caller will do -4 to the index to get the start of the 
3
             startCode
4
 */
5
-bool    tsPacketLinear::getInfo(dmxPacketInfo *info)
6
+bool    tsPacketLinear::getInfo(dmxPacketInfo *info,int startCodeLength)
7
 {
8
 //#warning FIXME
9
-    if(pesPacket->offset<4)
10
+    if(pesPacket->offset<startCodeLength)
11
     {
12
         info->startAt=this->oldStartAt;
13
         info->offset=oldBufferLen;
14
@@ -758,9 +758,9 @@
15
     \brief in some cases (HDRunner/HDCPro), a pes contains multiple video frames. This call consumes pts
16
             and dts so that the multiple frames do not have the same pts/dts.
17
 */
18
-bool     tsPacketLinear::invalidatePtsDts(void)
19
+bool     tsPacketLinear::invalidatePtsDts(int startCodeLength)
20
 {
21
-    if(pesPacket->offset<4)
22
+    if(pesPacket->offset<startCodeLength)
23
     {
24
         oldBufferPts=ADM_NO_PTS;
25
         oldBufferDts=ADM_NO_PTS;
26
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/MpegTS/dmxTSPacket.h Changed
27
 
1
@@ -166,7 +166,15 @@
2
                 ~tsPacketLinear();
3
         uint32_t getConsumed(void);
4
         bool     stillOk(void) {return !eof;};
5
-        bool     invalidatePtsDts(void);
6
+        bool     invalidatePtsDts(int startCodeLength=4);
7
+ virtual bool    setPos(uint64_t pos)
8
+ {
9
+   pesPacket->payloadSize=0;
10
+   pesPacket->offset=0;
11
+   return tsPacket::setPos(pos);
12
+   
13
+ }
14
+ 
15
 #ifndef TS_PACKET_INLINE
16
         uint8_t  readi8();
17
         uint16_t readi16();
18
@@ -214,7 +222,7 @@
19
         bool    read(uint32_t len, uint8_t *buffer);
20
         bool    forward(uint32_t v);
21
         
22
-        bool    getInfo(dmxPacketInfo *info);
23
+        bool    getInfo(dmxPacketInfo *info,int startCodeLength=4);
24
         bool    seek(uint64_t packetStart, uint32_t offset);
25
         bool    changePid(uint32_t pid) ;
26
         bool    setConsumed(uint32_t v);
27
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_demuxers/OpenDml/ADM_openDML.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_demuxers/OpenDml/ADM_openDML.cpp Changed
33
 
1
@@ -682,8 +682,8 @@
2
                                 }
3
                                 else
4
                                 {
5
-                                        printf("Track %u/%u :\n",i,_nbTrack);
6
-                                        fourCC::print(tmp.fccType);
7
+                                        printf("Track %u/%u : ",i,_nbTrack);
8
+                                        fourCC::print(tmp.fccType);printf(", ");
9
                                         fourCC::print(tmp.fccHandler);
10
                                         printf("\n");
11
                                 }
12
@@ -722,11 +722,10 @@
13
                
14
    printf(  "[Avi] video stream attached:\n" );
15
    printf(  "[Avi] ______________________\n" );    
16
-   printf(  "[Avi] Extra Data  : %u",_videoExtraLen);
17
+   printf(  "[Avi] Extra Data  : %u\n",_videoExtraLen);
18
    if(_videoExtraLen)
19
    {
20
        mixDump( _videoExtraData, _videoExtraLen);
21
-        printf("\n");
22
    }
23
 
24
    printf("[Avi]  fccType     :");
25
@@ -799,7 +798,6 @@
26
    {
27
        mixDump( _audioTracks[i].extraData, _audioTracks[i].extraDataLen);
28
    }
29
-   printf("\n");
30
 
31
       }
32
 }
33
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4v2/muxerMp4v2Video.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_muxers/muxerMp4v2/muxerMp4v2Video.cpp Changed
26
 
1
@@ -127,7 +127,7 @@
2
             esdsLen-=4;
3
         }
4
 
5
-        ADM_info("Esds:\n"); mixDump(esdsData,esdsLen);ADM_info("\n");            
6
+        ADM_info("Esds:\n"); mixDump(esdsData,esdsLen);
7
         if(false==MP4SetTrackESConfiguration(handle,videoTrackId,esdsData,esdsLen))
8
         {
9
             ADM_error("SetTracEsConfiguration failed\n");
10
@@ -164,7 +164,6 @@
11
             }
12
             if(extraLen)
13
                 mixDump(extra,extraLen);
14
-            ADM_info("\n");
15
             if(false==ADM_getH264SpsPpsFromExtraData(extraLen,extra,&spsLen,&spsData,&ppsLen,&ppsData))
16
             {
17
                 ADM_error("Wrong extra data for h264\n");
18
@@ -193,7 +192,6 @@
19
             mixDump(spsData,spsLen);
20
             ADM_info("PPS (%d) :",ppsLen);
21
             mixDump(ppsData,ppsLen);
22
-            ADM_info("\n");
23
 
24
             MP4AddH264SequenceParameterSet(handle,videoTrackId, spsData,spsLen );
25
             MP4AddH264PictureParameterSet( handle,videoTrackId, ppsData,ppsLen);
26
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/ADM_pyAvidemux.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/ADM_pyAvidemux.cpp Changed
35
 
1
@@ -19,6 +19,7 @@
2
 #include "fourcc.h"
3
 #include "DIA_fileSel.h"
4
 #include "DIA_coreToolkit.h"
5
+#include "ADM_image.h"
6
 
7
 /**
8
     \fn pyGetFps1000
9
@@ -74,6 +75,25 @@
10
 
11
    return true;
12
 }
13
+
14
+/**
15
+ * 
16
+ * @param editor
17
+ * @param framenumber
18
+ * @return 
19
+ */
20
+bool pyNextFrame(IEditor *editor)
21
+{
22
+    aviInfo info;
23
+    if(!editor->getVideoInfo(&info))
24
+        return false;
25
+    
26
+    ADMImageDefault img(info.width,info.height);
27
+    if(!editor->nextPicture(&img,false))
28
+       return false;
29
+    return true;
30
+}
31
+
32
 /**
33
     \fn pyPrintTiming
34
 */
35
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/ADM_pyAvidemux.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/ADM_pyAvidemux.h Changed
9
 
1
@@ -71,5 +71,7 @@
2
 int pyTestSub( char *subName);
3
 /* OS */
4
 char *pyGetEnv(IEditor *editor,const char *);
5
+/* Navigate */
6
+bool pyNextFrame(IEditor *editor);
7
 #endif
8
 // EOF
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/CMakeLists.txt Changed
10
 
1
@@ -24,7 +24,7 @@
2
 include_directories(${AVIDEMUX_TOP_SOURCE_DIR}/avidemux/common)
3
 include_directories(${AVIDEMUX_TOP_SOURCE_DIR}/avidemux/common/ADM_editor/include)
4
 
5
-target_link_libraries(ADM_script_tinyPy ADM_coreScript ADM_coreUtils6 ADM_core6 ADM_coreUI6 )
6
+target_link_libraries(ADM_script_tinyPy ADM_coreImage6 ADM_coreScript ADM_coreUtils6 ADM_core6 ADM_coreUI6 )
7
 IF(NOT MSVC)
8
         target_link_libraries(ADM_script_tinyPy m )
9
 ENDIF(NOT MSVC)
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/binding/editor.admPyClass -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/binding/editor.admPyClass Changed
8
 
1
@@ -10,4 +10,6 @@
2
 /* METHOD */ int editor->dumpRefVideos:dumpRefVideo   (void) 
3
 /* METHOD */ int pyHexDumpFrame:hexDumpFrame    (int) 
4
 /* METHOD */ int editor->getFrameSize:getFrameSize  (int) 
5
+#
6
+/* METHOD */ int pyNextFrame:nextFrame  (void) 
7
 
8
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/editor_gen.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_scriptEngines/tinyPy/src/editor_gen.cpp Changed
201
 
1
@@ -1,6 +1,6 @@
2
 // Generated by admPyClass.pl do not edit !
3
-// printTiming -> int pyPrintTiming (IEditor int ) 
4
-static tp_obj zzpy_printTiming(TP)
5
+// getFrameSize -> int editor->getFrameSize (int ) 
6
+static tp_obj zzpy_getFrameSize(TP)
7
  {
8
   tp_obj self = tp_getraw(tp);
9
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
10
@@ -8,9 +8,20 @@
11
   TinyParams pm(tp);
12
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
13
 
14
-  IEditor *p0 = editor;
15
-  int p1 = pm.asInt();
16
-  int r =   pyPrintTiming(p0,p1); 
17
+  int p0 = pm.asInt();
18
+  int r =   editor->getFrameSize(p0); 
19
+  return tp_number(r);
20
+}
21
+// nbSegments -> int editor->getNbSegment (void ) 
22
+static tp_obj zzpy_nbSegments(TP)
23
+ {
24
+  tp_obj self = tp_getraw(tp);
25
+  IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
26
+  IEditor *editor = engine->editor();
27
+  TinyParams pm(tp);
28
+  void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
29
+
30
+  int r =   editor->getNbSegment(); 
31
   return tp_number(r);
32
 }
33
 // hexDumpFrame -> int pyHexDumpFrame (IEditor int ) 
34
@@ -27,8 +38,8 @@
35
   int r =   pyHexDumpFrame(p0,p1); 
36
   return tp_number(r);
37
 }
38
-// getVideoDuration -> double editor->getVideoDuration (void ) 
39
-static tp_obj zzpy_getVideoDuration(TP)
40
+// getDts -> double pyGetDts (IEditor int ) 
41
+static tp_obj zzpy_getDts(TP)
42
  {
43
   tp_obj self = tp_getraw(tp);
44
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
45
@@ -36,11 +47,13 @@
46
   TinyParams pm(tp);
47
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
48
 
49
-  double r =   editor->getVideoDuration(); 
50
+  IEditor *p0 = editor;
51
+  int p1 = pm.asInt();
52
+  double r =   pyGetDts(p0,p1); 
53
   return tp_number(r);
54
 }
55
-// getDts -> double pyGetDts (IEditor int ) 
56
-static tp_obj zzpy_getDts(TP)
57
+// getPts -> double pyGetPts (IEditor int ) 
58
+static tp_obj zzpy_getPts(TP)
59
  {
60
   tp_obj self = tp_getraw(tp);
61
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
62
@@ -50,11 +63,11 @@
63
 
64
   IEditor *p0 = editor;
65
   int p1 = pm.asInt();
66
-  double r =   pyGetDts(p0,p1); 
67
+  double r =   pyGetPts(p0,p1); 
68
   return tp_number(r);
69
 }
70
-// dumpSegment -> void editor->dumpSegment (int ) 
71
-static tp_obj zzpy_dumpSegment(TP)
72
+// getVideoDuration -> double editor->getVideoDuration (void ) 
73
+static tp_obj zzpy_getVideoDuration(TP)
74
  {
75
   tp_obj self = tp_getraw(tp);
76
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
77
@@ -62,12 +75,11 @@
78
   TinyParams pm(tp);
79
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
80
 
81
-  int p0 = pm.asInt();
82
-  editor->dumpSegment(p0); 
83
- return tp_None;
84
+  double r =   editor->getVideoDuration(); 
85
+  return tp_number(r);
86
 }
87
-// dumpRefVideo -> int editor->dumpRefVideos (void ) 
88
-static tp_obj zzpy_dumpRefVideo(TP)
89
+// nextFrame -> int pyNextFrame (IEditor ) 
90
+static tp_obj zzpy_nextFrame(TP)
91
  {
92
   tp_obj self = tp_getraw(tp);
93
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
94
@@ -75,11 +87,12 @@
95
   TinyParams pm(tp);
96
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
97
 
98
-  int r =   editor->dumpRefVideos(); 
99
+  IEditor *p0 = editor;
100
+  int r =   pyNextFrame(p0); 
101
   return tp_number(r);
102
 }
103
-// nbSegments -> int editor->getNbSegment (void ) 
104
-static tp_obj zzpy_nbSegments(TP)
105
+// dumpRefVideo -> int editor->dumpRefVideos (void ) 
106
+static tp_obj zzpy_dumpRefVideo(TP)
107
  {
108
   tp_obj self = tp_getraw(tp);
109
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
110
@@ -87,11 +100,11 @@
111
   TinyParams pm(tp);
112
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
113
 
114
-  int r =   editor->getNbSegment(); 
115
+  int r =   editor->dumpRefVideos(); 
116
   return tp_number(r);
117
 }
118
-// dumpAllSegments -> void editor->dumpSegments (void ) 
119
-static tp_obj zzpy_dumpAllSegments(TP)
120
+// printTiming -> int pyPrintTiming (IEditor int ) 
121
+static tp_obj zzpy_printTiming(TP)
122
  {
123
   tp_obj self = tp_getraw(tp);
124
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
125
@@ -99,11 +112,13 @@
126
   TinyParams pm(tp);
127
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
128
 
129
-  editor->dumpSegments(); 
130
- return tp_None;
131
+  IEditor *p0 = editor;
132
+  int p1 = pm.asInt();
133
+  int r =   pyPrintTiming(p0,p1); 
134
+  return tp_number(r);
135
 }
136
-// getFrameSize -> int editor->getFrameSize (int ) 
137
-static tp_obj zzpy_getFrameSize(TP)
138
+// dumpSegment -> void editor->dumpSegment (int ) 
139
+static tp_obj zzpy_dumpSegment(TP)
140
  {
141
   tp_obj self = tp_getraw(tp);
142
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
143
@@ -112,11 +127,11 @@
144
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
145
 
146
   int p0 = pm.asInt();
147
-  int r =   editor->getFrameSize(p0); 
148
-  return tp_number(r);
149
+  editor->dumpSegment(p0); 
150
+ return tp_None;
151
 }
152
-// getPts -> double pyGetPts (IEditor int ) 
153
-static tp_obj zzpy_getPts(TP)
154
+// dumpAllSegments -> void editor->dumpSegments (void ) 
155
+static tp_obj zzpy_dumpAllSegments(TP)
156
  {
157
   tp_obj self = tp_getraw(tp);
158
   IScriptEngine *engine = (IScriptEngine*)tp_get(tp, tp->builtins, tp_string("userdata")).data.val;
159
@@ -124,10 +139,8 @@
160
   TinyParams pm(tp);
161
   void *me = (void *)pm.asThis(&self, ADM_PYID_EDITOR);
162
 
163
-  IEditor *p0 = editor;
164
-  int p1 = pm.asInt();
165
-  double r =   pyGetPts(p0,p1); 
166
-  return tp_number(r);
167
+  editor->dumpSegments(); 
168
+ return tp_None;
169
 }
170
 tp_obj zzpy__pyEditor_get(tp_vm *vm)
171
 {
172
@@ -137,45 +150,49 @@
173
   TinyParams pm(vm);
174
   void *me=(void *)pm.asThis(&self, ADM_PYID_EDITOR);
175
   char const *key = pm.asString();
176
-  if (!strcmp(key, "printTiming"))
177
+  if (!strcmp(key, "getFrameSize"))
178
   {
179
-     return tp_method(vm, self, zzpy_printTiming);
180
+     return tp_method(vm, self, zzpy_getFrameSize);
181
   }
182
-  if (!strcmp(key, "hexDumpFrame"))
183
+  if (!strcmp(key, "nbSegments"))
184
   {
185
-     return tp_method(vm, self, zzpy_hexDumpFrame);
186
+     return tp_method(vm, self, zzpy_nbSegments);
187
   }
188
-  if (!strcmp(key, "getVideoDuration"))
189
+  if (!strcmp(key, "hexDumpFrame"))
190
   {
191
-     return tp_method(vm, self, zzpy_getVideoDuration);
192
+     return tp_method(vm, self, zzpy_hexDumpFrame);
193
   }
194
   if (!strcmp(key, "getDts"))
195
   {
196
      return tp_method(vm, self, zzpy_getDts);
197
   }
198
-  if (!strcmp(key, "dumpSegment"))
199
+  if (!strcmp(key, "getPts"))
200
   {
201
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/ADM_ffNvEnc.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoEncoder/ffNvEnc/ADM_ffNvEnc.cpp Changed
10
 
1
@@ -207,7 +207,7 @@
2
           /* First Tab : encoding mode */
3
         diaElem *diamode[]={&qzPreset,&bitrate,&maxBitrate};
4
 
5
-        if( diaFactoryRun(QT_TRANSLATE_NOOP("ffnvenc","libavcodec MPEG-4 configuration"),3,diamode))
6
+        if( diaFactoryRun(QT_TRANSLATE_NOOP("ffnvenc","NVENC H.264 configuration"),3,diamode))
7
         {
8
           
9
           return true;
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoEncoder/xvid4/xvid4Dialog.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoEncoder/xvid4/xvid4Dialog.cpp Changed
16
 
1
@@ -74,10 +74,10 @@
2
 
3
 diaMenuEntry arModeE[]={
4
   {XVID_PAR_11_VGA,QT_TRANSLATE_NOOP("xvid4","1:1 (PC)")},
5
-  {XVID_PAR_43_PAL,QT_TRANSLATE_NOOP("xvid4","4:3 (PAL))")},
6
-  {XVID_PAR_43_NTSC,QT_TRANSLATE_NOOP("xvid4","4:3 (NTSC))")},
7
-  {XVID_PAR_169_PAL,QT_TRANSLATE_NOOP("xvid4","16:9 (PAL))")},
8
-  {XVID_PAR_169_NTSC,QT_TRANSLATE_NOOP("xvid4","16:9 (NTSC))")},
9
+  {XVID_PAR_43_PAL,QT_TRANSLATE_NOOP("xvid4","4:3 (PAL)")},
10
+  {XVID_PAR_43_NTSC,QT_TRANSLATE_NOOP("xvid4","4:3 (NTSC)")},
11
+  {XVID_PAR_169_PAL,QT_TRANSLATE_NOOP("xvid4","16:9 (PAL)")},
12
+  {XVID_PAR_169_NTSC,QT_TRANSLATE_NOOP("xvid4","16:9 (NTSC)")},
13
 };  
14
 
15
 
16
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/asciiView/ADM_vidAscii.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/asciiView/ADM_vidAscii.cpp Changed
12
 
1
@@ -56,8 +56,8 @@
2
                         ADM_UI_ALL,         // UI
3
                         VF_TRANSFORM,            // Category
4
                         "AsciiView",            // internal name (must be uniq!)
5
-                        "Ascii View",            // Display name
6
-                        "Ascii view" // Description
7
+                        QT_TRANSLATE_NOOP("asciiView","Ascii View"),            // Display name
8
+                        QT_TRANSLATE_NOOP("asciiView","Ascii view") // Description
9
                     );
10
 
11
 // Now implements the interesting parts
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/asharp/DIA_flyAsharp.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/asharp/DIA_flyAsharp.cpp Changed
12
 
1
@@ -104,8 +104,8 @@
2
         dst[dstride]=0xff;
3
         dst+=dstride*2;
4
     }
5
-    out->printString(1,1,QT_TRANSLATE_NOOP("asharp", "Original"));
6
-    out->printString(ww/24+1,1,QT_TRANSLATE_NOOP("asharp", "Processed"));
7
+    out->printString(1,1,"Original"); // printString can't handle non-ascii input, do not translate this!
8
+    out->printString(ww/24+1,1,"Processed"); // as above, don't try to translate
9
     return 1;
10
 }
11
 //EOF
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/ADM_vidBlackBorder.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/ADM_vidBlackBorder.cpp Changed
66
 
1
@@ -39,7 +39,7 @@
2
 */
3
 blackenBorders::blackenBorders( ADM_coreVideoFilter *in,CONFcouple *setup) : ADM_coreVideoFilter(in,setup)
4
 {
5
-    if(!setup || !ADM_paramLoad(setup,blackenBorder_param,&param))
6
+    if(!setup || !ADM_paramLoad(setup,blackenBorder_param,&param))
7
     {
8
         // Default value
9
         param.left=0;
10
@@ -142,48 +142,16 @@
11
 /**
12
     \fn configure
13
 */
14
+extern bool DIA_getBlackenParams(  blackenBorder *param,ADM_coreVideoFilter *in);
15
 bool blackenBorders::configure(void)
16
 {
17
-        uint32_t width,height;
18
-#define MAKEME(x) uint32_t x=param.x;
19
-        while(1)
20
-        {
21
-          MAKEME(left);
22
-          MAKEME(right);
23
-          MAKEME(top);
24
-          MAKEME(bottom);
25
+    
26
+        bool r=DIA_getBlackenParams(   &param,previousFilter);
27
+        if(!r) return false;        
28
+        // sanity check, todo
29
+        return true;
30
 
31
-          width=previousFilter->getInfo()->width;
32
-          height=previousFilter->getInfo()->height;
33
-
34
-          diaElemUInteger dleft(&left,QT_TRANSLATE_NOOP("blacken","_Left border:"),       0,width/2);
35
-          diaElemUInteger dright(&right,QT_TRANSLATE_NOOP("blacken","_Right border:"),    0,width/2);
36
-          diaElemUInteger dtop(&(top),QT_TRANSLATE_NOOP("blacken","_Top border:"),          0,height/2);
37
-          diaElemUInteger dbottom(&(bottom),QT_TRANSLATE_NOOP("blacken","_Bottom border:"), 0,height/2);
38
-
39
-          diaElem *elems[4]={&dleft,&dright,&dtop,&dbottom};
40
-          if(diaFactoryRun(QT_TRANSLATE_NOOP("blacken","Blacken Borders"),4,elems))
41
-          {
42
-            if((left&1) || (right&1)|| (top&1) || (bottom&1))
43
-            {
44
-              GUI_Error_HIG(QT_TRANSLATE_NOOP("blacken","Incorrect parameters"),QT_TRANSLATE_NOOP("blacken","All parameters must be even and within range."));
45
-              continue;
46
-            }
47
-            else
48
-            {
49
-  #undef MAKEME
50
-  #define MAKEME(x) param.x=x;
51
-                MAKEME(left);
52
-                MAKEME(right);
53
-                MAKEME(top);
54
-                MAKEME(bottom);
55
-                return true;
56
-            }
57
-          }
58
-          return false;
59
-      }
60
 }
61
-
62
-
63
+// EOF
64
 
65
 
66
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/ADM_vidBlackBorder.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/ADM_vidBlackBorder.h Changed
45
 
1
@@ -14,35 +14,33 @@
2
  *   (at your option) any later version.                                   *
3
  *                                                                         *
4
  ***************************************************************************/
5
-#ifndef __BLACKEN_BORDER__
6
-#define     __BLACKEN_BORDER__
7
-
8
+#pragma once
9
 #include "blackenBorder.h"
10
 class blackenBorders : public  ADM_coreVideoFilter
11
 {
12
 protected:
13
-        blackenBorder   param;
14
+        blackenBorder       param;
15
 public:
16
-                    blackenBorders(ADM_coreVideoFilter *previous,CONFcouple *conf);
17
-                    ~blackenBorders();
18
+                            blackenBorders(ADM_coreVideoFilter *previous,CONFcouple *conf);
19
+                            ~blackenBorders();
20
 
21
         virtual const char   *getConfiguration(void);                   /// Return  current configuration as a human readable string
22
         virtual bool         getNextFrame(uint32_t *fn,ADMImage *image);    /// Return the next image
23
     //  virtual FilterInfo  *getInfo(void);                             /// Return picture parameters after this filter
24
         virtual bool         getCoupledConf(CONFcouple **couples) ;   /// Return the current filter configuration
25
-        virtual void setCoupledConf(CONFcouple *couples);
26
+        virtual void         setCoupledConf(CONFcouple *couples);
27
         virtual bool         configure(void) ;           /// Start graphical user interface
28
 };
29
 
30
-// Add the hook to make it valid plugin
31
+
32
 DECLARE_VIDEO_FILTER(   blackenBorders,   // Class
33
                         1,0,0,              // Version
34
-                        ADM_UI_ALL,         // UI
35
+                        ADM_UI_TYPE_BUILD,         // UI
36
                         VF_TRANSFORM,            // Category
37
                         "blackenBorder",            // internal name (must be uniq!)
38
                         QT_TRANSLATE_NOOP("blacken","Blacken Borders"),            // Display name
39
                         QT_TRANSLATE_NOOP("blacken","Remove noisy edge by turning them to black.") // Description
40
                     );
41
 
42
+// EOF
43
 
44
-#endif
45
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/CMakeLists.txt Changed
24
 
1
@@ -3,7 +3,19 @@
2
 
3
 SET(ADM_vf_blackenBorders_SRCS ADM_vidBlackBorder.cpp )
4
 
5
-ADD_VIDEO_FILTER(ADM_vf_blackenBorders ${ADM_vf_blackenBorders_SRCS})
6
 
7
-INIT_VIDEO_FILTER(ADM_vf_blackenBorders)
8
-INSTALL_VIDEO_FILTER(ADM_vf_blackenBorders)
9
+# ---------- QT4 Version ----------------
10
+INCLUDE(vf_plugin_qt4)
11
+SET(ADM_vf_blackenBordersQT4_SRCS    qt4/Q_blackenBorders.cpp)
12
+SET(ADM_vf_blackenBordersQT4_Headers qt4/Q_blackenBorders.h)
13
+SET(ADM_vf_blackenBordersQT4_UI      qt4/blackenBorders)
14
+INIT_VIDEO_FILTER_QT4(ADM_vf_blackenBorders${QT_LIBRARY_EXTENSION} ${ADM_vf_blackenBordersQT4_SRCS} ${ADM_vf_blackenBordersQT4_Headers} ${ADM_vf_blackenBordersQT4_UI} ${ADM_vf_blackenBorders_SRCS} qt4/DIA_flyBlackenBorders.cpp)
15
+# /QT4
16
+
17
+
18
+
19
+#------------ Cli Version ----------------
20
+INCLUDE(vf_plugin_cli)
21
+SET(CropCli_SRCS cli/DIA_blackenBorders.cpp)
22
+INIT_VIDEO_FILTER_CLI(  ADM_vf_blackenBordersCli ${CropCli_SRCS} ${CropCommon_SRCS})
23
+#
24
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/cli Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/cli/DIA_blackenBorders.cpp Added
38
 
1
@@ -0,0 +1,36 @@
2
+/***************************************************************************
3
+                          DIA_crop.cpp  -  description
4
+                             -------------------
5
+
6
+               GUI for cropping including autocrop
7
+               +Revisted the Gtk2 way
8
+                +Autocrop now in RGB space (more accurate)
9
+
10
+    begin                : Fri May 3 2002
11
+    copyright            : (C) 2002/2007 by mean
12
+    email                : fixounet@free.fr
13
+ ***************************************************************************/
14
+
15
+/***************************************************************************
16
+ *                                                                         *
17
+ *   This program is free software; you can redistribute it and/or modify  *
18
+ *   it under the terms of the GNU General Public License as published by  *
19
+ *   the Free Software Foundation; either version 2 of the License, or     *
20
+ *   (at your option) any later version.                                   *
21
+ *                                                                         *
22
+ ***************************************************************************/
23
+#include <stdint.h>
24
+#include "ADM_default.h"
25
+#include "ADM_coreVideoFilter.h"
26
+
27
+#include "../blackenBorder.h"
28
+/**
29
+      \fn     DIA_getCropParams
30
+      \brief  Handle crop dialog
31
+*/
32
+bool DIA_getBlackenParams( blackenBorder *param,ADM_coreVideoFilter *in)
33
+{
34
+    return false;
35
+}
36
+//____________________________________
37
+// EOF
38
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4 Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/DIA_flyBlackenBorders.cpp Added
99
 
1
@@ -0,0 +1,97 @@
2
+/***************************************************************************
3
+                          DIA_flyCrop.cpp  -  description
4
+                             -------------------
5
+
6
+        Common part of the crop dialog
7
+    
8
+    copyright            : (C) 2002/2007 by mean
9
+    email                : fixounet@free.fr
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
+#include "DIA_flyDialogQt4.h"
21
+#include "ADM_default.h"
22
+#include "ADM_image.h"
23
+#include "DIA_flyBlackenBorders.h"
24
+
25
+
26
+/**
27
+    \fn process
28
+   \brief 
29
+*/
30
+uint8_t    flyBlacken::processRgb(uint8_t *imageIn, uint8_t *imageOut)
31
+{
32
+        uint32_t x,y;
33
+        uint8_t  *in;
34
+        uint32_t w=_w,h=_h;
35
+  
36
+        
37
+        memcpy(imageOut,imageIn,_w*_h*4);
38
+        in=imageOut;
39
+        for(y=0;y<top;y++)
40
+        {
41
+                for(x=0;x<w;x++)
42
+                {
43
+                        *in++=0;
44
+                        
45
+                        
46
+                        *in++=0xff;
47
+                        
48
+                        *in++=0;
49
+                        *in++=0;
50
+                }
51
+        }
52
+        // bottom
53
+        in=imageOut+(w*4)*(h-bottom);
54
+        for(y=0;y<bottom;y++)
55
+        {
56
+                for(x=0;x<w;x++)
57
+                {
58
+                        *in++=0;
59
+                        
60
+                        
61
+                        *in++=0xff;
62
+                        *in++=0;
63
+                        *in++=0;
64
+                }
65
+        }
66
+        // left
67
+        in=imageOut;
68
+        uint32_t stride=4*w-4;
69
+        for(y=0;y<h;y++)
70
+        {
71
+                for(x=0;x<left;x++)
72
+                {
73
+                        *(in+4*x)=0;
74
+                        
75
+                        
76
+                        *(in+4*x+1)=0xff;
77
+                        *(in+4*x+2)=0;
78
+                        *(in+4*x+3)=0;
79
+                }
80
+                for(x=0;x<right;x++)
81
+                {
82
+                        *(in-4*x+stride-4)=0;
83
+                        
84
+                        
85
+                        *(in-4*x+stride-3)=0xff;
86
+                        *(in-4*x+stride-2)=0;
87
+                        *(in-4*x+stride-1)=0;
88
+                        
89
+                }
90
+                in+=4*w;
91
+  
92
+        }
93
+        return true;
94
+
95
+}
96
+
97
+//EOF
98
+
99
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/DIA_flyBlackenBorders.h Added
18
 
1
@@ -0,0 +1,16 @@
2
+#pragma once
3
+class flyBlacken : public ADM_flyDialogRgb
4
+{
5
+  
6
+  public:
7
+   uint32_t left,right,top,bottom;
8
+  public:
9
+   uint8_t    processRgb(uint8_t *imageIn, uint8_t *imageOut);
10
+   uint8_t    download(void);
11
+   uint8_t    upload(void);
12
+   uint8_t    autocrop(void);
13
+              flyBlacken (QDialog *parent,uint32_t width,uint32_t height,ADM_coreVideoFilter *in,
14
+                                    ADM_QCanvas *canvas, QSlider *slider) 
15
+                : ADM_flyDialogRgb(parent,width, height,in,canvas, slider,RESIZE_LAST) {};
16
+};
17
+
18
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/Q_blackenBorders.cpp Added
160
 
1
@@ -0,0 +1,158 @@
2
+/***************************************************************************                         
3
+    copyright            : (C) 2002/2017 by mean
4
+    email                : fixounet@free.fr
5
+ ***************************************************************************/
6
+
7
+/***************************************************************************
8
+ *                                                                         *
9
+ *   This program is free software; you can redistribute it and/or modify  *
10
+ *   it under the terms of the GNU General Public License as published by  *
11
+ *   the Free Software Foundation; either version 2 of the License, or     *
12
+ *   (at your option) any later version.                                   *
13
+ *                                                                         *
14
+ ***************************************************************************/
15
+#include "Q_blackenBorders.h"
16
+#include "ADM_toolkitQt.h"
17
+
18
+//
19
+// Video is in RGB Colorspace
20
+//
21
+//
22
+Ui_blackenWindow::Ui_blackenWindow(QWidget* parent, blackenBorder *param,ADM_coreVideoFilter *in) : QDialog(parent)
23
+  {
24
+    uint32_t width,height;
25
+    ui.setupUi(this);    
26
+    lock=0;
27
+    // Allocate space for green-ised video
28
+    width=in->getInfo()->width;
29
+    height=in->getInfo()->height;
30
+
31
+    canvas=new ADM_QCanvas(ui.graphicsView,width,height);
32
+    
33
+    myBlacken=new flyBlacken( this,width, height,in,canvas,ui.horizontalSlider);
34
+    myBlacken->left=param->left;
35
+    myBlacken->right=param->right;
36
+    myBlacken->top=param->top;
37
+    myBlacken->bottom=param->bottom;
38
+    myBlacken->_cookie=&ui;
39
+    myBlacken->addControl(ui.toolboxLayout);
40
+    myBlacken->upload();
41
+    myBlacken->sliderChanged();
42
+
43
+
44
+    connect( ui.horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(sliderUpdate(int)));
45
+    connect( ui.pushButtonReset,SIGNAL(clicked(bool)),this,SLOT(reset(bool)));
46
+#define SPINNER(x) connect( ui.spinBox##x,SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int))); 
47
+    SPINNER(Left);
48
+    SPINNER(Right);
49
+    SPINNER(Top);
50
+    SPINNER(Bottom);
51
+
52
+  }
53
+  void Ui_blackenWindow::sliderUpdate(int foo)
54
+  {
55
+    myBlacken->sliderChanged();
56
+  }
57
+  void Ui_blackenWindow::gather(blackenBorder *param)
58
+  {
59
+
60
+    myBlacken->download();
61
+    param->left=myBlacken->left;
62
+    param->right=myBlacken->right;
63
+    param->top=myBlacken->top;
64
+    param->bottom=myBlacken->bottom;
65
+}
66
+Ui_blackenWindow::~Ui_blackenWindow()
67
+{
68
+  if(myBlacken) 
69
+      delete myBlacken;
70
+  myBlacken=NULL; 
71
+  if(canvas) 
72
+      delete canvas;
73
+  canvas=NULL;
74
+}
75
+void Ui_blackenWindow::valueChanged( int f )
76
+{
77
+  if(lock) return;
78
+  lock++;
79
+  myBlacken->download();
80
+  myBlacken->sameImage();
81
+  lock--;
82
+}
83
+
84
+void Ui_blackenWindow::reset( bool f )
85
+{
86
+    myBlacken->left=0;
87
+    myBlacken->right=0;
88
+    myBlacken->bottom=0;
89
+    myBlacken->top=0;
90
+    lock++;
91
+    myBlacken->upload();
92
+    myBlacken->sameImage();
93
+    lock--;
94
+}
95
+
96
+//************************
97
+uint8_t flyBlacken::upload(void)
98
+{
99
+Ui_blackenDialog *w=(Ui_blackenDialog *)_cookie;
100
+
101
+    w->spinBoxLeft->setValue(left);
102
+    w->spinBoxRight->setValue(right);
103
+    w->spinBoxTop->setValue(top);
104
+    w->spinBoxBottom->setValue(bottom);
105
+    return 1;
106
+}
107
+uint8_t flyBlacken::download(void)
108
+{
109
+    int reject=0;
110
+    Ui_blackenDialog *w=(Ui_blackenDialog *)_cookie;
111
+#define SPIN_GET(x,y) x=w->spinBox##y->value();
112
+        SPIN_GET(left,Left);
113
+        SPIN_GET(right,Right);
114
+        SPIN_GET(top,Top);
115
+        SPIN_GET(bottom,Bottom);
116
+
117
+        printf("%d %d %d %d\n",left,right,top,bottom);
118
+
119
+        left&=0xffffe;
120
+        right&=0xffffe;
121
+        top&=0xffffe;
122
+        bottom&=0xffffe;
123
+
124
+        if((top+bottom)>_h)
125
+                {
126
+                        top=bottom=0;
127
+                        reject=1;
128
+                }
129
+        if((left+right)>_w)
130
+                {
131
+                        left=right=0;
132
+                        reject=1;
133
+                }
134
+        if(reject)
135
+                upload();
136
+        return true;
137
+}
138
+
139
+/**
140
+      \fn     DIA_getCropParams
141
+      \brief  Handle crop dialog
142
+*/
143
+bool DIA_getBlackenParams( blackenBorder *param,ADM_coreVideoFilter *in)
144
+{
145
+    bool ret=0;
146
+
147
+    Ui_blackenWindow dialog(qtLastRegisteredDialog(), param,in);
148
+    qtRegisterDialog(&dialog);
149
+
150
+    if(dialog.exec()==QDialog::Accepted)
151
+    {
152
+        dialog.gather(param); 
153
+        ret=1;
154
+    }
155
+    qtUnregisterDialog(&dialog);
156
+    return ret;
157
+}
158
+//____________________________________
159
+// EOF
160
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/Q_blackenBorders.h Added
32
 
1
@@ -0,0 +1,30 @@
2
+#pragma once
3
+#include "ui_blackenBorders.h"
4
+#include "ADM_image.h"
5
+#include "DIA_flyDialogQt4.h"
6
+#include "DIA_flyBlackenBorders.h"
7
+#include "blackenBorder.h"
8
+class Ui_blackenWindow : public QDialog
9
+{
10
+   Q_OBJECT
11
+
12
+protected: 
13
+   int lock;
14
+
15
+public:
16
+   flyBlacken *myBlacken;
17
+   ADM_QCanvas *canvas;
18
+   Ui_blackenWindow(QWidget* parent, blackenBorder *param,ADM_coreVideoFilter *in);
19
+   ~Ui_blackenWindow();
20
+   Ui_blackenDialog ui;
21
+
22
+public slots:
23
+   void gather(blackenBorder *param);
24
+
25
+private slots:
26
+   void sliderUpdate(int foo);
27
+   void valueChanged(int foo);
28
+   void reset(bool f);
29
+};
30
+
31
+
32
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/blackenBorder/qt4/blackenBorders.ui Added
201
 
1
@@ -0,0 +1,245 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<ui version="4.0">
4
+ <class>blackenDialog</class>
5
+ <widget class="QDialog" name="blackenDialog">
6
+  <property name="geometry">
7
+   <rect>
8
+    <x>0</x>
9
+    <y>0</y>
10
+    <width>507</width>
11
+    <height>300</height>
12
+   </rect>
13
+  </property>
14
+  <property name="windowTitle">
15
+   <string>Blacken Borders</string>
16
+  </property>
17
+  <layout class="QVBoxLayout">
18
+   <property name="spacing">
19
+    <number>6</number>
20
+   </property>
21
+   <property name="leftMargin">
22
+    <number>9</number>
23
+   </property>
24
+   <property name="topMargin">
25
+    <number>9</number>
26
+   </property>
27
+   <property name="rightMargin">
28
+    <number>9</number>
29
+   </property>
30
+   <property name="bottomMargin">
31
+    <number>9</number>
32
+   </property>
33
+   <item>
34
+    <layout class="QGridLayout">
35
+     <property name="leftMargin">
36
+      <number>0</number>
37
+     </property>
38
+     <property name="topMargin">
39
+      <number>0</number>
40
+     </property>
41
+     <property name="rightMargin">
42
+      <number>0</number>
43
+     </property>
44
+     <property name="bottomMargin">
45
+      <number>0</number>
46
+     </property>
47
+     <property name="spacing">
48
+      <number>6</number>
49
+     </property>
50
+     <item row="0" column="3">
51
+      <widget class="QLabel" name="label_2">
52
+       <property name="text">
53
+        <string>Right:</string>
54
+       </property>
55
+      </widget>
56
+     </item>
57
+     <item row="1" column="0">
58
+      <widget class="QLabel" name="label_4">
59
+       <property name="text">
60
+        <string>Top:</string>
61
+       </property>
62
+      </widget>
63
+     </item>
64
+     <item row="0" column="4">
65
+      <widget class="QSpinBox" name="spinBoxRight">
66
+       <property name="maximum">
67
+        <number>2147483647</number>
68
+       </property>
69
+      </widget>
70
+     </item>
71
+     <item row="0" column="2">
72
+      <spacer>
73
+       <property name="orientation">
74
+        <enum>Qt::Horizontal</enum>
75
+       </property>
76
+       <property name="sizeType">
77
+        <enum>QSizePolicy::Fixed</enum>
78
+       </property>
79
+       <property name="sizeHint" stdset="0">
80
+        <size>
81
+         <width>26</width>
82
+         <height>20</height>
83
+        </size>
84
+       </property>
85
+      </spacer>
86
+     </item>
87
+     <item row="1" column="5">
88
+      <spacer>
89
+       <property name="orientation">
90
+        <enum>Qt::Horizontal</enum>
91
+       </property>
92
+       <property name="sizeHint" stdset="0">
93
+        <size>
94
+         <width>40</width>
95
+         <height>20</height>
96
+        </size>
97
+       </property>
98
+      </spacer>
99
+     </item>
100
+     <item row="1" column="6">
101
+      <widget class="QPushButton" name="pushButtonReset">
102
+       <property name="text">
103
+        <string>Reset</string>
104
+       </property>
105
+      </widget>
106
+     </item>
107
+     <item row="1" column="1">
108
+      <widget class="QSpinBox" name="spinBoxTop">
109
+       <property name="maximum">
110
+        <number>2147483647</number>
111
+       </property>
112
+      </widget>
113
+     </item>
114
+     <item row="1" column="4">
115
+      <widget class="QSpinBox" name="spinBoxBottom">
116
+       <property name="maximum">
117
+        <number>2147483647</number>
118
+       </property>
119
+      </widget>
120
+     </item>
121
+     <item row="1" column="3">
122
+      <widget class="QLabel" name="label_3">
123
+       <property name="text">
124
+        <string>Bottom:</string>
125
+       </property>
126
+      </widget>
127
+     </item>
128
+     <item row="0" column="0">
129
+      <widget class="QLabel" name="label">
130
+       <property name="text">
131
+        <string>Left:</string>
132
+       </property>
133
+      </widget>
134
+     </item>
135
+     <item row="0" column="5">
136
+      <spacer>
137
+       <property name="orientation">
138
+        <enum>Qt::Horizontal</enum>
139
+       </property>
140
+       <property name="sizeType">
141
+        <enum>QSizePolicy::MinimumExpanding</enum>
142
+       </property>
143
+       <property name="sizeHint" stdset="0">
144
+        <size>
145
+         <width>40</width>
146
+         <height>20</height>
147
+        </size>
148
+       </property>
149
+      </spacer>
150
+     </item>
151
+     <item row="0" column="1">
152
+      <widget class="QSpinBox" name="spinBoxLeft">
153
+       <property name="maximum">
154
+        <number>2147483647</number>
155
+       </property>
156
+      </widget>
157
+     </item>
158
+     <item row="1" column="2">
159
+      <spacer>
160
+       <property name="orientation">
161
+        <enum>Qt::Horizontal</enum>
162
+       </property>
163
+       <property name="sizeType">
164
+        <enum>QSizePolicy::Fixed</enum>
165
+       </property>
166
+       <property name="sizeHint" stdset="0">
167
+        <size>
168
+         <width>26</width>
169
+         <height>20</height>
170
+        </size>
171
+       </property>
172
+      </spacer>
173
+     </item>
174
+    </layout>
175
+   </item>
176
+   <item>
177
+    <layout class="QHBoxLayout" name="toolboxLayout"/>
178
+   </item>
179
+   <item>
180
+    <widget class="QSlider" name="horizontalSlider">
181
+     <property name="orientation">
182
+      <enum>Qt::Horizontal</enum>
183
+     </property>
184
+    </widget>
185
+   </item>
186
+   <item>
187
+    <widget class="QGraphicsView" name="graphicsView"/>
188
+   </item>
189
+   <item>
190
+    <widget class="QDialogButtonBox" name="buttonBox">
191
+     <property name="orientation">
192
+      <enum>Qt::Horizontal</enum>
193
+     </property>
194
+     <property name="standardButtons">
195
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
196
+     </property>
197
+    </widget>
198
+   </item>
199
+  </layout>
200
+ </widget>
201
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/changeFps/changeFps.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/changeFps/changeFps.cpp Changed
11
 
1
@@ -125,8 +125,7 @@
2
     timing/=configuration.newFpsDen;
3
     timing*=configuration.newFpsNum;
4
     timing*=configuration.oldFpsDen;
5
-    if(false==ADM_coreVideoFilter::goToTime((uint64_t)timing)) return false;
6
-    return true;
7
+    return  previousFilter->goToTime((uint64_t)timing);
8
 }
9
 
10
 /**
11
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/contrast/qt4/Q_contrast.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/contrast/qt4/Q_contrast.cpp Changed
65
 
1
@@ -57,12 +57,19 @@
2
 #define SPINNER(x) connect( ui.dial##x,SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int))); 
3
           SPINNER(Brightness);
4
           SPINNER(Contrast);
5
-          
6
-        QString title=QString("Contrast: %1 %").arg((int)(100*myCrop->param.coef));
7
-        QString title2=QString("Brightness: %2").arg(myCrop->param.offset);
8
-        ui.labelContrast->setText(title);
9
-        ui.labelBrightness->setText(title2);
10
-          
11
+
12
+        setDialTitles();
13
+        // Allocate enough width for dial titles to avoid shifting elements of the dialog
14
+        // on transition e.g. 100% <-> 99% with large font sizes
15
+        QString text=QString(QT_TRANSLATE_NOOP("contrast","Contrast"))+QString(": 100 %");
16
+        QString text2=QString(QT_TRANSLATE_NOOP("contrast","Brightness"))+QString(": -100");
17
+        QFontMetrics fm=ui.labelContrast->fontMetrics();
18
+        QFontMetrics fm2=ui.labelBrightness->fontMetrics();
19
+        int labelContrastWidth=fm.boundingRect(text).width()+8; // 8px security margin
20
+        int labelBrightnessWidth=fm2.boundingRect(text2).width()+8; // 8px security margin
21
+        ui.labelContrast->setMinimumWidth(labelContrastWidth);
22
+        ui.labelBrightness->setMinimumWidth(labelBrightnessWidth);
23
+
24
           connect( ui.checkBoxU,SIGNAL(stateChanged(int)),this,SLOT(valueChanged(int)));
25
           connect( ui.checkBoxV,SIGNAL(stateChanged(int)),this,SLOT(valueChanged(int))); 
26
           connect( ui.checkBoxY,SIGNAL(stateChanged(int)),this,SLOT(valueChanged(int)));  
27
@@ -108,10 +115,7 @@
28
   myCrop->param.offset=-16;
29
   myCrop->upload();
30
   myCrop->sameImage();
31
-  QString title=QString("Contrast: %1 %").arg((int)(100*myCrop->param.coef));
32
-  QString title2=QString("Brightness: %2").arg(myCrop->param.offset);
33
-  ui.labelContrast->setText(title);
34
-  ui.labelBrightness->setText(title2);
35
+  setDialTitles();
36
   lock--;
37
 }
38
 /**
39
@@ -134,13 +138,21 @@
40
   lock++;
41
   myCrop->download();
42
   myCrop->sameImage();
43
-  QString title=QString("Contrast: %1 %").arg((int)(100*myCrop->param.coef));
44
-  QString title2=QString("Brightness: %2").arg(myCrop->param.offset);
45
-  ui.labelContrast->setText(title);
46
-  ui.labelBrightness->setText(title2);
47
+  setDialTitles();
48
   lock--;
49
 }
50
 
51
+/**
52
+ *    \fn setDialTitles
53
+ */
54
+void Ui_contrastWindow::setDialTitles(void)
55
+{
56
+    QString title=QString(QT_TRANSLATE_NOOP("contrast","Contrast"))+QString(": %1 %").arg((int)(100*myCrop->param.coef));
57
+    QString title2=QString(QT_TRANSLATE_NOOP("contrast","Brightness"))+QString(": %2").arg(myCrop->param.offset);
58
+    ui.labelContrast->setText(title);
59
+    ui.labelBrightness->setText(title2);
60
+}
61
+
62
 #define MYSPIN(x) w->dial##x
63
 #define MYCHECK(x) w->checkBox##x
64
 /**
65
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/contrast/qt4/Q_contrast.h -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/contrast/qt4/Q_contrast.h Changed
11
 
1
@@ -27,6 +27,9 @@
2
 {
3
    Q_OBJECT
4
 
5
+private:
6
+        void setDialTitles(void);
7
+
8
 protected : 
9
    int lock;
10
         QGraphicsScene *scene;
11
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/crop/ADM_vidCrop.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/crop/ADM_vidCrop.cpp Changed
12
 
1
@@ -53,8 +53,8 @@
2
                         ADM_UI_TYPE_BUILD,         // UI
3
                         VF_TRANSFORM,            // Category
4
                         "crop",            // internal name (must be uniq!)
5
-                        QT_TRANSLATE_NOOP("crop","crop"),            // Display name
6
-                        QT_TRANSLATE_NOOP("crop","crop filter") // Description
7
+                        QT_TRANSLATE_NOOP("crop","Crop"),            // Display name
8
+                        QT_TRANSLATE_NOOP("crop","Crop filter") // Description
9
                     );
10
 
11
 
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/hue/qt4/DIA_flyHue.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/hue/qt4/DIA_flyHue.cpp Changed
12
 
1
@@ -58,8 +58,8 @@
2
                  hue, sat);
3
     // Copy half source to display
4
     in->copyLeftSideTo(out);
5
-    out->printString(1,1,QT_TRANSLATE_NOOP("hue","Original"));
6
-    out->printString(in->GetWidth(PLANAR_Y)/24+1,1,QT_TRANSLATE_NOOP("hue","Processed"));
7
+    out->printString(1,1,"Original"); // printString can't handle non-ascii input, do not translate this!
8
+    out->printString(in->GetWidth(PLANAR_Y)/24+1,1,"Processed"); // as above, don't try to translate
9
 
10
     return 1;
11
 }
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/ADM_vidMSharpen.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/ADM_vidMSharpen.cpp Changed
201
 
1
@@ -1,16 +1,12 @@
2
 /***************************************************************************
3
-                          ADM_vidMSharpen  -  description
4
-                             -------------------
5
-    
6
-    email                : fixounet@free.fr
7
-
8
+    \file ADM_vidMSharpen 
9
+ * 
10
     Port of Donal Graft Msharpen which is (c) Donald Graft
11
     http://www.neuron2.net
12
     http://puschpull.org/avisynth/decomb_reference_manual.html
13
 
14
         It is a bit less efficient as we do hz & vz blur separately
15
-        The formula has been changed a bit from 1 1 1 to 1 2 1
16
-        for speed aspect & MMX  
17
+        The formula has been changed a bit from 1 1 1 to 1 2 1 for speed aspect & MMX  
18
         Mean
19
 
20
  ***************************************************************************/
21
@@ -33,45 +29,14 @@
22
    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23
 */
24
 
25
-#include "ADM_default.h"
26
-#include "DIA_factory.h"
27
-#include "ADM_coreVideoFilter.h"
28
-#include "msharpen.h"
29
-#include "msharpen_desc.cpp"
30
-/**
31
-    \class Msharpen
32
-*/
33
-class Msharpen : public ADM_coreVideoFilterCached
34
-{
35
-private:
36
-        msharpen   _param;
37
-        ADMImage        *blurrImg,*work;
38
-
39
-        uint32_t        invstrength;
40
-
41
-                void    detect_edges(ADMImage *src, ADMImage *dst, int plane);
42
-                void    blur_plane(ADMImage *src, ADMImage *blur, int plane) ;
43
-                void    detect_edges_HiQ(ADMImage *src, ADMImage *dst, int plane);
44
-                void    apply_filter(ADMImage *src,ADMImage *blur, ADMImage *dst,int plane) ;
45
-public:    
46
-
47
-                            Msharpen(ADM_coreVideoFilter *in,CONFcouple *couples)   ;
48
-                            ~Msharpen();
49
-
50
-       virtual const char  *getConfiguration(void);          /// Return  current configuration as a human readable string
51
-       virtual bool         getNextFrame(uint32_t *fn,ADMImage *image);    /// Return the next image
52
-       virtual bool         getCoupledConf(CONFcouple **couples) ;   /// Return the current filter configuration
53
-       virtual void         setCoupledConf(CONFcouple *couples);
54
-       virtual bool         configure(void) ;                 /// Start graphical user interface        
55
-       
56
-};
57
-//********** Register chunk ************
58
 
59
+#include "ADM_vidMSharpen.h"
60
+#include "msharpen_desc.cpp"
61
 // DECLARE FILTER 
62
-
63
+extern bool DIA_msharpen(msharpen &param, ADM_coreVideoFilter *source);
64
 DECLARE_VIDEO_FILTER(   Msharpen,   // Class
65
                         1,0,0,              // Version
66
-                        ADM_UI_ALL,         // UI
67
+                        ADM_UI_TYPE_BUILD,         // UI
68
                         VF_SHARPNESS,            // Category
69
                         "msharpen",            // internal name (must be uniq!)
70
                         QT_TRANSLATE_NOOP("msharpen","Msharpen"),            // Display name
71
@@ -121,32 +86,6 @@
72
     work=NULL;
73
 }
74
 /**
75
-    \fn configure
76
-*/
77
-bool Msharpen::configure(void)
78
-{
79
-uint8_t r=0;
80
-
81
-#define PX(x) &(_param.x)
82
-  
83
-        
84
-    diaElemToggle    mask(PX(mask),QT_TRANSLATE_NOOP("msharpen","_Mask"));
85
-    diaElemToggle    highq(PX(highq),QT_TRANSLATE_NOOP("msharpen","_High Q"));
86
-    
87
-    diaElemUInteger   threshold(PX(threshold),QT_TRANSLATE_NOOP("msharpen","_Threshold:"),1,255);
88
-    diaElemUInteger   strength(PX(strength),QT_TRANSLATE_NOOP("msharpen","_Strength:"),1,255);
89
-    
90
-    
91
-  diaElem *elems[4]={&mask,&highq,&threshold,&strength};
92
-
93
-  if(diaFactoryRun(QT_TRANSLATE_NOOP("msharpen","MSharpen"),4,elems))
94
-  {
95
-         invstrength=255-_param.strength;
96
-         return 1;
97
-  }
98
-  return 0;
99
-}
100
-/**
101
     \fn getConfiguration
102
 */
103
 const char *Msharpen::getConfiguration(void)
104
@@ -176,12 +115,12 @@
105
     for (int i=0;i<3;i++)
106
     {
107
             
108
-            blur_plane(src, blur, i);
109
-            detect_edges(blur, dst,  i);
110
+            blur_plane(src, blur, i,work);
111
+            detect_edges(blur, dst,  i,_param);
112
             if (_param.highq == true)
113
-                detect_edges_HiQ(blur, dst,  i);
114
+                detect_edges_HiQ(blur, dst,  i,_param);
115
             if (!_param.mask) 
116
-                apply_filter(src, blur, dst,  i);
117
+                apply_filter(src, blur, dst,  i,_param,invstrength);
118
     }
119
 
120
     *fn=nextFrame;
121
@@ -197,7 +136,7 @@
122
  *  are processed independently.
123
  *********************************/
124
 
125
-void Msharpen::blur_plane(ADMImage *src, ADMImage *blur, int plane) 
126
+void Msharpen::blur_plane(ADMImage *src, ADMImage *blur, int plane,ADMImage *work) 
127
 {
128
 /*
129
   uint64_t mask1 = 0x00001C711C711C71LL;
130
@@ -370,7 +309,7 @@
131
  * @param dst
132
  * @param plane
133
  */
134
-void Msharpen::detect_edges(ADMImage *src, ADMImage *dst,  int plane) 
135
+void Msharpen::detect_edges(ADMImage *src, ADMImage *dst,  int plane,const msharpen &param) 
136
 {
137
   int ww,hh;
138
 
139
@@ -401,7 +340,7 @@
140
             n=srcpn[xx+1];
141
             c=srcpn[xx-1];
142
 
143
-            if(abs(n-p)>_param.threshold || abs(c-p)>_param.threshold) dstp[xx+1]=0xff;
144
+            if(abs(n-p)>param.threshold || abs(c-p)>param.threshold) dstp[xx+1]=0xff;
145
                             else dstp[xx+1]=0;
146
 
147
         }
148
@@ -409,7 +348,7 @@
149
       srcpn+=src_pitch;
150
       dstp+=dst_pitch;
151
      }
152
-  if (_param.mask) 
153
+  if (param.mask) 
154
   {
155
     dstp=dstp_saved;
156
     memset(dstp_saved+(hh-1)*dst_pitch,0,ww);  // Not used, if not returning mask
157
@@ -424,7 +363,7 @@
158
 }
159
 
160
 //***************************************************
161
-void Msharpen::detect_edges_HiQ(ADMImage *src, ADMImage *dst, int plane) 
162
+void Msharpen::detect_edges_HiQ(ADMImage *src, ADMImage *dst, int plane,const msharpen &param) 
163
 {
164
 // Vertical detail detection
165
   unsigned char *srcp,*srcp_saved; 
166
@@ -464,7 +403,7 @@
167
     for (int y=0;y<h-1;dstp+=dst_pitch,srcp+=src_pitch,srcpn+=src_pitch,y++)
168
     {
169
       b2=srcpn[x];
170
-      if (abs(b1-b2)>=_param.threshold)
171
+      if (abs(b1-b2)>=param.threshold)
172
         dstp[x]=255;
173
       b1=b2;
174
     }
175
@@ -479,7 +418,7 @@
176
     for (int x=0;x<w-1;x++)
177
     {
178
       b2=srcp[x+1];
179
-      if (abs(b1-b2)>=_param.threshold)
180
+      if (abs(b1-b2)>=param.threshold)
181
         dstp[x]=255;
182
       b1=b2;
183
     }
184
@@ -499,7 +438,7 @@
185
   }
186
 }
187
 //***************************************************
188
-void Msharpen::apply_filter(ADMImage *src,ADMImage *blur, ADMImage *dst, int plane) 
189
+void Msharpen::apply_filter(ADMImage *src,ADMImage *blur, ADMImage *dst, int plane,const msharpen &param,uint32_t invstrength) 
190
 {
191
   // TODO: MMX / ISSE
192
   const unsigned char *srcp ;
193
@@ -563,7 +502,7 @@
194
         else 
195
             if (b4>255) 
196
                 b4=255;
197
-        dstp[x]=(_param.strength*b4+invstrength*(int)(srcp[x]))>>8;
198
+        dstp[x]=(param.strength*b4+invstrength*(int)(srcp[x]))>>8;
199
       }
200
       else
201
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/ADM_vidMSharpen.h Added
72
 
1
@@ -0,0 +1,70 @@
2
+/***************************************************************************
3
+                          ADM_vidMSharpen  -  description
4
+                             -------------------
5
+    
6
+    email                : fixounet@free.fr
7
+
8
+    Port of Donal Graft Msharpen which is (c) Donald Graft
9
+    http://www.neuron2.net
10
+    http://puschpull.org/avisynth/decomb_reference_manual.html
11
+
12
+        It is a bit less efficient as we do hz & vz blur separately
13
+        The formula has been changed a bit from 1 1 1 to 1 2 1
14
+        for speed aspect & MMX  
15
+        Mean
16
+
17
+ ***************************************************************************/
18
+/*
19
+   Msharpen plugin for Avisynth -- performs detail-preserving smoothing.
20
+
21
+   Copyright (C) 2003 Donald A. Graft
22
+
23
+   This program is free software; you can redistribute it and/or modify
24
+   it under the terms of the GNU General Public License as published by
25
+   the Free Software Foundation.
26
+
27
+   This program is distributed in the hope that it will be useful,
28
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
29
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30
+   GNU General Public License for more details.
31
+
32
+   You should have received a copy of the GNU General Public License
33
+   along with this program; if not, write to the Free Software
34
+   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
35
+*/
36
+#pragma once
37
+#include "ADM_default.h"
38
+#include "DIA_factory.h"
39
+#include "ADM_coreVideoFilter.h"
40
+#include "msharpen.h"
41
+
42
+/**
43
+    \class Msharpen
44
+*/
45
+class Msharpen : public ADM_coreVideoFilterCached
46
+{
47
+private:
48
+        msharpen   _param;
49
+        ADMImage        *blurrImg,*work;
50
+
51
+        uint32_t        invstrength;
52
+
53
+public:    
54
+
55
+                            Msharpen(ADM_coreVideoFilter *in,CONFcouple *couples)   ;
56
+                            ~Msharpen();
57
+
58
+       virtual const char  *getConfiguration(void);          /// Return  current configuration as a human readable string
59
+       virtual bool         getNextFrame(uint32_t *fn,ADMImage *image);    /// Return the next image
60
+       virtual bool         getCoupledConf(CONFcouple **couples) ;   /// Return the current filter configuration
61
+       virtual void         setCoupledConf(CONFcouple *couples);
62
+       virtual bool         configure(void) ;                 /// Start graphical user interface        
63
+public:
64
+       static  void    detect_edges(ADMImage *src, ADMImage *dst, int plane,const msharpen &param);
65
+       static  void    blur_plane(ADMImage *src, ADMImage *blur, int plane,ADMImage *work) ;
66
+       static  void    detect_edges_HiQ(ADMImage *src, ADMImage *dst, int plane,const msharpen &param);
67
+       static  void    apply_filter(ADMImage *src,ADMImage *blur, ADMImage *dst,int plane,const msharpen &param,uint32_t invstrength) ;
68
+
69
+
70
+       
71
+};
72
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/CMakeLists.txt Changed
31
 
1
@@ -1,9 +1,23 @@
2
+
3
+SET(msharpenCommon_SRCS 
4
+ADM_vidMSharpen.cpp
5
+)
6
 INCLUDE(vf_plugin)
7
+# ---------- QT4 Version ----------------
8
+INCLUDE(vf_plugin_qt4)
9
+SET(msharpenQT_SRCS  qt4/Q_msharpen.cpp )
10
+SET(msharpenQT_HEADERS  qt4/Q_msharpen.h)
11
+SET(msharpenQT_UI    qt4/msharpen)
12
+IF(DO_QT4)
13
+  INIT_VIDEO_FILTER_QT4(ADM_vf_msharpen${QT_LIBRARY_EXTENSION} ${msharpenQT_SRCS} ${msharpenQT_HEADERS} ${msharpenQT_UI} ${msharpenCommon_SRCS} qt4/DIA_flymsharpen.cpp ${resource})
14
+ENDIF(DO_QT4)
15
+# /QT4
16
 
17
 
18
-SET(ADM_vf_mSharpen_SRCS ADM_vidMSharpen.cpp)
19
-SET(FILTERSRC ${ADM_vf_mSharpen_SRCS})
20
-SET(FILTERNAME ADM_vf_msharpen)
21
-ADD_VIDEO_FILTER( ${FILTERNAME} ${FILTERSRC}  )
22
-INIT_VIDEO_FILTER(${FILTERNAME})
23
-INSTALL_VIDEO_FILTER(${FILTERNAME})
24
+#------------ Cli Version ----------------
25
+INCLUDE(vf_plugin_cli)
26
+SET(msharpenCli_SRCS cli/DIA_flymsharpen.cpp)
27
+IF(DO_CLI)
28
+  INIT_VIDEO_FILTER_CLI(  ADM_vf_msharpenCli ${msharpenCli_SRCS} ${msharpenCommon_SRCS})
29
+ENDIF(DO_CLI)
30
+#
31
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/cli Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/cli/DIA_flymsharpen.cpp Added
13
 
1
@@ -0,0 +1,11 @@
2
+#include <stdint.h>
3
+#include "ADM_default.h"
4
+#include "ADM_coreVideoFilter.h"
5
+
6
+#include "../msharpen.h"
7
+
8
+bool DIA_msharpen(msharpen &param, ADM_coreVideoFilter *in)
9
+{
10
+   return 0;
11
+}
12
+
13
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4 Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/DIA_flymsharpen.cpp Added
163
 
1
@@ -0,0 +1,161 @@
2
+/***************************************************************************
3
+                          DIA_flyMSharpen
4
+                             -------------------
5
+
6
+                           Ui for msharpen
7
+    copyright            : (C) 2004/2017 by mean
8
+    email                : fixounet@free.fr
9
+ ***************************************************************************/
10
+
11
+/***************************************************************************
12
+ *                                                                         *
13
+ *   This program is free software; you can redistribute it and/or modify  *
14
+ *   it under the terms of the GNU General Public License as published by  *
15
+ *   the Free Software Foundation; either version 2 of the License, or     *
16
+ *   (at your option) any later version.                                   *
17
+ *                                                                         *
18
+ ***************************************************************************/
19
+#include "DIA_flyDialogQt4.h"
20
+#include "QSizeGrip"
21
+#include "QHBoxLayout"
22
+#include "ADM_default.h"
23
+#include "ADM_image.h"
24
+#include "msharpen.h"
25
+#include "DIA_flymsharpen.h"
26
+#include "ADM_vidMSharpen.h"
27
+#include "Q_msharpen.h"
28
+#include "ADM_toolkitQt.h"
29
+
30
+
31
+#if 0
32
+#define aprintf printf
33
+#else
34
+#define aprintf(...) {}
35
+#endif
36
+
37
+
38
+/**
39
+ * 
40
+ * @param parent
41
+ * @param width
42
+ * @param height
43
+ * @param in
44
+ * @param canvas
45
+ * @param slider
46
+ */
47
+ flyMSharpen::flyMSharpen (QDialog *parent,uint32_t width,uint32_t height,ADM_coreVideoFilter *in,
48
+                                    ADM_QCanvas *canvas, QSlider *slider) : 
49
+                ADM_flyDialogYuv(parent,width, height,in,canvas, slider,RESIZE_AUTO) 
50
+ {
51
+     blur=  new ADMImageDefault(_w/2,_h);
52
+     work=  new ADMImageDefault(_w,_h);;     //<-dafuq ?
53
+ }
54
+ /**
55
+  * 
56
+  */
57
+flyMSharpen::~flyMSharpen()
58
+{
59
+    delete blur;
60
+    delete work;
61
+    blur=NULL;
62
+    work=NULL;
63
+}
64
+
65
+
66
+/**
67
+    \fn process
68
+*/
69
+uint8_t    flyMSharpen::processYuv(ADMImage* in, ADMImage *out)
70
+{        
71
+    
72
+    ADMImageRef          refIn(_w/2,_h);
73
+    ADMImageRefWrittable refOut(_w/2,_h);
74
+    
75
+    in->copyLeftSideTo(out);
76
+    
77
+    for(int i=0;i<3;i++)
78
+    {
79
+        int halfWidth=in->GetWidth((ADM_PLANE)i)/2; // in and out have the same width
80
+        refIn._planeStride[i] =in->_planeStride[i];
81
+        refOut._planeStride[i]=out->_planeStride[i];
82
+        refIn._planes[i]      =in->_planes[i];//+halfWidth;
83
+        refOut._planes[i]     =out->_planes[i]+halfWidth;
84
+    }
85
+    
86
+    for (int i=0;i<3;i++)
87
+    { 
88
+            Msharpen::blur_plane(&refIn, blur, i,work);
89
+            Msharpen::detect_edges(blur, &refOut,  i,param);
90
+            if (param.highq == true)
91
+                Msharpen::detect_edges_HiQ(blur, &refOut,  i,param);
92
+            if (!param.mask) 
93
+                Msharpen::apply_filter(&refIn, blur, &refOut,  i,param,invstrength);
94
+    }
95
+    out->copyInfo(in);
96
+    out->printString(1,1,"Original"); // printString can't handle non-ascii input, do not translate this!
97
+    out->printString(in->GetWidth(PLANAR_Y)/24+1,1,"Processed"); // as above, don't try to translate
98
+
99
+    return 1;
100
+}
101
+
102
+/**
103
+ * \fn upload
104
+ * @return 
105
+ */
106
+uint8_t flyMSharpen::upload()
107
+{
108
+#define MYSPIN(x) w->x
109
+#define MYTOGGLE(x) w->x
110
+    Ui_msharpenDialog *w=(Ui_msharpenDialog *)_cookie;
111
+    
112
+    
113
+    MYSPIN(spinBoxThreshold)->setValue(param.threshold);
114
+    MYSPIN(spinBoxStrength)->setValue(param.strength);
115
+    MYTOGGLE(CheckBoxHQ)->setChecked(param.highq);
116
+    MYTOGGLE(checkBoxMask)->setChecked(param.mask);
117
+    invstrength=255-param.strength;    
118
+    printf("Upload\n");
119
+    return 1;
120
+}
121
+/**
122
+        \fn download
123
+*/
124
+uint8_t flyMSharpen::download(void)
125
+{
126
+    
127
+#define MYSPIN(x) w->x
128
+#define MYTOGGLE(x) w->x
129
+    Ui_msharpenDialog *w=(Ui_msharpenDialog *)_cookie;
130
+    
131
+    
132
+    param.threshold=MYSPIN(spinBoxThreshold)->value();
133
+    param.strength=MYSPIN(spinBoxStrength)->value();
134
+    param.highq= MYTOGGLE(CheckBoxHQ)->isChecked();
135
+    param.mask= MYTOGGLE(checkBoxMask)->isChecked();
136
+    invstrength=255-param.strength;    
137
+    printf("Download\n");
138
+    return true;
139
+}
140
+
141
+/**
142
+      \fn     DIA_getMpDelogo
143
+      \brief  Handle delogo dialog
144
+*/
145
+bool DIA_msharpen(msharpen &param, ADM_coreVideoFilter *in)
146
+{
147
+        bool ret=false;
148
+        
149
+        Ui_msharpenWindow dialog(qtLastRegisteredDialog(), &param,in);
150
+       qtRegisterDialog(&dialog);
151
+
152
+        if(dialog.exec()==QDialog::Accepted)
153
+        {
154
+            dialog.gather(&param); 
155
+            ret=true;
156
+        }
157
+
158
+        qtUnregisterDialog(&dialog);
159
+        return ret;
160
+}
161
+
162
+//EOF
163
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/DIA_flymsharpen.h Added
39
 
1
@@ -0,0 +1,37 @@
2
+/***************************************************************************
3
+    copyright            : (C) 2011 by mean
4
+    email                : fixounet@free.fr
5
+ ***************************************************************************/
6
+
7
+/***************************************************************************
8
+ *                                                                         *
9
+ *   This program is free software; you can redistribute it and/or modify  *
10
+ *   it under the terms of the GNU General Public License as published by  *
11
+ *   the Free Software Foundation; either version 2 of the License, or     *
12
+ *   (at your option) any later version.                                   *
13
+ *                                                                         *
14
+ ***************************************************************************/
15
+#pragma once
16
+
17
+#include "msharpen.h"
18
+/**
19
+    \class flyMSharpen
20
+*/
21
+class flyMSharpen : public ADM_flyDialogYuv
22
+{
23
+protected:
24
+public:
25
+   msharpen    param;
26
+   bool        preview;
27
+   uint32_t    invstrength;
28
+   ADMImage    *blur,*work;
29
+public:
30
+   uint8_t     processYuv(ADMImage* in, ADMImage *out);
31
+   uint8_t     download(void);
32
+   uint8_t     upload();
33
+               flyMSharpen (QDialog *parent,uint32_t width,uint32_t height,ADM_coreVideoFilter *in,
34
+                                    ADM_QCanvas *canvas, QSlider *slider);
35
+                
36
+   virtual     ~flyMSharpen() ;
37
+};
38
+// EOF
39
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/Q_msharpen.cpp Added
91
 
1
@@ -0,0 +1,89 @@
2
+/***************************************************************************
3
+                         Q_Asharp.cpp  -  description
4
+                             -------------------
5
+
6
+                flyDialog for Asharp
7
+                +Revisted the Gtk2 way
8
+
9
+    copyright            : (C) 2004/2007 by mean
10
+    email                : fixounet@free.fr
11
+ ***************************************************************************/
12
+
13
+/***************************************************************************
14
+ *                                                                         *
15
+ *   This program is free software; you can redistribute it and/or modify  *
16
+ *   it under the terms of the GNU General Public License as published by  *
17
+ *   the Free Software Foundation; either version 2 of the License, or     *
18
+ *   (at your option) any later version.                                   *
19
+ *                                                                         *
20
+ ***************************************************************************/
21
+
22
+#include "Q_msharpen.h"
23
+#include "ADM_toolkitQt.h"
24
+
25
+//
26
+// Video is in YV12 Colorspace
27
+//
28
+//
29
+  Ui_msharpenWindow::Ui_msharpenWindow(QWidget *parent,  msharpen *param, ADM_coreVideoFilter *in) : QDialog(parent)
30
+  {
31
+    uint32_t width,height;
32
+        ui.setupUi(this);
33
+        lock=0;
34
+        // Allocate space for green-ised video
35
+        width=in->getInfo()->width;
36
+        height=in->getInfo()->height;
37
+
38
+        canvas=new ADM_QCanvas(ui.graphicsView,width,height);
39
+        
40
+        flymsharpen=new flyMSharpen( this,width, height,in,canvas,ui.horizontalSlider);
41
+        memcpy(&(flymsharpen->param),param,sizeof(*param));
42
+        flymsharpen->_cookie=&ui;
43
+        flymsharpen->addControl(ui.toolboxLayout);
44
+        flymsharpen->upload();
45
+        flymsharpen->sliderChanged();
46
+
47
+
48
+        connect( ui.horizontalSlider,SIGNAL(valueChanged(int)),this,SLOT(sliderUpdate(int)));
49
+#define SPINNER(x) connect( ui.spinBox##x,SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int))); 
50
+#define TOGGLER(x) connect( ui.x,SIGNAL(stateChanged(int)),this,SLOT(valueChanged(int))); 
51
+        
52
+        TOGGLER(CheckBoxHQ);
53
+        TOGGLER(checkBoxMask);
54
+        
55
+        SPINNER(Threshold);
56
+        SPINNER(Strength);
57
+  }
58
+  void Ui_msharpenWindow::sliderUpdate(int foo)
59
+  {
60
+    flymsharpen->sliderChanged();
61
+  }
62
+  void Ui_msharpenWindow::gather(msharpen *param)
63
+  {
64
+    
65
+        flymsharpen->download();
66
+        memcpy(param,&(flymsharpen->param),sizeof(*param));
67
+  }
68
+Ui_msharpenWindow::~Ui_msharpenWindow()
69
+{
70
+  if(flymsharpen) delete flymsharpen;
71
+  flymsharpen=NULL; 
72
+  if(canvas) delete canvas;
73
+  canvas=NULL;
74
+}
75
+void Ui_msharpenWindow::valueChanged( int f )
76
+{
77
+  printf("Update \n");
78
+  if(lock) return;
79
+  lock++;
80
+  flymsharpen->download();
81
+  flymsharpen->sameImage();
82
+  lock--;
83
+}
84
+
85
+#define MYSPIN(x) w->doubleSpinBox##x
86
+
87
+//____________________________________
88
+// EOF
89
+
90
+
91
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/Q_msharpen.h Added
29
 
1
@@ -0,0 +1,27 @@
2
+#pragma once
3
+#include "ui_msharpen.h"
4
+#include "DIA_flyDialogQt4.h"
5
+#include "ADM_image.h"
6
+#include "msharpen.h"
7
+#include "DIA_flymsharpen.h"
8
+class Ui_msharpenWindow : public QDialog
9
+{
10
+        Q_OBJECT
11
+
12
+protected: 
13
+        int lock;
14
+
15
+public:
16
+        flyMSharpen *flymsharpen;
17
+        ADM_QCanvas *canvas;
18
+        Ui_msharpenWindow(QWidget *parent, msharpen *param, ADM_coreVideoFilter *in);
19
+        ~Ui_msharpenWindow();
20
+        Ui_msharpenDialog ui;
21
+
22
+public slots:
23
+        void gather(msharpen *param);
24
+
25
+private slots:
26
+        void sliderUpdate(int foo);
27
+        void valueChanged(int foo);
28
+};
29
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mSharpen/qt4/msharpen.ui Added
197
 
1
@@ -0,0 +1,195 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<ui version="4.0">
4
+ <class>msharpenDialog</class>
5
+ <widget class="QDialog" name="msharpenDialog">
6
+  <property name="geometry">
7
+   <rect>
8
+    <x>0</x>
9
+    <y>0</y>
10
+    <width>481</width>
11
+    <height>454</height>
12
+   </rect>
13
+  </property>
14
+  <property name="windowTitle">
15
+   <string>MSharpen</string>
16
+  </property>
17
+  <property name="modal">
18
+   <bool>true</bool>
19
+  </property>
20
+  <layout class="QGridLayout">
21
+   <property name="leftMargin">
22
+    <number>9</number>
23
+   </property>
24
+   <property name="topMargin">
25
+    <number>9</number>
26
+   </property>
27
+   <property name="rightMargin">
28
+    <number>9</number>
29
+   </property>
30
+   <property name="bottomMargin">
31
+    <number>9</number>
32
+   </property>
33
+   <property name="spacing">
34
+    <number>6</number>
35
+   </property>
36
+   <item row="2" column="3">
37
+    <spacer>
38
+     <property name="orientation">
39
+      <enum>Qt::Horizontal</enum>
40
+     </property>
41
+     <property name="sizeHint" stdset="0">
42
+      <size>
43
+       <width>40</width>
44
+       <height>20</height>
45
+      </size>
46
+     </property>
47
+    </spacer>
48
+   </item>
49
+   <item row="1" column="3">
50
+    <spacer>
51
+     <property name="orientation">
52
+      <enum>Qt::Horizontal</enum>
53
+     </property>
54
+     <property name="sizeHint" stdset="0">
55
+      <size>
56
+       <width>40</width>
57
+       <height>20</height>
58
+      </size>
59
+     </property>
60
+    </spacer>
61
+   </item>
62
+   <item row="0" column="3">
63
+    <spacer>
64
+     <property name="orientation">
65
+      <enum>Qt::Horizontal</enum>
66
+     </property>
67
+     <property name="sizeHint" stdset="0">
68
+      <size>
69
+       <width>40</width>
70
+       <height>20</height>
71
+      </size>
72
+     </property>
73
+    </spacer>
74
+   </item>
75
+   <item row="3" column="0" colspan="3">
76
+    <widget class="QCheckBox" name="checkBoxMask">
77
+     <property name="text">
78
+      <string>Mask</string>
79
+     </property>
80
+    </widget>
81
+   </item>
82
+   <item row="3" column="3">
83
+    <spacer>
84
+     <property name="orientation">
85
+      <enum>Qt::Horizontal</enum>
86
+     </property>
87
+     <property name="sizeHint" stdset="0">
88
+      <size>
89
+       <width>40</width>
90
+       <height>20</height>
91
+      </size>
92
+     </property>
93
+    </spacer>
94
+   </item>
95
+   <item row="5" column="0" colspan="4">
96
+    <widget class="QSlider" name="horizontalSlider">
97
+     <property name="orientation">
98
+      <enum>Qt::Horizontal</enum>
99
+     </property>
100
+    </widget>
101
+   </item>
102
+   <item row="7" column="1" colspan="3">
103
+    <widget class="QDialogButtonBox" name="buttonBox">
104
+     <property name="orientation">
105
+      <enum>Qt::Horizontal</enum>
106
+     </property>
107
+     <property name="standardButtons">
108
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
109
+     </property>
110
+    </widget>
111
+   </item>
112
+   <item row="0" column="0">
113
+    <widget class="QLabel" name="label">
114
+     <property name="text">
115
+      <string>Strength</string>
116
+     </property>
117
+    </widget>
118
+   </item>
119
+   <item row="6" column="0" colspan="4">
120
+    <widget class="QGraphicsView" name="graphicsView"/>
121
+   </item>
122
+   <item row="1" column="0">
123
+    <widget class="QLabel" name="label_2">
124
+     <property name="text">
125
+      <string>Threshold</string>
126
+     </property>
127
+    </widget>
128
+   </item>
129
+   <item row="4" column="0">
130
+    <layout class="QHBoxLayout" name="toolboxLayout"/>
131
+   </item>
132
+   <item row="2" column="0">
133
+    <widget class="QCheckBox" name="CheckBoxHQ">
134
+     <property name="text">
135
+      <string>HighQuality</string>
136
+     </property>
137
+    </widget>
138
+   </item>
139
+   <item row="0" column="2">
140
+    <widget class="QSpinBox" name="spinBoxStrength">
141
+     <property name="minimum">
142
+      <number>1</number>
143
+     </property>
144
+     <property name="maximum">
145
+      <number>255</number>
146
+     </property>
147
+    </widget>
148
+   </item>
149
+   <item row="1" column="2">
150
+    <widget class="QSpinBox" name="spinBoxThreshold">
151
+     <property name="minimum">
152
+      <number>1</number>
153
+     </property>
154
+     <property name="maximum">
155
+      <number>255</number>
156
+     </property>
157
+    </widget>
158
+   </item>
159
+  </layout>
160
+ </widget>
161
+ <resources/>
162
+ <connections>
163
+  <connection>
164
+   <sender>buttonBox</sender>
165
+   <signal>accepted()</signal>
166
+   <receiver>msharpenDialog</receiver>
167
+   <slot>accept()</slot>
168
+   <hints>
169
+    <hint type="sourcelabel">
170
+     <x>248</x>
171
+     <y>254</y>
172
+    </hint>
173
+    <hint type="destinationlabel">
174
+     <x>157</x>
175
+     <y>274</y>
176
+    </hint>
177
+   </hints>
178
+  </connection>
179
+  <connection>
180
+   <sender>buttonBox</sender>
181
+   <signal>rejected()</signal>
182
+   <receiver>msharpenDialog</receiver>
183
+   <slot>reject()</slot>
184
+   <hints>
185
+    <hint type="sourcelabel">
186
+     <x>316</x>
187
+     <y>260</y>
188
+    </hint>
189
+    <hint type="destinationlabel">
190
+     <x>286</x>
191
+     <y>274</y>
192
+    </hint>
193
+   </hints>
194
+  </connection>
195
+ </connections>
196
+</ui>
197
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/ADM_vidMPdelogo.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/ADM_vidMPdelogo.cpp Changed
64
 
1
@@ -49,13 +49,13 @@
2
 MPDelogo::MPDelogo(ADM_coreVideoFilter *in,CONFcouple *couples) : ADM_coreVideoFilter(in,couples)
3
 {
4
         if(!couples || !ADM_paramLoad(couples,delogo_param,&param))
5
-       {
6
-                param.xoff=0;
7
-                param.yoff=0;
8
-                param.lw = info.width>>1;
9
-                param.lh = info.height>>1;
10
-                param.band=4;
11
-                param.show=0;
12
+        {
13
+            param.xoff=0;
14
+            param.yoff=0;
15
+            param.lw = info.width>>1;
16
+            param.lh = info.height>>1;
17
+            param.band=4;
18
+            param.show=0;
19
         }
20
 }
21
 /**
22
@@ -89,7 +89,7 @@
23
 const char   *MPDelogo::getConfiguration(void)   
24
 {
25
     static char s[256];
26
-    snprintf(s,255,"x=%d y=%d w=%d h=%d",(int)param.xoff, (int)param.yoff,(int)param.lw,(int)param.lh);
27
+    snprintf(s,255,"x=%d y=%d w=%d h=%d bd=%d",(int)param.xoff, (int)param.yoff,(int)param.lw,(int)param.lh,(int)param.band);
28
     return s;        
29
 }
30
 /**
31
@@ -110,6 +110,7 @@
32
 bool         MPDelogo::doDelogo(ADMImage *img,  int x,  int y, 
33
                              int w,  int h,int band, int show)
34
 {
35
+     int realBand;
36
      for(int i=0;i<3;i++)
37
         {
38
             ADM_PLANE p=(ADM_PLANE)i;
39
@@ -117,16 +118,20 @@
40
             int width=img->GetWidth(p);
41
             int height=img->GetHeight(p);
42
             int stride=img->GetPitch(p);
43
+            realBand=band;
44
             if(i==1)
45
             {
46
-                    x>>=1;y>>=1;w>>=1;h>>=1;
47
+                    x>>=1;y>>=1;w>>=1;h>>=1;realBand>>=1;
48
             }
49
             if(x+w>=width) w=width-x-1;
50
             if(y+h>=height) h=height-y-1;
51
-
52
+            if(realBand*2>w) realBand=w/2; // avoid overlap
53
+            if(realBand*2>h) realBand=w/h;
54
+            //printf("Plane = %d, w=%d h = %d, x=%d y=%d, band=%d\n",i,w,h,x,y,realBand) ;
55
             xdelogo(img->GetWritePtr(p), img->GetReadPtr(p),
56
-                stride,stride,width,height,
57
-                x,y,w,h, band, show, true);
58
+                stride,stride,
59
+                width,height,
60
+                x,y,w,h, realBand, show, true);
61
 
62
         }
63
     return true;
64
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/CMakeLists.txt Changed
32
 
1
@@ -7,16 +7,26 @@
2
         TARGET_LINK_LIBRARIES(${tgt} ADM_libavutil)
3
 ENDMACRO(addDeps tgt)
4
 
5
+IF(DO_QT4)
6
+    IF(ADM_QT_VERSION EQUAL 4)
7
+        SET(QT_TAG qt4)
8
+    ELSE(ADM_QT_VERSION EQUAL 4)
9
+        SET(QT_TAG qt5)
10
+        ADM_QT_ADD_RESOURCES(resource   qt5/delogo.qrc)
11
+    ENDIF(ADM_QT_VERSION EQUAL 4)
12
+ENDIF(DO_QT4)
13
+
14
+
15
 SET(mpdelogoCommon_SRCS 
16
 ADM_vidMPdelogo.cpp
17
 )
18
 # ---------- QT4 Version ----------------
19
 INCLUDE(vf_plugin_qt4)
20
-SET(mpdelogoQT_SRCS  qt4/Q_mpdelogo.cpp )
21
-SET(mpdelogoQT_HEADERS  qt4/Q_mpdelogo.h)
22
-SET(mpdelogoQT_UI    qt4/mpdelogo)
23
+SET(mpdelogoQT_SRCS  ${QT_TAG}/Q_mpdelogo.cpp )
24
+SET(mpdelogoQT_HEADERS  ${QT_TAG}/Q_mpdelogo.h)
25
+SET(mpdelogoQT_UI    ${QT_TAG}/mpdelogo)
26
 IF(DO_QT4)
27
-  INIT_VIDEO_FILTER_QT4(ADM_vf_mpdelogo${QT_LIBRARY_EXTENSION} ${mpdelogoQT_SRCS} ${mpdelogoQT_HEADERS} ${mpdelogoQT_UI} ${mpdelogoCommon_SRCS} qt4/DIA_flyMpDelogo.cpp)
28
+  INIT_VIDEO_FILTER_QT4(ADM_vf_mpdelogo${QT_LIBRARY_EXTENSION} ${mpdelogoQT_SRCS} ${mpdelogoQT_HEADERS} ${mpdelogoQT_UI} ${mpdelogoCommon_SRCS} ${QT_TAG}/DIA_flyMpDelogo.cpp ${resource})
29
   addDeps(ADM_vf_mpdelogo${QT_LIBRARY_EXTENSION})
30
 ENDIF(DO_QT4)
31
 # /QT4
32
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5 Added
2
 
1
+(directory)
2
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/DIA_flyMpDelogo.cpp Added
201
 
1
@@ -0,0 +1,389 @@
2
+/**/
3
+/***************************************************************************
4
+                          DIA_flyMpDelogo
5
+                             -------------------
6
+
7
+                           Ui for MPlayer DeLogo filter
8
+
9
+    begin                : 08 Apr 2005
10
+    copyright            : (C) 2004/5 by mean
11
+    email                : fixounet@free.fr
12
+ ***************************************************************************/
13
+
14
+/***************************************************************************
15
+ *                                                                         *
16
+ *   This program is free software; you can redistribute it and/or modify  *
17
+ *   it under the terms of the GNU General Public License as published by  *
18
+ *   the Free Software Foundation; either version 2 of the License, or     *
19
+ *   (at your option) any later version.                                   *
20
+ *                                                                         *
21
+ ***************************************************************************/
22
+#include "DIA_flyDialogQt4.h"
23
+#include "QRubberBand"
24
+#include "QSizeGrip"
25
+#include "QHBoxLayout"
26
+#include "ADM_default.h"
27
+#include "ADM_image.h"
28
+
29
+
30
+#include "delogo.h"
31
+#include "DIA_flyMpDelogo.h"
32
+#include "ADM_vidMPdelogo.h"
33
+#include "Q_mpdelogo.h"
34
+#include "ADM_toolkitQt.h"
35
+
36
+
37
+#if 0
38
+#define aprintf ADM_info
39
+#else
40
+#define aprintf(...) {}
41
+#endif
42
+
43
+
44
+/**
45
+ * 
46
+ * @param parent
47
+ * @param width
48
+ * @param height
49
+ * @param in
50
+ * @param canvas
51
+ * @param slider
52
+ */
53
+ flyMpDelogo::flyMpDelogo (QDialog *parent,uint32_t width,uint32_t height,ADM_coreVideoFilter *in,
54
+                                    ADM_QCanvas *canvas, QSlider *slider) : 
55
+                ADM_flyDialogYuv(parent,width, height,in,canvas, slider,RESIZE_AUTO) 
56
+ {
57
+    rubber=new Resizable_rubber_band(this,canvas);
58
+    rubber->resize(width,height);
59
+ }
60
+ /**
61
+  * 
62
+  */
63
+flyMpDelogo::~flyMpDelogo()
64
+{
65
+    if(rubber)
66
+    {
67
+        delete rubber;
68
+        rubber=NULL;
69
+    }
70
+}
71
+/**
72
+ * \fn bandResized
73
+ * @param w
74
+ * @param h
75
+ * @return 
76
+ */
77
+bool    flyMpDelogo::bandResized(int x,int y,int w, int h)
78
+{
79
+    aprintf("BandResized\n");        
80
+    int nw,nh,nx,ny;
81
+    
82
+    delogo newParam;
83
+    
84
+    double halfzoom=_zoom/2-0.01;
85
+    
86
+    newParam.lw=((double)w+halfzoom)/_zoom;
87
+    newParam.lh=((double)h+halfzoom)/_zoom;
88
+    newParam.xoff=((double)x+halfzoom)/_zoom;
89
+    newParam.yoff=((double)y+halfzoom)/_zoom;
90
+    
91
+    aprintf("%d x %d => %d x %d, %f\n",param.lw,param.lh,newParam.lw,newParam.lh,_zoom);
92
+    
93
+    param.lw=newParam.lw;
94
+    param.lh=newParam.lh;
95
+    param.xoff=newParam.xoff;
96
+    param.yoff=newParam.yoff;
97
+    
98
+    upload(false);
99
+    //
100
+    return true;
101
+}
102
+
103
+
104
+/************* COMMON PART *********************/
105
+/**
106
+    \fn process
107
+*/
108
+uint8_t    flyMpDelogo::processYuv(ADMImage* in, ADMImage *out)
109
+{
110
+    out->duplicate(in);
111
+    if(preview)
112
+        MPDelogo::doDelogo(out, param.xoff, param.yoff,
113
+                             param.lw,  param.lh,param.band,param.show);        
114
+    else
115
+    {
116
+        rubber->move(_zoom*(float)param.xoff,_zoom*(float)param.yoff);
117
+        rubber->resize(_zoom*(float)param.lw,_zoom*(float)param.lh);
118
+    }
119
+    return 1;
120
+}
121
+/**
122
+        \fn Ctor
123
+*/
124
+Resizable_rubber_band::Resizable_rubber_band(flyMpDelogo *fly,QWidget *parent) : QWidget(parent) 
125
+{
126
+  nestedIgnore=0;
127
+  flyParent=fly;
128
+  //tell QSizeGrip to resize this widget instead of top-level window
129
+  setWindowFlags(Qt::SubWindow);
130
+  QHBoxLayout* layout = new QHBoxLayout(this);
131
+  layout->setContentsMargins(0, 0, 0, 0);
132
+  QSizeGrip* grip1 = new QSizeGrip(this);
133
+  QSizeGrip* grip2 = new QSizeGrip(this);
134
+  grip1->setVisible(true);
135
+  grip2->setVisible(true);
136
+  layout->addWidget(grip1, 0, Qt::AlignLeft | Qt::AlignTop);
137
+  layout->addWidget(grip2, 0, Qt::AlignRight | Qt::AlignBottom);
138
+  rubberband = new QRubberBand(QRubberBand::Rectangle, this);
139
+  QPalette pal;
140
+  pal.setBrush(QPalette::Highlight, QBrush(Qt::red,Qt::DiagCrossPattern));
141
+  rubberband->setPalette(pal);
142
+  rubberband->setForegroundRole(QPalette::Highlight);
143
+  rubberband->move(0, 0);
144
+  rubberband->show();
145
+  show();
146
+}
147
+/**
148
+        \fn resizeEvent
149
+*/
150
+void Resizable_rubber_band::resizeEvent(QResizeEvent *) 
151
+{
152
+  int x,y,w,h;
153
+  x=pos().x();
154
+  y=pos().y();
155
+  w=size().width();
156
+  h=size().height();
157
+  aprintf("Resize event : %d x %d , %d x %d\n",x,y,w,h);
158
+  rubberband->resize(size());
159
+  if(!nestedIgnore)
160
+    flyParent->bandResized(pos().x(),pos().y(),size().width(),size().height());
161
+}
162
+
163
+/**
164
+    \fn ctor
165
+*/
166
+
167
+  Ui_mpdelogoWindow::Ui_mpdelogoWindow(QWidget *parent,  delogo *param, ADM_coreVideoFilter *in) 
168
+            : QDialog(parent)
169
+  {
170
+    static bool doOnce=false;
171
+    uint32_t width,height;
172
+        
173
+        aprintf("Ctor @ %d: %d, %d x %d\n",param->xoff, param->yoff, param->lw,param->lh);
174
+        
175
+        ui.setupUi(this);
176
+        _in=in;
177
+        
178
+        lock=0;
179
+        // Allocate space for green-ised video
180
+        width=in->getInfo()->width;
181
+        height=in->getInfo()->height;
182
+
183
+        canvas=new ADM_QCanvas(ui.graphicsView,width,height);        
184
+        myCrop=new flyMpDelogo(this, width, height,in,canvas,ui.horizontalSlider);
185
+        myCrop->param=*param;
186
+        myCrop->_cookie=&ui;
187
+        myCrop->addControl(ui.toolboxLayout);
188
+        myCrop->setPreview(false);
189
+#define SPINENTRY(x) ui.x
190
+        SPINENTRY(spinX)->setMaximum(width);
191
+        SPINENTRY(spinW)->setMaximum(width);
192
+        SPINENTRY(spinY)->setMaximum(height);
193
+        SPINENTRY(spinH)->setMaximum(height);
194
+
195
+        SPINENTRY(spinX)->setSingleStep(5);
196
+        SPINENTRY(spinY)->setSingleStep(5);
197
+        SPINENTRY(spinW)->setSingleStep(5);
198
+        SPINENTRY(spinH)->setSingleStep(5);
199
+        aprintf("Uploading\n");
200
+        myCrop->upload();
201
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/DIA_flyMpDelogo.h Added
84
 
1
@@ -0,0 +1,82 @@
2
+/***************************************************************************
3
+    copyright            : (C) 2011 by mean
4
+    email                : fixounet@free.fr
5
+ ***************************************************************************/
6
+
7
+/***************************************************************************
8
+ *                                                                         *
9
+ *   This program is free software; you can redistribute it and/or modify  *
10
+ *   it under the terms of the GNU General Public License as published by  *
11
+ *   the Free Software Foundation; either version 2 of the License, or     *
12
+ *   (at your option) any later version.                                   *
13
+ *                                                                         *
14
+ ***************************************************************************/
15
+#pragma once
16
+
17
+/**
18
+    \class flyASharp
19
+*/
20
+#include "delogo.h"
21
+class QRubberBand;
22
+class flyMpDelogo;
23
+/**
24
+        \class Resizable_rubber_band
25
+        \brief http://stackoverflow.com/questions/19066804/implementing-resize-handles-on-qrubberband-is-qsizegrip-relevant
26
+*/
27
+class Resizable_rubber_band : public QWidget 
28
+{
29
+public:
30
+  flyMpDelogo     *flyParent;
31
+  Resizable_rubber_band(flyMpDelogo *fly,QWidget* parent = 0);
32
+  int               nestedIgnore;
33
+
34
+public:
35
+  QRubberBand* rubberband;
36
+  void resizeEvent(QResizeEvent *);
37
+  void blockSignals(bool sig)
38
+  {
39
+      rubberband->blockSignals(sig);
40
+  }
41
+  
42
+#if 0
43
+  void update()
44
+  {
45
+    rubberband->update();
46
+  }
47
+#endif
48
+};
49
+
50
+/**
51
+    \class flyMpDelogo
52
+*/
53
+class flyMpDelogo : public ADM_flyDialogYuv
54
+{
55
+protected:
56
+    bool    blockChanges(bool block)  ;
57
+public:
58
+   delogo      param;
59
+   bool        preview;
60
+   Resizable_rubber_band *rubber;
61
+public:
62
+   uint8_t     processYuv(ADMImage* in, ADMImage *out);
63
+   uint8_t     download(void);
64
+   uint8_t     upload() {return upload(true);}
65
+   uint8_t     upload(bool update);
66
+               flyMpDelogo (QDialog *parent,uint32_t width,uint32_t height,ADM_coreVideoFilter *in,
67
+                                    ADM_QCanvas *canvas, QSlider *slider);
68
+                
69
+   virtual     ~flyMpDelogo() ;
70
+   bool         setXy(int x,int y);
71
+   bool         setPreview(bool onoff)
72
+                {
73
+                    preview=onoff;
74
+                    if(preview)
75
+                      rubber->hide();
76
+                    else
77
+                      rubber->show();
78
+                    return true;
79
+                }
80
+    bool    bandResized(int x,int y,int w, int h);
81
+    void    autoZoom(bool state);
82
+};
83
+// EOF
84
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/Q_mpdelogo.cpp Added
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/Q_mpdelogo.h Added
39
 
1
@@ -0,0 +1,37 @@
2
+#pragma once
3
+#include "ui_mpdelogo.h"
4
+#include "ADM_image.h"
5
+#include "DIA_flyDialogQt4.h"
6
+#include "DIA_flyMpDelogo.h"
7
+#include "QMouseEvent"
8
+
9
+/**
10
+ * 
11
+ * @return 
12
+ */
13
+class Ui_mpdelogoWindow : public QDialog
14
+{
15
+        Q_OBJECT
16
+
17
+protected: 
18
+       int lock;       
19
+
20
+public:
21
+
22
+                            Ui_mpdelogoWindow(QWidget *parent, delogo *param, ADM_coreVideoFilter *in);
23
+                            ~Ui_mpdelogoWindow();
24
+        Ui_mpdelogoDialog   ui;
25
+        ADM_coreVideoFilter *_in;
26
+        flyMpDelogo         *myCrop;
27
+        ADM_QCanvas         *canvas;
28
+public slots:
29
+        void                gather(delogo *param);
30
+
31
+private slots:
32
+        void                sliderUpdate(int foo);
33
+        void                valueChanged(int foo);
34
+        void                preview(int x);
35
+
36
+
37
+};
38
+
39
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/delogo.qrc Added
7
 
1
@@ -0,0 +1,5 @@
2
+<RCC>
3
+  <qresource prefix="images">
4
+    <file>grips.png</file>
5
+  </qresource>
6
+</RCC>
7
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/grips.png Added
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/mplayerDelogo/qt5/mpdelogo.ui Added
201
 
1
@@ -0,0 +1,231 @@
2
+<?xml version="1.0" encoding="UTF-8"?>
3
+<ui version="4.0">
4
+ <class>mpdelogoDialog</class>
5
+ <widget class="QDialog" name="mpdelogoDialog">
6
+  <property name="geometry">
7
+   <rect>
8
+    <x>0</x>
9
+    <y>0</y>
10
+    <width>507</width>
11
+    <height>488</height>
12
+   </rect>
13
+  </property>
14
+  <property name="windowTitle">
15
+   <string>Mplayer Delogo</string>
16
+  </property>
17
+  <layout class="QFormLayout" name="formLayout">
18
+   <item row="2" column="0">
19
+    <widget class="QDialogButtonBox" name="buttonBox">
20
+     <property name="orientation">
21
+      <enum>Qt::Horizontal</enum>
22
+     </property>
23
+     <property name="standardButtons">
24
+      <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
25
+     </property>
26
+    </widget>
27
+   </item>
28
+   <item row="0" column="0">
29
+    <layout class="QVBoxLayout" name="verticalLayout"/>
30
+   </item>
31
+   <item row="1" column="0" colspan="2">
32
+    <layout class="QVBoxLayout" name="verticalLayout_2">
33
+     <item>
34
+      <layout class="QHBoxLayout" name="horizontalLayout">
35
+       <item>
36
+        <layout class="QGridLayout" name="gridLayout">
37
+         <item row="1" column="4">
38
+          <widget class="QLabel" name="label_6">
39
+           <property name="text">
40
+            <string/>
41
+           </property>
42
+          </widget>
43
+         </item>
44
+         <item row="0" column="0">
45
+          <widget class="QLabel" name="label">
46
+           <property name="text">
47
+            <string>X</string>
48
+           </property>
49
+          </widget>
50
+         </item>
51
+         <item row="0" column="1">
52
+          <widget class="QSpinBox" name="spinX"/>
53
+         </item>
54
+         <item row="0" column="3">
55
+          <widget class="QSpinBox" name="spinW"/>
56
+         </item>
57
+         <item row="0" column="4">
58
+          <widget class="QLabel" name="label_5">
59
+           <property name="text">
60
+            <string>Border Width</string>
61
+           </property>
62
+          </widget>
63
+         </item>
64
+         <item row="0" column="2">
65
+          <widget class="QLabel" name="label_3">
66
+           <property name="text">
67
+            <string>Width</string>
68
+           </property>
69
+          </widget>
70
+         </item>
71
+         <item row="1" column="2">
72
+          <widget class="QLabel" name="label_4">
73
+           <property name="text">
74
+            <string>Height</string>
75
+           </property>
76
+          </widget>
77
+         </item>
78
+         <item row="1" column="3">
79
+          <widget class="QSpinBox" name="spinH"/>
80
+         </item>
81
+         <item row="1" column="0">
82
+          <widget class="QLabel" name="label_2">
83
+           <property name="text">
84
+            <string>Y</string>
85
+           </property>
86
+           <property name="textFormat">
87
+            <enum>Qt::PlainText</enum>
88
+           </property>
89
+          </widget>
90
+         </item>
91
+         <item row="1" column="1">
92
+          <widget class="QSpinBox" name="spinY"/>
93
+         </item>
94
+         <item row="0" column="5">
95
+          <widget class="QSpinBox" name="spinBand"/>
96
+         </item>
97
+        </layout>
98
+       </item>
99
+       <item>
100
+        <spacer name="horizontalSpacer">
101
+         <property name="orientation">
102
+          <enum>Qt::Horizontal</enum>
103
+         </property>
104
+         <property name="sizeHint" stdset="0">
105
+          <size>
106
+           <width>40</width>
107
+           <height>20</height>
108
+          </size>
109
+         </property>
110
+        </spacer>
111
+       </item>
112
+      </layout>
113
+     </item>
114
+     <item>
115
+      <layout class="QHBoxLayout" name="horizontalLayout_3">
116
+       <item>
117
+        <widget class="QLabel" name="label_7">
118
+         <property name="text">
119
+          <string>You can resize the red rectangle using the grips </string>
120
+         </property>
121
+        </widget>
122
+       </item>
123
+       <item>
124
+        <widget class="QLabel" name="labelHelp">
125
+         <property name="text">
126
+          <string/>
127
+         </property>
128
+        </widget>
129
+       </item>
130
+       <item>
131
+        <spacer name="horizontalSpacer_2">
132
+         <property name="orientation">
133
+          <enum>Qt::Horizontal</enum>
134
+         </property>
135
+         <property name="sizeHint" stdset="0">
136
+          <size>
137
+           <width>40</width>
138
+           <height>20</height>
139
+          </size>
140
+         </property>
141
+        </spacer>
142
+       </item>
143
+      </layout>
144
+     </item>
145
+     <item>
146
+      <layout class="QHBoxLayout" name="toolboxLayout">
147
+       <property name="leftMargin">
148
+        <number>3</number>
149
+       </property>
150
+       <property name="topMargin">
151
+        <number>5</number>
152
+       </property>
153
+       <property name="rightMargin">
154
+        <number>9</number>
155
+       </property>
156
+       <property name="bottomMargin">
157
+        <number>11</number>
158
+       </property>
159
+      </layout>
160
+     </item>
161
+     <item>
162
+      <layout class="QHBoxLayout" name="horizontalLayout_2"/>
163
+     </item>
164
+     <item>
165
+      <widget class="QSlider" name="horizontalSlider">
166
+       <property name="orientation">
167
+        <enum>Qt::Horizontal</enum>
168
+       </property>
169
+      </widget>
170
+     </item>
171
+     <item>
172
+      <widget class="QGraphicsView" name="graphicsView"/>
173
+     </item>
174
+     <item>
175
+      <widget class="QCheckBox" name="checkBoxPreview">
176
+       <property name="text">
177
+        <string>Preview</string>
178
+       </property>
179
+      </widget>
180
+     </item>
181
+    </layout>
182
+   </item>
183
+  </layout>
184
+ </widget>
185
+ <tabstops>
186
+  <tabstop>spinX</tabstop>
187
+  <tabstop>spinW</tabstop>
188
+  <tabstop>spinY</tabstop>
189
+  <tabstop>spinH</tabstop>
190
+  <tabstop>spinBand</tabstop>
191
+  <tabstop>horizontalSlider</tabstop>
192
+  <tabstop>graphicsView</tabstop>
193
+  <tabstop>checkBoxPreview</tabstop>
194
+ </tabstops>
195
+ <resources>
196
+  <include location="delogo.qrc"/>
197
+ </resources>
198
+ <connections>
199
+  <connection>
200
+   <sender>buttonBox</sender>
201
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/resampleFps/ADM_vidResampleFPS.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/resampleFps/ADM_vidResampleFPS.cpp Changed
10
 
1
@@ -155,7 +155,7 @@
2
 */
3
 bool         resampleFps::goToTime(uint64_t usSeek)
4
 {
5
-    if(false==ADM_coreVideoFilterCached::goToTime(usSeek)) return false;
6
+    if(false==previousFilter->goToTime(usSeek)) return false;
7
     prefillDone=false;
8
     return true;
9
 }
10
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/rotate/rotate.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/rotate/rotate.cpp Changed
12
 
1
@@ -148,8 +148,8 @@
2
         case 0:   BitBlit(dst,dstPitch,src,srcPitch,width,height);return;break;
3
         case 180: dstIncPix=-1;       dstIncLine=-dstPitch; dst=dst+((height-1)*dstPitch)+width-1;break;
4
 
5
-        case 90:  dstIncPix=-dstPitch;dstIncLine=1;         dst=dst+((width-1)*dstPitch);break;
6
-        case 270: dstIncPix=dstPitch; dstIncLine=-1;        dst=dst+height-1;break;
7
+        case 90:  dstIncPix=dstPitch; dstIncLine=-1;        dst=dst+height-1;break;
8
+        case 270: dstIncPix=-dstPitch;dstIncLine=1;         dst=dst+((width-1)*dstPitch);break;
9
         default:
10
             break;
11
     }
12
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6/telecide/Telecide_utils.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6/telecide/Telecide_utils.cpp Changed
9
 
1
@@ -72,6 +72,7 @@
2
            cache[i].frame = 0xffffffff;
3
            cache[i].chosen = 0xff;
4
        }
5
+        return true;
6
 }
7
 /**
8
     \fn CacheQuery
9
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glBenchmark/benchGl.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glBenchmark/benchGl.cpp Changed
55
 
1
@@ -73,25 +73,11 @@
2
     _parentQGL->makeCurrent();
3
     fboY->bind();
4
     ADM_info("Compiling shader \n");
5
-    glProgramY = new QGLShaderProgram(_context);
6
-    ADM_assert(glProgramY);
7
-    if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment, myShaderY))
8
+    glProgramY =    createShaderFromSource(QGLShader::Fragment,myShaderY);
9
+    if(!glProgramY)
10
     {
11
-            ADM_error("[GL Render] Fragment log: %s\n", glProgramY->log().toUtf8().constData());
12
-            ADM_assert(0);
13
+        ADM_error("Cannot setup shader\n");
14
     }
15
-    if ( !glProgramY->link())
16
-    {
17
-        ADM_error("[GL Render] Link log: %s\n", glProgramY->log().toUtf8().constData());
18
-        ADM_assert(0);
19
-    }
20
-
21
-    if ( !glProgramY->bind())
22
-    {
23
-            ADM_error("[GL Render] Binding FAILED\n");
24
-            ADM_assert(0);
25
-    }
26
-
27
     fboY->release();
28
     _parentQGL->doneCurrent();
29
 
30
@@ -111,6 +97,15 @@
31
 */
32
 bool openGlBenchmark::getNextFrame(uint32_t *fn,ADMImage *image)
33
 {
34
+    char str1[81];
35
+    char str2[81];
36
+
37
+    if(!glProgramY)
38
+    {
39
+        snprintf(str1,80,"Shader was not compiled succesfully");
40
+        image->printString(2,4,str1); 
41
+        return true;
42
+    }
43
     // since we do nothing, just get the output of previous filter
44
     if(false==previousFilter->getNextFrame(fn,image))
45
     {
46
@@ -160,8 +155,6 @@
47
     bench.getResultUs(avg1,min1,max1);
48
     bench2.getResultUs(avg2,min2,max2);
49
 
50
-    char str1[81];
51
-    char str2[81];
52
 
53
     snprintf(str1,80,"Qt  avg=%03.2f us, min=%d max=%d us",avg1,(int)min1,(int)max1);
54
     snprintf(str2,80,"DMA avg=%03.2f us, min=%d max=%d us",avg2,(int)min2,(int)max2);
55
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glResize/sampleGl.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glResize/sampleGl.cpp Changed
44
 
1
@@ -88,23 +88,10 @@
2
         _parentQGL->makeCurrent();
3
         fboY->bind();
4
         printf("Compiling shader \n");
5
-        glProgramY = new QGLShaderProgram(_context);
6
-        ADM_assert(glProgramY);
7
-        if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment, myShaderY))
8
+        glProgramY =    createShaderFromSource(QGLShader::Fragment,myShaderY);
9
+        if ( !glProgramY)
10
         {
11
-                ADM_error("[GL Render] Fragment log: %s\n", glProgramY->log().toUtf8().constData());
12
-                ADM_assert(0);
13
-        }
14
-        if ( !glProgramY->link())
15
-        {
16
-            ADM_error("[GL Render] Link log: %s\n", glProgramY->log().toUtf8().constData());
17
-            ADM_assert(0);
18
-        }
19
-
20
-        if ( !glProgramY->bind())
21
-        {
22
-                ADM_error("[GL Render] Binding FAILED\n");
23
-                ADM_assert(0);
24
+            ADM_error("[GL Render] Cannot compile shader\n");            
25
         }
26
 
27
         fboY->release();
28
@@ -127,6 +114,15 @@
29
 */
30
 bool openGlResize::getNextFrame(uint32_t *fn,ADMImage *image)
31
 {
32
+    if(!glProgramY)
33
+    {
34
+        char strxx[80];
35
+        snprintf(strxx,80,"Shader was not compiled succesfully");
36
+        image->printString(2,4,strxx); 
37
+        return true;
38
+    }    
39
+    
40
+    
41
     // since we do nothing, just get the output of previous filter
42
     if(false==previousFilter->getNextFrame(fn,original))
43
     {
44
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glRotate/rotateGl.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glRotate/rotateGl.cpp Changed
48
 
1
@@ -75,24 +75,13 @@
2
         _parentQGL->makeCurrent();
3
         fboY->bind();
4
         printf("Compiling shader \n");
5
-        glProgramY = new QGLShaderProgram(_context);
6
-        ADM_assert(glProgramY);
7
-        if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment, myShaderY))
8
+        
9
+        glProgramY =    createShaderFromSource(QGLShader::Fragment,myShaderY);
10
+        if(!glProgramY)
11
         {
12
-                ADM_error("[GL Render] Fragment log: %s\n", glProgramY->log().toUtf8().constData());
13
-                ADM_assert(0);
14
-        }
15
-        if ( !glProgramY->link())
16
-        {
17
-            ADM_error("[GL Render] Link log: %s\n", glProgramY->log().toUtf8().constData());
18
-            ADM_assert(0);
19
-        }
20
-
21
-        if ( !glProgramY->bind())
22
-        {
23
-                ADM_error("[GL Render] Binding FAILED\n");
24
-                ADM_assert(0);
25
-        }
26
+            ADM_error("Cannot setup shader\n");
27
+        }        
28
+                
29
         glList=glGenLists(1);
30
         genQuad();
31
         fboY->release();
32
@@ -116,6 +105,15 @@
33
 */
34
 bool rotateGl::getNextFrame(uint32_t *fn,ADMImage *image)
35
 {
36
+    if(!glProgramY)
37
+    {
38
+        char strxx[80];
39
+        snprintf(strxx,80,"Shader was not compiled succesfully");
40
+        image->printString(2,4,strxx); 
41
+        return true;
42
+    }    
43
+    
44
+    
45
     // since we do nothing, just get the output of previous filter
46
     if(false==previousFilter->getNextFrame(fn,original))
47
     {
48
avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/passthrough.shader Added
16
 
1
@@ -0,0 +1,14 @@
2
+    #extension GL_ARB_texture_rectangle: enable
3
+    uniform sampler2DRect myTextureY; // tex unit 0
4
+    uniform sampler2DRect myTextureU; // tex unit 1
5
+    uniform sampler2DRect myTextureV; // tex unit 2
6
+    const vec2 half_vec=vec2(0.5,0.5);
7
+// This shader does nothing, just a pass through
8
+    void main(void) {
9
+      vec2 full_coord=gl_TexCoord[0].xy;
10
+      vec2 half_coord=full_coord*half_vec;
11
+      vec4 texvalV = texture2DRect(myTextureV, half_coord);
12
+      vec4 texvalU = texture2DRect(myTextureU, half_coord);
13
+      vec4 texvalY = texture2DRect(myTextureY, full_coord);
14
+      gl_FragColor = vec4(texvalY.r, texvalU.r, texvalV.r, 1.0);
15
+        }
16
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shader.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shader.cpp Changed
200
 
1
@@ -25,6 +25,7 @@
2
 #include "DIA_factory.h"
3
 #include "shaderLoader.h"
4
 #include "shaderLoader_desc.cpp"
5
+#include "DIA_coreToolkit.h"
6
 /**
7
     \class shaderLoader
8
 */
9
@@ -40,6 +41,9 @@
10
 
11
 protected:
12
                 bool        render(ADMImage *image,ADM_PLANE plane,QGLFramebufferObject *fbo);
13
+                bool        loadShader(const char *src);
14
+                bool        reload( void);
15
+    static      void        cb(void *c);
16
 public:
17
                              shaderLoader(ADM_coreVideoFilter *previous,CONFcouple *conf);
18
                             ~shaderLoader();
19
@@ -61,7 +65,56 @@
20
                         QT_TRANSLATE_NOOP("glShader","Run an external shader program.") // Description
21
                     );
22
 
23
-// Now implements the interesting parts
24
+
25
+/**
26
+ * \fn loadShader
27
+ * @param src
28
+ * @return 
29
+ */
30
+bool shaderLoader::loadShader(const char *src)
31
+{
32
+    
33
+    if(!ADM_fileExist(src))
34
+    {
35
+        ADM_warning("Shader file does not exist (%s)\n",src);
36
+        return false;
37
+    }
38
+    
39
+    int sourceSize=ADM_fileSize(src);
40
+    if(sourceSize<5)
41
+    {
42
+        ADM_warning("Shader file is too short(%s)\n",src);
43
+        return false;
44
+    }
45
+    
46
+    uint8_t *buffer=(uint8_t *)admAlloca(sourceSize+1);
47
+    FILE *f=fopen(params.shaderFile.c_str(),"rt");
48
+    if(!f)
49
+    {
50
+        ADM_warning("Cannot open file %s\n",src);
51
+        return false;
52
+    }
53
+        
54
+    fread(buffer,sourceSize,1,f);
55
+    buffer[sourceSize]=0;
56
+    fclose(f);
57
+    f=NULL;
58
+
59
+    if(glProgramY)
60
+    {
61
+        delete glProgramY;
62
+        glProgramY=NULL;
63
+    }
64
+    glProgramY =    createShaderFromSource(QGLShader::Fragment,(char *)buffer);
65
+    if(!glProgramY)
66
+    {
67
+        ADM_error("Shader compiling failed\n");
68
+        return false;
69
+    }
70
+    ADM_info("Shader %s successfully loaded an compiled\n",src);
71
+    return true;
72
+}
73
+
74
 /**
75
     \fn shaderLoader
76
     \brief constructor
77
@@ -75,62 +128,13 @@
78
         original=new ADMImageDefault(in->getInfo()->width,in->getInfo()->height);
79
         _parentQGL->makeCurrent();
80
         fboY->bind();
81
-        ready=true;
82
+        ready=false;
83
 
84
-        printf("Compiling shader \n");
85
-        glProgramY = new QGLShaderProgram(_context);
86
-        ADM_assert(glProgramY);
87
+        ADM_info("Compiling shader %s \n",params.shaderFile.c_str());
88
 
89
         // Load the file info memory
90
-        int sourceSize=-1;
91
-        if(ADM_fileExist(params.shaderFile.c_str()))
92
-        {
93
-            sourceSize=ADM_fileSize(params.shaderFile.c_str());
94
-        }else
95
-        {
96
-            ADM_warning("Shader file does not exist (%s)\n",params.shaderFile.c_str());
97
-            ready=false;
98
-        }
99
-        if(sourceSize<5)
100
-        {
101
-            ADM_warning("File too short, needs to be at least 5 chars\n");
102
-            ready=false;
103
-        }
104
-        if(ready)
105
-        {
106
-            uint8_t *buffer=(uint8_t *)admAlloca(sourceSize+1);
107
-            FILE *f=fopen(params.shaderFile.c_str(),"rt");
108
-            if(f)
109
-            {
110
-                fread(buffer,sourceSize,1,f);
111
-                buffer[sourceSize]=0;
112
-                fclose(f);
113
-                if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment,(char *) buffer))
114
-                {
115
-                    ready=false;
116
-                    erString="Compiling shader failed"+std::string(glProgramY->log().toUtf8().constData());
117
-                    ADM_warning("Compilation failed (size=%d)\n",sourceSize);
118
-                }
119
-            }else
120
-            {
121
-                ADM_warning("Cannot open file %s\n",params.shaderFile.c_str());
122
-                erString=std::string("Cannot open file");
123
-                ready=false;
124
-            }
125
-        }
126
-        if ( ready && !glProgramY->link())
127
-        {
128
-            ready=false;
129
-            erString=std::string( glProgramY->log().toUtf8().constData());
130
-            ADM_warning("Link failed\n");
131
-        }
132
-
133
-        if ( ready && ! glProgramY->bind())
134
-        {
135
-                ready=false;
136
-                erString=std::string("OpenGl bind failed");
137
-                ADM_warning("Bind failed\n");
138
-        }
139
+        ready=loadShader(params.shaderFile.c_str());
140
+        
141
         glList=glGenLists(1);
142
         genQuad();
143
         fboY->release();
144
@@ -217,17 +221,51 @@
145
     return st;
146
 }
147
 
148
+void shaderLoader::cb(void *c)
149
+{
150
+    shaderLoader *sl=(shaderLoader *)c;
151
+    sl->ready=sl->reload();
152
+}
153
+/**
154
+ * 
155
+ * @return 
156
+ */
157
+bool shaderLoader::reload( void)
158
+{
159
+        _parentQGL->makeCurrent();
160
+        fboY->bind();
161
+        ADM_info("Compiling shader %s \n",params.shaderFile.c_str());
162
+        // Load the file info memory
163
+        ready=loadShader(params.shaderFile.c_str());        
164
+        glList=glGenLists(1);
165
+        genQuad();
166
+        fboY->release();
167
+        _parentQGL->doneCurrent();
168
+        if(!ready)
169
+        {
170
+             GUI_Error_HIG (QT_TRANSLATE_NOOP("adm","Cannot compile shader"), NULL);
171
+             return false;
172
+        }
173
+        return true;
174
+}
175
 /**
176
     \fn configure
177
 */
178
 bool shaderLoader::configure( void)
179
 {
180
-    diaElemFile shader(0,params.shaderFile,QT_TRANSLATE_NOOP("glShader","ShaderFile to load"));
181
-    diaElem *elems[]={&shader};
182
-
183
+again:
184
+    diaElemFile shader(0,params.shaderFile,QT_TRANSLATE_NOOP("glShader","ShaderFile to load"));    
185
+    diaElemButton reloadButton(QT_TR_NOOP("Reload shader"),cb,this);
186
+    diaElem *elems[]={&shader,&reloadButton};
187
+    
188
      if(diaFactoryRun(QT_TRANSLATE_NOOP("glShader","ShaderLoader"),sizeof(elems)/sizeof(diaElem *),elems))
189
      {
190
-                return true;
191
+        ready=reload();
192
+        if(!ready)
193
+        {
194
+             goto again;
195
+        }
196
+        return true;                
197
      }
198
      return false;
199
 }
200
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/bump.shader -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/bump.shader Changed
43
 
1
@@ -4,21 +4,24 @@
2
 uniform sampler2DRect myTextureV; // tex unit 2
3
 uniform float pts; // time in us
4
 uniform vec2  myResolution; // 
5
-const vec2 half_vec=vec2(0.5,0.5);
6
+const vec2 haalf_vec=vec2(0.5,0.5);
7
 const float PI = 3.1415926535;
8
  
9
 void main()
10
 {
11
   float aperture = 178.0;
12
-  float apertureHalf = 0.5 * aperture * (PI / 180.0);
13
-  float maxFactor = sin(apertureHalf)*3*cos((pts/3000000.)*PI);
14
-  if(maxFactor<0)
15
+  float aperturehaalf = 0.5 * aperture * (PI / 180.0);
16
+  float maxFactor = sin(aperturehaalf)*3.*cos((pts/3000000.)*PI);
17
+  if(maxFactor<0.)
18
   {
19
-               maxFactor=-maxFactor; // fabs ? 
20
+               maxFactor=-1.*maxFactor; // fabs ? 
21
   }
22
   
23
   vec2 uv;
24
-  vec2 xy =  2*gl_TexCoord[0].xy /myResolution -vec2(1.,1.);
25
+  vec2 xy;
26
+  vec2 mul2=vec2(2.0,2.0);
27
+  xy =  mul2*gl_TexCoord[0].xy;
28
+  xy=xy/myResolution -vec2(1.,1.);
29
   float d = length(xy);
30
   if (d < (2.0-maxFactor))
31
   {
32
@@ -36,8 +39,8 @@
33
     uv = gl_TexCoord[0].xy ;
34
   }
35
   vec4 cY = texture2DRect(myTextureY, uv);
36
-  vec4 cU = texture2DRect(myTextureU, uv*half_vec);
37
-  vec4 cV = texture2DRect(myTextureV, uv*half_vec);
38
+  vec4 cU = texture2DRect(myTextureU, uv*haalf_vec);
39
+  vec4 cV = texture2DRect(myTextureV, uv*haalf_vec);
40
   gl_FragColor = vec4(cY.r,cU.r,cV.r,1.0);
41
 }
42
 
43
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/lightning.shader -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/lightning.shader Changed
21
 
1
@@ -5,7 +5,7 @@
2
 uniform sampler2DRect myTextureV; // tex unit 2
3
 uniform vec2  myResolution;
4
 uniform float pts; // tex unit 2
5
-const vec2 half_vec=vec2(0.5,0.5);
6
+const vec2 haalf_vec=vec2(0.5,0.5);
7
 // Lightning
8
 // By: Brandon Fogerty
9
 // bfogerty at gmail dot com 
10
@@ -73,8 +73,8 @@
11
         vec2 pos = gl_TexCoord[0].xy ;
12
    vec4 color = lightning();
13
         vec4 luma=color+texture2DRect(myTextureY,pos);
14
-        vec4 chromaU=texture2DRect(myTextureU,pos*half_vec);
15
-        vec4 chromaV=texture2DRect(myTextureV,pos*half_vec);
16
+        vec4 chromaU=texture2DRect(myTextureU,pos*haalf_vec);
17
+        vec4 chromaV=texture2DRect(myTextureV,pos*haalf_vec);
18
         gl_FragColor = vec4(luma.r,chromaU.r,chromaV.r,1.0);
19
 }
20
 
21
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/ripple.shader -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/ripple.shader Changed
38
 
1
@@ -5,15 +5,15 @@
2
 uniform sampler2DRect myTextureV; // tex unit 2
3
 uniform vec2  myResolution;
4
 uniform float pts; // tex unit 2
5
-const vec2 half_vec=vec2(0.5,0.5);
6
+const vec2 haalf_vec=vec2(0.5,0.5);
7
 void main() 
8
 { 
9
-  vec3 shockParams=vec3( 10.0, 0.8, myResolution.x/50); // 1- pow base, 2 - pow exponent 3- Size of the wave
10
+  vec3 shockParams=vec3( 10.0, 0.8, myResolution.x/50.); // 1- pow base, 2 - pow exponent 3- Size of the wave
11
 
12
   vec2 pos=gl_TexCoord[0].xy;
13
   vec2 texCoord = pos;
14
 
15
-  float distance = distance(pos, myResolution*half_vec);
16
+  float distance = distance(pos, myResolution*haalf_vec);
17
 
18
   float time=pts/3000.;
19
 
20
@@ -24,13 +24,13 @@
21
     float powDiff = 1.0 - pow(abs(diff*shockParams.x), 
22
                                 shockParams.y); 
23
     float diffTime = diff  * powDiff; 
24
-    vec2 diffUV = normalize(pos - myResolution*half_vec); 
25
+    vec2 diffUV = normalize(pos - myResolution*haalf_vec); 
26
     texCoord = pos + (diffUV * diffTime);
27
   } 
28
 
29
-  vec3 cY = texture2DRect(myTextureY, texCoord);
30
-  vec3 cU = texture2DRect(myTextureU, texCoord*half_vec);
31
-  vec3 cV = texture2DRect(myTextureV, texCoord*half_vec);
32
+  vec4 cY = texture2DRect(myTextureY, texCoord);
33
+  vec4 cU = texture2DRect(myTextureU, texCoord*haalf_vec);
34
+  vec4 cV = texture2DRect(myTextureV, texCoord*haalf_vec);
35
 
36
   gl_FragColor = vec4(cY.r,cU.r,cV.r,1.0);
37
 }
38
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/zigzag.shader -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/shaders/zigzag.shader Changed
29
 
1
@@ -1,16 +1,18 @@
2
 uniform sampler2DRect myTextureY; // tex unit 0
3
 uniform sampler2DRect myTextureU; // tex unit 1
4
 uniform sampler2DRect myTextureV; // tex unit 2
5
+
6
 uniform float pts; // tex unit 2
7
-const vec2 half_vec=vec2(0.5,0.5);
8
+const vec2 haalf_vec=vec2(0.5,0.5);
9
 
10
-void main(void) {
11
-vec2 p=gl_TexCoord[0].xy;
12
-p.x = p.x + sin(p.y*.5+p.x*6.+pts/100000.*2.)*3;
13
-vec2 half=half_vec*p;
14
-vec4 texY = texture2DRect(myTextureY,p);
15
-vec4 texU = texture2DRect(myTextureU,half);
16
-vec4 texV = texture2DRect(myTextureV,half);
17
-gl_FragColor = vec4(texY.r, texU.r, texV.r, 1.0);
18
+void main(void) 
19
+{
20
+  vec2 p=gl_TexCoord[0].xy;
21
+  p.x = p.x + sin(p.y*.5+p.x*6.+pts/100000.*2.)*3.;
22
+  vec2 haalf=haalf_vec*p;
23
+  vec4 texY = texture2DRect(myTextureY,p);
24
+  vec4 texU = texture2DRect(myTextureU,haalf);
25
+  vec4 texV = texture2DRect(myTextureV,haalf);
26
+  gl_FragColor = vec4(texY.r, texU.r, texV.r, 1.0);
27
 }
28
 
29
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/zigzag.shader -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/glShaderLoader/zigzag.shader Changed
16
 
1
@@ -7,10 +7,10 @@
2
 
3
 void main(void) {
4
 vec2 p=gl_TexCoord[0].xy;
5
-p.x = p.x + sin(p.y*.5+pts/100000.*2.)*3;
6
-vec2 half=half_vec*p;
7
+p.x = p.x + sin(p.y*.5+pts/100000.*2.)*3.;
8
+vec2 halfOne=half_vec*p;
9
 vec4 texY = texture2DRect(myTextureY,p);
10
-vec4 texU = texture2DRect(myTextureU,half);
11
-vec4 texV = texture2DRect(myTextureV,half);
12
+vec4 texU = texture2DRect(myTextureU,halfOne);
13
+vec4 texV = texture2DRect(myTextureV,halfOne);
14
 gl_FragColor = vec4(texY.r, texU.r, texV.r, 1.0);
15
 }
16
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/sample_distort/sampleGl.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/sample_distort/sampleGl.cpp Changed
44
 
1
@@ -74,24 +74,12 @@
2
         // vertex shader 
3
        
4
         // frag shader
5
-        glProgramY = new QGLShaderProgram(_context);
6
-        ADM_assert(glProgramY);
7
-        if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment, myShaderY))
8
+        glProgramY =    createShaderFromSource(QGLShader::Fragment,myShaderY);
9
+        if(!glProgramY)
10
         {
11
-                ADM_error("[GL Render] Fragment log: %s\n", glProgramY->log().toUtf8().constData());
12
-                ADM_assert(0);
13
-        }
14
-        if ( !glProgramY->link())
15
-        {
16
-            ADM_error("[GL Render] Link log: %s\n", glProgramY->log().toUtf8().constData());
17
-            ADM_assert(0);
18
-        }
19
+            ADM_error("Cannot setup shader\n");
20
+        }        
21
 
22
-        if ( !glProgramY->bind())
23
-        {
24
-                ADM_error("[GL Render] Binding FAILED\n");
25
-                ADM_assert(0);
26
-        }
27
         glList=glGenLists(1);
28
         
29
         fboY->release();
30
@@ -113,6 +101,13 @@
31
 */
32
 bool openGlDistort::getNextFrame(uint32_t *fn,ADMImage *image)
33
 {
34
+    if(!glProgramY)
35
+    {
36
+        char strxx[80];
37
+        snprintf(strxx,80,"Shader was not compiled succesfully");
38
+        image->printString(2,4,strxx); 
39
+        return true;
40
+    }
41
     // since we do nothing, just get the output of previous filter
42
     if(false==previousFilter->getNextFrame(fn,image))
43
     {
44
avidemux_2.6.18.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/sample_fragment2/sampleGl.cpp -> avidemux_2.6.19.tar.gz/avidemux_plugins/ADM_videoFilters6_openGl/sample_fragment2/sampleGl.cpp Changed
45
 
1
@@ -78,25 +78,12 @@
2
         _parentQGL->makeCurrent();
3
         fboY->bind();
4
         printf("Compiling shader \n");
5
-        glProgramY = new QGLShaderProgram(_context);
6
-        ADM_assert(glProgramY);
7
-        if ( !glProgramY->addShaderFromSourceCode(QGLShader::Fragment, myShaderY))
8
+        glProgramY =    createShaderFromSource(QGLShader::Fragment,myShaderY);
9
+        if(!glProgramY)
10
         {
11
-                ADM_error("[GL Render] Fragment log: %s\n", glProgramY->log().toUtf8().constData());
12
-                ADM_assert(0);
13
+            ADM_error("Cannot setup shader\n");
14
         }
15
-        if ( !glProgramY->link())
16
-        {
17
-            ADM_error("[GL Render] Link log: %s\n", glProgramY->log().toUtf8().constData());
18
-            ADM_assert(0);
19
-        }
20
-
21
-        if ( !glProgramY->bind())
22
-        {
23
-                ADM_error("[GL Render] Binding FAILED\n");
24
-                ADM_assert(0);
25
-        }
26
-
27
+        
28
         fboY->release();
29
         _parentQGL->doneCurrent();
30
 
31
@@ -116,6 +103,13 @@
32
 */
33
 bool openGlSample::getNextFrame(uint32_t *fn,ADMImage *image)
34
 {
35
+    if(!glProgramY)
36
+    {
37
+        char strxx[80];
38
+        snprintf(strxx,80,"Shader was not compiled succesfully");
39
+        image->printString(2,4,strxx); 
40
+        return true;
41
+    }
42
     // since we do nothing, just get the output of previous filter
43
     if(false==previousFilter->getNextFrame(fn,image))
44
     {
45
avidemux_2.6.18.tar.gz/avidemux_plugins/CMakeLists.txt -> avidemux_2.6.19.tar.gz/avidemux_plugins/CMakeLists.txt Changed
38
 
1
@@ -211,23 +211,23 @@
2
     checkQt()
3
     IF (NOT QT_FOUND)
4
         SET(DO_QT4 0)
5
-        MESSAGE("ERROR QT4 UI requested, but qt4 libraries not found... disabling it")
6
+        MESSAGE("ERROR QT4 type UI requested, but Qt libraries not found... disabling it")
7
        MESSAGE("")
8
     ELSE (NOT QT_FOUND)
9
-        MESSAGE(STATUS "QT4 libraries found, good")
10
+        MESSAGE(STATUS "Qt libraries found, good")
11
         CHECK_ADM_CONFIG_H(${QT_EXTENSION} ADM_INC)
12
        MESSAGE("")
13
 
14
         INCLUDE(admCheckOpenGl)
15
         IF(NOT ADM_INC)
16
-            MESSAGE("ERROR QT4 UI requested, but cannot find header file for avidemux/qt4...disabling it")
17
+            MESSAGE("ERROR QT4 type UI requested, but cannot find header files from avidemux/qt4... disabling it")
18
            MESSAGE("")
19
             SET(DO_QT4 0)
20
         ENDIF(NOT ADM_INC)
21
     ENDIF (NOT QT_FOUND)
22
 endif(DO_QT4)
23
 
24
-APPEND_SUMMARY_LIST("User Interface" "Qt 4" "${DO_QT4}")
25
+APPEND_SUMMARY_LIST("User Interface" "Qt" "${DO_QT4}")
26
 
27
 #*****
28
 # CLI
29
@@ -239,7 +239,7 @@
30
         CHECK_ADM_CONFIG_H(cli ADM_INC)
31
 
32
         IF(NOT ADM_INC)
33
-            MESSAGE("ERROR CLI UI requested, but cannot find header file for avidemux/cli...disabling it")
34
+            MESSAGE("ERROR CLI type UI requested, but cannot find header files from avidemux/cli... disabling it")
35
             SET(DO_CLI 0)
36
         ENDIF(NOT ADM_INC)
37
 
38
avidemux_2.6.18.tar.gz/bootStrap.bash -> avidemux_2.6.19.tar.gz/bootStrap.bash Changed
81
 
1
@@ -8,7 +8,7 @@
2
 rebuild=0
3
 do_core=1
4
 do_cli=1
5
-do_qt4=1
6
+do_qt=1
7
 do_plugins=1
8
 do_asan=0
9
 debug=0
10
@@ -92,7 +92,7 @@
11
         else echo   "Release build"
12
         fi
13
         printModule $do_core Core
14
-        printModule $do_qt4 ${qt_ext}
15
+        printModule $do_qt ${qt_ext}
16
         printModule $do_cli Cli
17
         printModule $do_plugins Plugins
18
 }
19
@@ -107,15 +107,15 @@
20
         echo "  --tgz                 : Create tgz packages"
21
         echo "  --debug               : Switch debugging on"
22
         echo "  --rebuild             : Preserve existing build directories"
23
-        echo "  --with-core           : Build core"
24
+        echo "  --with-core           : Build core (default)"
25
         echo "  --without-core        : Don't build core"
26
-        echo "  --with-cli            : Build cli"
27
+        echo "  --with-cli            : Build cli (default)"
28
         echo "  --without-cli         : Don't build cli"
29
-        echo "  --with-core           : Build core"
30
-        echo "  --without-qt4         : Don't build qt4"
31
-        echo "  --with-plugins        : Build plugins"
32
+        echo "  --with-qt             : Build Qt dependent components (default)"
33
+        echo "  --without-qt          : Don't build Qt dependent components"
34
+        echo "  --with-plugins        : Build plugins (default)"
35
         echo "  --without-plugins     : Don't build plugins"
36
-        echo "  --enable-qt4          : Try to use qt4 instead of qt5"
37
+        echo "  --enable-qt4          : Try to use Qt4 instead of Qt5"
38
         echo "  --enable-asan         : Enable Clang/llvm address sanitizer"
39
         echo "  --with-clang          : Use clang/clang++ as compiler"
40
         echo "  --with-system-libass  : Use system libass instead of the bundled one"
41
@@ -200,8 +200,8 @@
42
          --with-clang)
43
                 export COMPILER="-DCMAKE_C_COMPILER=/usr/bin/clang -DCMAKE_CXX_COMPILER=/usr/bin/clang++"
44
                 ;;
45
-         --without-qt4)
46
-                do_qt4=0
47
+         --without-qt)
48
+                do_qt=0
49
              ;;
50
          --without-cli)
51
                 do_cli=0
52
@@ -220,8 +220,8 @@
53
          --enable-asan)
54
                 do_asan=1
55
              ;;
56
-         --with-qt4)
57
-                do_qt4=1
58
+         --with-qt)
59
+                do_qt=1
60
              ;;
61
          --with-cli)
62
                 do_cli=1
63
@@ -292,7 +292,7 @@
64
         echo " Installing core"
65
         cd $TOP/buildCore${POSTFIX} 
66
 fi
67
-if [ "x$do_qt4" = "x1" ] ; then 
68
+if [ "x$do_qt" = "x1" ] ; then
69
         echo "** $qt_ext **"
70
         cd $TOP
71
         Process build${qt_ext} ../avidemux/qt4
72
@@ -311,7 +311,7 @@
73
         cd $TOP
74
         Process buildPluginsCommon ../avidemux_plugins "-DPLUGIN_UI=COMMON $EXTRA_CMAKE_DEFS"
75
 fi
76
-if [ "x$do_plugins" = "x1" -a "x$do_qt4" = "x1" ] ; then 
77
+if [ "x$do_plugins" = "x1" -a "x$do_qt" = "x1" ] ; then
78
         echo "** Plugins ${qt_ext} **"
79
         cd $TOP
80
         Process buildPlugins${qt_ext} ../avidemux_plugins "-DPLUGIN_UI=QT4 $EXTRA_CMAKE_DEFS"
81
avidemux_2.6.18.tar.gz/cmake/admFFmpegBuild_helpers.cmake -> avidemux_2.6.19.tar.gz/cmake/admFFmpegBuild_helpers.cmake Changed
14
 
1
@@ -6,11 +6,10 @@
2
         set(FFMPEG_FLAGS "${FFMPEG_FLAGS} ${opt}=\"${arg}\"")
3
     endif ("${ARGV1}" STREQUAL "")
4
 ENDMACRO (xadd)
5
-
6
+include(admFFmpegVersion)
7
 option(FF_INHERIT_BUILD_ENV "" ON)
8
 find_package(Patch)
9
 
10
-set(FFMPEG_VERSION "3.0.5")
11
 set(FFMPEG_ROOT_DIR "${AVIDEMUX_TOP_SOURCE_DIR}/avidemux_core/ffmpeg_package")
12
 set(FFMPEG_PATCH_DIR  "${FFMPEG_ROOT_DIR}/patches/")
13
 set(FFMPEG_SOURCE_ARCHIVE "ffmpeg-${FFMPEG_VERSION}.tar.bz2")
14
avidemux_2.6.19.tar.gz/cmake/admFFmpegVersion.cmake Added
4
 
1
@@ -0,0 +1,2 @@
2
+set(FFMPEG_VERSION "3.0.7")
3
+
4
avidemux_2.6.18.tar.gz/cmake/avidemuxVersion.cmake -> avidemux_2.6.19.tar.gz/cmake/avidemuxVersion.cmake Changed
10
 
1
@@ -7,7 +7,7 @@
2
 include(admTimeStamp)
3
 SET(CPACK_PACKAGE_VERSION_MAJOR "2")
4
 SET(CPACK_PACKAGE_VERSION_MINOR "6")
5
-SET(CPACK_PACKAGE_VERSION_P     "18")
6
+SET(CPACK_PACKAGE_VERSION_P     "19")
7
 SET(CPACK_PACKAGE_VERSION_PATCH "${CPACK_PACKAGE_VERSION_P}")
8
 SET(AVIDEMUX_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}") 
9
 SET(AVIDEMUX_API_VERSION "${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}") 
10
avidemux_2.6.18.tar.gz/createDebFromSourceUbuntu.bash -> avidemux_2.6.19.tar.gz/createDebFromSourceUbuntu.bash Changed
13
 
1
@@ -21,9 +21,9 @@
2
     echo "You will be asked to enter your password because installing build dependencies requires root permissions"
3
     # gcc, g++ and make get installed as dependencies of build-essential
4
     sudo apt-get update && sudo apt-get install build-essential cmake pkg-config yasm \
5
-    libsqlite3-dev libfontconfig1-dev libfribidi-dev libxv-dev libvdpau-dev libva-dev libpulse-dev \
6
+    libsqlite3-dev libfontconfig1-dev libfribidi-dev libxv-dev libvdpau-dev libva-dev libasound2-dev libpulse-dev \
7
     qttools5-dev-tools qtbase5-dev libqt5opengl5-dev \
8
-    libpng12-dev libaften-dev libmp3lame-dev libx264-dev libfaad-dev libfaac-dev libopus-dev libvorbis-dev libogg-dev libdca-dev \
9
+    libpng-dev libaften-dev libmp3lame-dev libx264-dev libxvidcore-dev libfaad-dev libfaac-dev libopus-dev libvorbis-dev libogg-dev libdca-dev \
10
     || { echo "The installation at least of some of the build dependencies failed. Aborting." && exit 2; }
11
     sudo apt-get install libx265-dev \
12
     || echo "Warning: libx265-dev cannot be installed using package management. Avidemux won't be able to encode in h265 unless the library and the headers have been installed manually. Continuing anyway." # there are no official libx265 packages for Ubuntu Trusty
13