We truncated the diff of some files because they were too big.
If you want to see the full diff for every file, click here.
Changes of Revision 36
avidemux3.changes
Changed
x
1
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
//**************************************************
3
void UI_refreshCustomMenu(void) {}
4
5
+void UI_applySettings(void)
6
+{}
7
+
8
int UI_getCurrentPreview(void)
9
{
10
return 0;
11
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
11
{
12
ADM_info("Saving prefs\n");
13
prefs->save ();
14
+ UI_applySettings();
15
}
16
return;
17
case ACT_SavePref:
18
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
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
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
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
75
admPreview::stop();
76
setPreviewMode(ADM_PREVIEW_NONE);
77
}
78
+ UI_setNeedsResizingFlag(false);
79
delete avifileinfo;
80
//delete wavinfo;
81
admPreview::destroy();
82
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
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
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
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
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
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
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
\fn DIA_flyDialogQt4.h
3
copyright : (C) 2007 by mean
4
email : fixounet@free.fr
5
-
6
-
7
+
8
+
9
***************************************************************************/
10
11
/***************************************************************************
12
13
#include <QFrame>
14
#include <QTimer>
15
#include <QDialog>
16
+#include <QLabel>
17
18
#include "ADM_default.h"
19
#include "ADM_rgb.h"
20
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
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
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
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
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
115
116
private:
117
virtual bool nextImageInternal(void);
118
-
119
+
120
public slots:
121
virtual bool nextImage(void);
122
virtual void backOneMinute(void);
123
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
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
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
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
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
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
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
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
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
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
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
2
+include(admFFmpegVersion)
3
SET(ADM_LIB ADM_dialogQt4)
4
5
SET(
6
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
63
ui.volumeWidget->setTitleBarWidget(dummy3);
64
ui.audioMetreWidget->setTitleBarWidget(dummy4);
65
66
+ widgetsUpdateTooltips();
67
+
68
this->adjustSize();
69
QuiTaskBarProgress=createADMTaskBarProgress();
70
}
71
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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>&Help</string>
11
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
22
<item>
23
<widget class="QLabel" name="label_7">
24
<property name="text">
25
- <string><b>Video Decoder<b></string>
26
+ <string><b>Video Decoder</b></string>
27
</property>
28
</widget>
29
</item>
30
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
<translation type="obsolete">Potser es refereix a un fitxer d'í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'intent d'obrir %s!</translation>
9
</message>
10
11
<translation type="obsolete"><b>Vídeo</b></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
20
<translation type="unfinished">Configura</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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>&Help</source>
78
<translation type="unfinished">Aj&uda</translation>
79
</message>
80
81
<translation type="obsolete">Au&to</translation>
82
</message>
83
<message>
84
- <location line="+1583"/>
85
+ <location line="+1540"/>
86
<source>&Open...</source>
87
<translation type="unfinished">&Obre</translation>
88
</message>
89
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
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>&Toolbars</source>
117
<translation type="unfinished"></translation>
118
</message>
119
120
<translation type="unfinished"></translation>
121
</message>
122
<message>
123
- <location line="+41"/>
124
+ <location line="+44"/>
125
<source>Codec O&ptions</source>
126
<translation type="unfinished"></translation>
127
</message>
128
<message>
129
- <location line="+33"/>
130
- <source><b>Video Decoder<b></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
140
</message>
141
<message>
142
<location line="+114"/>
143
- <location line="+978"/>
144
+ <location line="+932"/>
145
<source>&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
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
167
<translation type="unfinished"></translation>
168
</message>
169
<message>
170
- <location line="+185"/>
171
+ <location line="+178"/>
172
<source>Se&lection</source>
173
<translation type="unfinished"></translation>
174
</message>
175
176
<translation type="unfinished"></translation>
177
</message>
178
<message>
179
- <location line="+100"/>
180
+ <location line="+84"/>
181
<source>Audio &Metre</source>
182
<translation type="unfinished"></translation>
183
</message>
184
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
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
11
<translation type="obsolete"><b>Video</b></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
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
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
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>&Help</source>
64
<translation type="unfinished">Náp&ověda</translation>
65
</message>
66
67
<translation type="obsolete">Au&to</translation>
68
</message>
69
<message>
70
- <location line="+1583"/>
71
+ <location line="+1540"/>
72
<source>&Open...</source>
73
<translation type="unfinished">&Otevřít...</translation>
74
</message>
75
76
<translation type="unfinished">&Na sebe</translation>
77
</message>
78
<message>
79
- <location line="-533"/>
80
+ <location line="-1636"/>
81
+ <source><b>Video Decoder</b></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>&Separate</source>
93
<translation type="unfinished">S&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
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
111
<translation type="obsolete">Video CD</translation>
112
</message>
113
<message>
114
- <location line="-1402"/>
115
+ <location line="-1375"/>
116
<source>&Toolbars</source>
117
<translation type="unfinished"></translation>
118
</message>
119
120
<translation type="unfinished"></translation>
121
</message>
122
<message>
123
- <location line="+41"/>
124
+ <location line="+44"/>
125
<source>Codec O&ptions</source>
126
<translation type="unfinished"></translation>
127
</message>
128
<message>
129
- <location line="+33"/>
130
- <source><b>Video Decoder<b></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
140
</message>
141
<message>
142
<location line="+114"/>
143
- <location line="+978"/>
144
+ <location line="+932"/>
145
<source>&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
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
167
<translation type="unfinished"></translation>
168
</message>
169
<message>
170
- <location line="+185"/>
171
+ <location line="+178"/>
172
<source>Se&lection</source>
173
<translation type="unfinished"></translation>
174
</message>
175
176
<translation type="unfinished"></translation>
177
</message>
178
<message>
179
- <location line="+100"/>
180
+ <location line="+84"/>
181
<source>Audio &Metre</source>
182
<translation type="unfinished"></translation>
183
</message>
184
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
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
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.) "resize" / "add border" / "crop" 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.) "tilpas størrelse"/"tilføj kanter"/"beskær" 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.) "resize" / "add border" / "crop" 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.) "tilpas størrelse"/"tilføj kanter"/"beskær" 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
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
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
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
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
11
<translation type="obsolete"><b>Video-Spur</b></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
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
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
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
54
<translation type="obsolete">Auswahlbereich</translation>
55
</message>
56
<message>
57
- <location line="-1297"/>
58
+ <location line="-1276"/>
59
<source>&Help</source>
60
<translation type="unfinished">&Hilfe</translation>
61
</message>
62
63
<translation type="obsolete">V&orlagen</translation>
64
</message>
65
<message>
66
- <location line="+1583"/>
67
+ <location line="+1540"/>
68
<source>&Open...</source>
69
<translation type="unfinished">&Öffnen...</translation>
70
</message>
71
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
81
<translation type="obsolete">ein Bild zu&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
96
<translation type="obsolete">Schriftzeichen bearbeiten</translation>
97
</message>
98
<message>
99
- <location line="+290"/>
100
+ <location line="+274"/>
101
<source>&Input</source>
102
<translation type="unfinished">&Original</translation>
103
</message>
104
105
<translation type="unfinished">&ü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>&Separate</source>
118
<translation type="unfinished">&eigenständig</translation>
119
</message>
120
121
<translation type="obsolete">Video CD</translation>
122
</message>
123
<message>
124
- <location line="-1786"/>
125
+ <location line="-1743"/>
126
<source>&Toolbars</source>
127
<translation type="unfinished">&Werkzeugleisten</translation>
128
</message>
129
130
<translation type="obsolete">Codec-Einstellungen</translation>
131
</message>
132
<message>
133
- <location line="+74"/>
134
- <source><b>Video Decoder<b></source>
135
- <translation type="unfinished"><b>Video-Decoder</b></translation>
136
- </message>
137
- <message>
138
- <location line="+139"/>
139
+ <location line="+216"/>
140
<source><b>Video Output</b></source>
141
<translation type="unfinished"><b>Video-Codec</b></translation>
142
</message>
143
144
<translation type="obsolete">Pegelanzeige</translation>
145
</message>
146
<message>
147
- <location line="+1078"/>
148
+ <location line="+1032"/>
149
<source>&Codec Options</source>
150
<translation type="unfinished">&Codec-Einstellungen</translation>
151
</message>
152
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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't remove all frames</source>
142
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
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
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
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
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
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
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
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
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>&Auto</source>
17
<translation type="unfinished">A&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>&Help</source>
29
<translation type="unfinished"></translation>
30
</message>
31
32
<translation type="unfinished"></translation>
33
</message>
34
<message>
35
- <location line="+41"/>
36
+ <location line="+44"/>
37
<source>Codec O&ptions</source>
38
<translation type="unfinished"></translation>
39
</message>
40
<message>
41
<location line="+33"/>
42
- <source><b>Video Decoder<b></source>
43
+ <source><b>Video Decoder</b></source>
44
<translation type="unfinished"></translation>
45
</message>
46
<message>
47
48
</message>
49
<message>
50
<location line="+114"/>
51
- <location line="+978"/>
52
+ <location line="+932"/>
53
<source>&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
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
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
99
<translation type="unfinished"></translation>
100
</message>
101
<message>
102
- <location line="+44"/>
103
+ <location line="+38"/>
104
<source>Se&lection</source>
105
<translation type="unfinished"></translation>
106
</message>
107
108
<translation type="unfinished"></translation>
109
</message>
110
<message>
111
- <location line="+100"/>
112
+ <location line="+84"/>
113
<source>Audio &Metre</source>
114
<translation type="unfinished"></translation>
115
</message>
116
117
<translation>Set Marker &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&fault</translation>
128
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
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
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
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
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
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
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
11
<translation type="obsolete"><b>Vídeo</b></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
20
<translation type="unfinished">Configurar</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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
61
<translation type="obsolete">DVD</translation>
62
</message>
63
<message>
64
- <location line="-1284"/>
65
+ <location line="-1263"/>
66
<source>&Help</source>
67
<translation type="unfinished"></translation>
68
</message>
69
70
<translation type="unfinished"></translation>
71
</message>
72
<message>
73
- <location line="+41"/>
74
+ <location line="+44"/>
75
<source>Codec O&ptions</source>
76
<translation type="unfinished"></translation>
77
</message>
78
<message>
79
- <location line="+33"/>
80
- <source><b>Video Decoder<b></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
90
</message>
91
<message>
92
<location line="+114"/>
93
- <location line="+978"/>
94
+ <location line="+932"/>
95
<source>&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
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
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&lection</source>
144
<translation type="unfinished"></translation>
145
</message>
146
147
<translation type="unfinished"></translation>
148
</message>
149
<message>
150
- <location line="+100"/>
151
+ <location line="+84"/>
152
<source>Audio &Metre</source>
153
<translation type="unfinished"></translation>
154
</message>
155
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
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
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
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
11
<translation type="obsolete"><b>Bideoa</b></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
20
<translation>Itxuratu</translation>
21
</message>
22
<message>
23
- <location line="-666"/>
24
+ <location line="-669"/>
25
<source>&Recent</source>
26
<translation>Az&kenak</translation>
27
</message>
28
29
<translation type="vanished">Kodek Aukerak</translation>
30
</message>
31
<message>
32
- <location line="+74"/>
33
<source><b>Video Decoder<b></source>
34
- <translation><b>Bideo Dekodeatzailea<b></translation>
35
+ <translation type="vanished"><b>Bideo Dekodeatzailea<b></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
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
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
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
84
<translation>B:</translation>
85
</message>
86
<message>
87
- <location line="-1416"/>
88
+ <location line="-1389"/>
89
<source>Vi&deo</source>
90
<translation>&Bideoa</translation>
91
</message>
92
93
<translation>&Tresnak</translation>
94
</message>
95
<message>
96
- <location line="+404"/>
97
+ <location line="+407"/>
98
<source><b>Audio Output</b></source>
99
<translation><b>Audio Irteera</b></translation>
100
</message>
101
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
111
<translation type="vanished">Audio Neurgailua</translation>
112
</message>
113
<message>
114
- <location line="+340"/>
115
+ <location line="+318"/>
116
<source>&Open...</source>
117
<translation>&Ireki...</translation>
118
</message>
119
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>&Navigation</source>
128
<translation>&Nabigazioa</translation>
129
</message>
130
131
<translation type="obsolete">Bideo CD-a</translation>
132
</message>
133
<message>
134
- <location line="-1703"/>
135
+ <location line="-1657"/>
136
<source>Codec O&ptions</source>
137
<translation type="unfinished"></translation>
138
</message>
139
<message>
140
- <location line="+743"/>
141
+ <location line="+33"/>
142
+ <source><b>Video Decoder</b></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
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
163
<translation type="unfinished"></translation>
164
</message>
165
<message>
166
- <location line="+185"/>
167
+ <location line="+178"/>
168
<source>Se&lection</source>
169
<translation type="unfinished"></translation>
170
</message>
171
172
<translation type="unfinished"></translation>
173
</message>
174
<message>
175
- <location line="+100"/>
176
+ <location line="+84"/>
177
<source>Audio &Metre</source>
178
<translation type="unfinished"></translation>
179
</message>
180
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
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
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
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
11
<translation>Avidemux</translation>
12
</message>
13
<message>
14
- <location line="+102"/>
15
+ <location line="+105"/>
16
<source>&Help</source>
17
<translation>&Aide</translation>
18
</message>
19
20
<translation type="obsolete">Options</translation>
21
</message>
22
<message>
23
- <location line="+79"/>
24
- <source><b>Video Decoder<b></source>
25
- <translation><b>Décodeur Vidéo</b></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
34
<translation><b>Format de sortie</b></translation>
35
</message>
36
<message>
37
- <location line="+968"/>
38
+ <location line="+922"/>
39
<source>&Open...</source>
40
<translation>&Ouvrir...</translation>
41
</message>
42
43
<translation>Cot&e à cote</translation>
44
</message>
45
<message>
46
- <location line="-1824"/>
47
+ <location line="-1781"/>
48
<source>Vi&deo</source>
49
<translation></translation>
50
</message>
51
52
<translation>&Récent</translation>
53
</message>
54
<message>
55
- <location line="+41"/>
56
+ <location line="+44"/>
57
<source>Codec O&ptions</source>
58
<translation></translation>
59
</message>
60
<message>
61
- <location line="+108"/>
62
+ <location line="+33"/>
63
+ <source><b>Video Decoder</b></source>
64
+ <translation><b>Décodeur Vidéo</b></translation>
65
+ </message>
66
+ <message>
67
+ <location line="+75"/>
68
<location line="+7"/>
69
<source>XXXX</source>
70
<translation></translation>
71
72
</message>
73
<message>
74
<location line="+149"/>
75
- <location line="+978"/>
76
+ <location line="+932"/>
77
<source>&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
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
114
<message>
115
<location line="+23"/>
116
<source>Backward one minute [CTRL+DOWN]</source>
117
- <translation>Reculer d"une minute [CTRL+BAS]</translation>
118
+ <translation>Reculer d'une minute [CTRL+BAS]</translation>
119
</message>
120
<message>
121
<location line="+23"/>
122
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
132
<translation></translation>
133
</message>
134
<message>
135
- <location line="+44"/>
136
+ <location line="+38"/>
137
<source>Se&lection</source>
138
<translation></translation>
139
</message>
140
141
<translation></translation>
142
</message>
143
<message>
144
- <location line="+100"/>
145
+ <location line="+84"/>
146
<source>Audio &Metre</source>
147
<translation></translation>
148
</message>
149
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
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
174
<message>
175
<location line="+1"/>
176
<source>_Revert to saved default output settings on video load</source>
177
- <translation>&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
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
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
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
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
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>&Help</source>
61
<translation>&Súgó</translation>
62
</message>
63
64
<translation>U&grás</translation>
65
</message>
66
<message>
67
- <location line="+1583"/>
68
+ <location line="+1540"/>
69
<source>&Open...</source>
70
<translation>M&egnyitás…</translation>
71
</message>
72
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
88
<translation>B:</translation>
89
</message>
90
<message>
91
- <location line="+290"/>
92
+ <location line="+274"/>
93
<source>&Input</source>
94
<translation>&Bemenet</translation>
95
</message>
96
97
<translation>Fen&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>&Separate</source>
109
<translation>&Szeparált</translation>
110
</message>
111
<message>
112
- <location line="-1786"/>
113
+ <location line="-1743"/>
114
<source>&Toolbars</source>
115
<translation>Eszköz&tárak</translation>
116
</message>
117
118
<translation type="vanished">Kódoló beállítás</translation>
119
</message>
120
<message>
121
- <location line="+74"/>
122
<source><b>Video Decoder<b></source>
123
- <translation><b>Videó dekódoló<b></translation>
124
+ <translation type="vanished"><b>Videó dekódoló<b></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
133
<translation type="vanished">Hang méter</translation>
134
</message>
135
<message>
136
- <location line="+1078"/>
137
+ <location line="+1032"/>
138
<source>&Codec Options</source>
139
<translation>&Kódek beállítás</translation>
140
</message>
141
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>&Navigation</source>
150
<translation>&Navigálás</translation>
151
</message>
152
153
<translation>Ctrl+Alt+M</translation>
154
</message>
155
<message>
156
- <location line="-1691"/>
157
+ <location line="-1645"/>
158
<source>Codec O&ptions</source>
159
<translation type="unfinished"></translation>
160
</message>
161
<message>
162
- <location line="+743"/>
163
+ <location line="+33"/>
164
+ <source><b>Video Decoder</b></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
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
185
<translation type="unfinished"></translation>
186
</message>
187
<message>
188
- <location line="+185"/>
189
+ <location line="+178"/>
190
<source>Se&lection</source>
191
<translation type="unfinished"></translation>
192
</message>
193
194
<translation type="unfinished"></translation>
195
</message>
196
<message>
197
- <location line="+100"/>
198
+ <location line="+84"/>
199
<source>Audio &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
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
11
<translation type="obsolete"><b>Video</b></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
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
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
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>&Help</source>
64
<translation>A&iuto</translation>
65
</message>
66
67
<translation type="obsolete">A&uto</translation>
68
</message>
69
<message>
70
- <location line="+1583"/>
71
+ <location line="+1540"/>
72
<source>&Open...</source>
73
<translation>&Apri...</translation>
74
</message>
75
76
<translation>Affiancati ver&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>&Separate</source>
88
<translation>&Separati</translation>
89
</message>
90
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
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
109
<translation type="obsolete">Video CD</translation>
110
</message>
111
<message>
112
- <location line="-1402"/>
113
+ <location line="-1375"/>
114
<source>&Toolbars</source>
115
<translation>&Barre degli strumenti</translation>
116
</message>
117
118
<translation type="vanished">Opzioni codec</translation>
119
</message>
120
<message>
121
- <location line="+74"/>
122
<source><b>Video Decoder<b></source>
123
- <translation><b>Decoder video<b></translation>
124
+ <translation type="vanished"><b>Decoder video<b></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
133
<translation type="vanished">Audiometro</translation>
134
</message>
135
<message>
136
- <location line="+1078"/>
137
+ <location line="+1032"/>
138
<source>&Codec Options</source>
139
<translation>Opzioni &codec</translation>
140
</message>
141
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>&Navigation</source>
150
<translation>&Navigazione</translation>
151
</message>
152
153
<translation>Ctrl+Alt+M</translation>
154
</message>
155
<message>
156
- <location line="-1691"/>
157
+ <location line="-1645"/>
158
<source>Codec O&ptions</source>
159
<translation type="unfinished"></translation>
160
</message>
161
<message>
162
- <location line="+743"/>
163
+ <location line="+33"/>
164
+ <source><b>Video Decoder</b></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
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
185
<translation type="unfinished"></translation>
186
</message>
187
<message>
188
- <location line="+185"/>
189
+ <location line="+178"/>
190
<source>Se&lection</source>
191
<translation type="unfinished"></translation>
192
</message>
193
194
<translation type="unfinished"></translation>
195
</message>
196
<message>
197
- <location line="+100"/>
198
+ <location line="+84"/>
199
<source>Audio &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
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
11
<translation type="obsolete"><b>映像</b></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
20
<translation type="unfinished">構成</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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>&Help</source>
64
<translation type="unfinished"></translation>
65
</message>
66
67
<translation type="unfinished"></translation>
68
</message>
69
<message>
70
- <location line="+41"/>
71
+ <location line="+44"/>
72
<source>Codec O&ptions</source>
73
<translation type="unfinished"></translation>
74
</message>
75
<message>
76
- <location line="+33"/>
77
- <source><b>Video Decoder<b></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
87
</message>
88
<message>
89
<location line="+114"/>
90
- <location line="+978"/>
91
+ <location line="+932"/>
92
<source>&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
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
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&lection</source>
141
<translation type="unfinished"></translation>
142
</message>
143
144
<translation type="unfinished"></translation>
145
</message>
146
<message>
147
- <location line="+100"/>
148
+ <location line="+84"/>
149
<source>Audio &Metre</source>
150
<translation type="unfinished"></translation>
151
</message>
152
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
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
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
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
11
<translation type="obsolete"><b>Obraz</b></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
20
<translation type="unfinished">Konfiguruj</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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>&Help</source>
61
<translation type="unfinished"></translation>
62
</message>
63
64
<translation type="unfinished"></translation>
65
</message>
66
<message>
67
- <location line="+41"/>
68
+ <location line="+44"/>
69
<source>Codec O&ptions</source>
70
<translation type="unfinished"></translation>
71
</message>
72
<message>
73
- <location line="+33"/>
74
- <source><b>Video Decoder<b></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
84
</message>
85
<message>
86
<location line="+114"/>
87
- <location line="+978"/>
88
+ <location line="+932"/>
89
<source>&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
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
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
135
<translation type="unfinished"></translation>
136
</message>
137
<message>
138
- <location line="+44"/>
139
+ <location line="+38"/>
140
<source>Se&lection</source>
141
<translation type="unfinished"></translation>
142
</message>
143
144
<translation type="unfinished"></translation>
145
</message>
146
<message>
147
- <location line="+100"/>
148
+ <location line="+84"/>
149
<source>Audio &Metre</source>
150
<translation type="unfinished"></translation>
151
</message>
152
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
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
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
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
11
<translation type="unfinished"></translation>
12
</message>
13
<message>
14
- <location line="+102"/>
15
+ <location line="+105"/>
16
<source>&Help</source>
17
<translation type="unfinished"></translation>
18
</message>
19
20
<translation type="unfinished"></translation>
21
</message>
22
<message>
23
- <location line="+41"/>
24
+ <location line="+44"/>
25
<source>Codec O&ptions</source>
26
<translation type="unfinished"></translation>
27
</message>
28
<message>
29
<location line="+33"/>
30
- <source><b>Video Decoder<b></source>
31
+ <source><b>Video Decoder</b></source>
32
<translation type="unfinished"></translation>
33
</message>
34
<message>
35
36
</message>
37
<message>
38
<location line="+114"/>
39
- <location line="+978"/>
40
+ <location line="+932"/>
41
<source>&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
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
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
87
<translation type="unfinished"></translation>
88
</message>
89
<message>
90
- <location line="+44"/>
91
+ <location line="+38"/>
92
<source>Se&lection</source>
93
<translation type="unfinished"></translation>
94
</message>
95
96
<translation type="unfinished"></translation>
97
</message>
98
<message>
99
- <location line="+100"/>
100
+ <location line="+84"/>
101
<source>Audio &Metre</source>
102
<translation type="unfinished"></translation>
103
</message>
104
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
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
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
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
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
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
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&eferences</source>
198
<translation type="unfinished"></translation>
199
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
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
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
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
29
<translation type="obsolete"><b>Видео</b></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
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
47
<translation type="obsolete">Выделено</translation>
48
</message>
49
<message>
50
- <location line="-1214"/>
51
+ <location line="-1194"/>
52
<source>&Help</source>
53
<translation type="unfinished">Сп&равка</translation>
54
</message>
55
56
<translation type="obsolete">&Авто</translation>
57
</message>
58
<message>
59
- <location line="+1583"/>
60
+ <location line="+1540"/>
61
<source>&Open...</source>
62
<translation type="unfinished">&Открыть...</translation>
63
</message>
64
65
<translation type="unfinished">&Сверху</translation>
66
</message>
67
<message>
68
- <location line="-533"/>
69
+ <location line="-1636"/>
70
+ <source><b>Video Decoder</b></source>
71
+ <translation><b>Декодер видео</b></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>&Separate</source>
82
<translation type="unfinished">&Отделить</translation>
83
</message>
84
85
<translation type="obsolete">&Закрыть</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>&Toolbars</source>
97
<translation type="unfinished">&Панели</translation>
98
</message>
99
100
<translation type="unfinished">&Недавно</translation>
101
</message>
102
<message>
103
- <location line="+41"/>
104
+ <location line="+44"/>
105
<source>Codec O&ptions</source>
106
<translation type="unfinished">На&стройки кодека</translation>
107
</message>
108
<message>
109
- <location line="+33"/>
110
<source><b>Video Decoder<b></source>
111
- <translation type="unfinished"><b>Декодер видео<b></translation>
112
+ <translation type="obsolete"><b>Декодер видео<b></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
121
</message>
122
<message>
123
<location line="+114"/>
124
- <location line="+978"/>
125
+ <location line="+932"/>
126
<source>&Navigation</source>
127
<translation type="unfinished">&Навигация</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
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
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
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
187
<translation type="unfinished"></translation>
188
</message>
189
<message>
190
- <location line="+44"/>
191
+ <location line="+38"/>
192
<source>Se&lection</source>
193
- <translation type="unfinished">&lВыбор</translation>
194
+ <translation type="unfinished">&Выбор</translation>
195
</message>
196
<message>
197
<location line="+73"/>
198
199
<translation type="unfinished">&Громкость</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
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
11
<translation type="obsolete"><b>Видео</b></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
20
<translation type="unfinished">Поставке</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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>&Help</source>
64
<translation type="unfinished"></translation>
65
</message>
66
67
<translation type="unfinished"></translation>
68
</message>
69
<message>
70
- <location line="+41"/>
71
+ <location line="+44"/>
72
<source>Codec O&ptions</source>
73
<translation type="unfinished"></translation>
74
</message>
75
<message>
76
- <location line="+33"/>
77
- <source><b>Video Decoder<b></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
87
</message>
88
<message>
89
<location line="+114"/>
90
- <location line="+978"/>
91
+ <location line="+932"/>
92
<source>&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
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
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&lection</source>
141
<translation type="unfinished"></translation>
142
</message>
143
144
<translation type="unfinished"></translation>
145
</message>
146
<message>
147
- <location line="+100"/>
148
+ <location line="+84"/>
149
<source>Audio &Metre</source>
150
<translation type="unfinished"></translation>
151
</message>
152
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
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
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
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
11
<translation type="obsolete"><b>Video</b></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
20
<translation type="unfinished">Postavke</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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>&Help</source>
64
<translation type="unfinished"></translation>
65
</message>
66
67
<translation type="unfinished"></translation>
68
</message>
69
<message>
70
- <location line="+41"/>
71
+ <location line="+44"/>
72
<source>Codec O&ptions</source>
73
<translation type="unfinished"></translation>
74
</message>
75
<message>
76
- <location line="+33"/>
77
- <source><b>Video Decoder<b></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
87
</message>
88
<message>
89
<location line="+114"/>
90
- <location line="+978"/>
91
+ <location line="+932"/>
92
<source>&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
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
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&lection</source>
141
<translation type="unfinished"></translation>
142
</message>
143
144
<translation type="unfinished"></translation>
145
</message>
146
<message>
147
- <location line="+100"/>
148
+ <location line="+84"/>
149
<source>Audio &Metre</source>
150
<translation type="unfinished"></translation>
151
</message>
152
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
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
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
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
11
<translation type="obsolete"><b>Video</b></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
20
<translation type="unfinished">Yapılandır</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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>&Help</source>
65
<translation type="unfinished"></translation>
66
</message>
67
68
<translation type="unfinished"></translation>
69
</message>
70
<message>
71
- <location line="+41"/>
72
+ <location line="+44"/>
73
<source>Codec O&ptions</source>
74
<translation type="unfinished"></translation>
75
</message>
76
<message>
77
- <location line="+33"/>
78
- <source><b>Video Decoder<b></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
88
</message>
89
<message>
90
<location line="+114"/>
91
- <location line="+978"/>
92
+ <location line="+932"/>
93
<source>&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
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
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&lection</source>
142
<translation type="unfinished"></translation>
143
</message>
144
145
<translation type="unfinished"></translation>
146
</message>
147
<message>
148
- <location line="+100"/>
149
+ <location line="+84"/>
150
<source>Audio &Metre</source>
151
<translation type="unfinished"></translation>
152
</message>
153
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
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
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
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
11
<translation type="obsolete"><b>視訊</b></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
20
<translation type="unfinished">設定</translation>
21
</message>
22
<message>
23
- <location line="-334"/>
24
+ <location line="-592"/>
25
+ <source><b>Video Decoder</b></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
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
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
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
74
<translation type="unfinished">B:</translation>
75
</message>
76
<message>
77
- <location line="-1421"/>
78
+ <location line="-1394"/>
79
<source>&Help</source>
80
<translation type="unfinished">說明(&H)</translation>
81
</message>
82
83
<translation type="obsolete">儲存(&S)</translation>
84
</message>
85
<message>
86
- <location line="+1568"/>
87
+ <location line="+1525"/>
88
<source>&Open...</source>
89
<translation type="unfinished">開啟(&O)...</translation>
90
</message>
91
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>&Toolbars</source>
104
<translation type="unfinished"></translation>
105
</message>
106
107
<translation type="unfinished"></translation>
108
</message>
109
<message>
110
- <location line="+41"/>
111
+ <location line="+44"/>
112
<source>Codec O&ptions</source>
113
<translation type="unfinished"></translation>
114
</message>
115
<message>
116
- <location line="+33"/>
117
- <source><b>Video Decoder<b></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
127
</message>
128
<message>
129
<location line="+114"/>
130
- <location line="+978"/>
131
+ <location line="+932"/>
132
<source>&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
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
154
<translation type="unfinished"></translation>
155
</message>
156
<message>
157
- <location line="+185"/>
158
+ <location line="+178"/>
159
<source>Se&lection</source>
160
<translation type="unfinished"></translation>
161
</message>
162
163
<translation type="unfinished"></translation>
164
</message>
165
<message>
166
- <location line="+100"/>
167
+ <location line="+84"/>
168
<source>Audio &Metre</source>
169
<translation type="unfinished"></translation>
170
</message>
171
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
#include "ADM_muxerUtils.h"
3
#include "fourcc.h"
4
#include "ADM_vidMisc.h"
5
-#include "prefs.h"
6
7
/**
8
\fn rescaleFps
9
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
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
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
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
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
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
2
/***************************************************************************
3
- NAL TYPE for H265
4
+ NAL TYPE for H264
5
6
**************************************************************************/
7
/***************************************************************************
8
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
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
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
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
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
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
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
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
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
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
34
index++;
35
return index;
36
}
37
+
38
/**
39
\fn ADM_findNalu
40
\brief lookup for a specific NALU in the given buffer
41
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
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
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
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
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
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
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
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
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
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
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
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
10
{
11
const GUID *guid;
12
enum AVCodecID codec;
13
+ int bitsPerChannel;
14
} dxva2_mode;
15
/**
16
*/
17
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
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
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
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
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
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
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
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
2
void *context;
3
VADisplay display;
4
VAConfigID configH264;
5
+ VAConfigID configMpeg2;
6
VAConfigID configH265;
7
VAConfigID configH26510Bits;
8
VAConfigID configVC1;
9
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
33
}
34
35
/**
36
- *
37
- * @return
38
+ *
39
+ * @return
40
*/
41
VADisplay admLibVA::getDisplay()
42
{
43
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
55
/**
56
\fn ~TsIndexer
57
*/
58
-TsIndexer::~TsIndexer()
59
+TsIndexerBase::~TsIndexerBase()
60
{
61
if(index) qfclose(index);
62
if(pkt) delete pkt;
63
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
2
*/
3
blackenBorders::blackenBorders( ADM_coreVideoFilter *in,CONFcouple *setup) : ADM_coreVideoFilter(in,setup)
4
{
5
- if(!setup || !ADM_paramLoad(setup,blackenBorder_param,¶m))
6
+ if(!setup || !ADM_paramLoad(setup,blackenBorder_param,¶m))
7
{
8
// Default value
9
param.left=0;
10
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( ¶m,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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 ¶m, 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
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
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
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
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 ¶m)
136
{
137
int ww,hh;
138
139
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
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
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 ¶m)
163
{
164
// Vertical detail detection
165
unsigned char *srcp,*srcp_saved;
166
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
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
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 ¶m,uint32_t invstrength)
190
{
191
// TODO: MMX / ISSE
192
const unsigned char *srcp ;
193
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
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 ¶m);
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 ¶m);
67
+ static void apply_filter(ADMImage *src,ADMImage *blur, ADMImage *dst,int plane,const msharpen ¶m,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
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
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 ¶m, 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
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 ¶m, ADM_coreVideoFilter *in)
146
+{
147
+ bool ret=false;
148
+
149
+ Ui_msharpenWindow dialog(qtLastRegisteredDialog(), ¶m,in);
150
+ qtRegisterDialog(&dialog);
151
+
152
+ if(dialog.exec()==QDialog::Accepted)
153
+ {
154
+ dialog.gather(¶m);
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
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
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
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
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
2
MPDelogo::MPDelogo(ADM_coreVideoFilter *in,CONFcouple *couples) : ADM_coreVideoFilter(in,couples)
3
{
4
if(!couples || !ADM_paramLoad(couples,delogo_param,¶m))
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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