polly-ffmpeg 0.1.9 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,24 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
5
+
6
+ <!--
7
+
8
+ ffmpeg
9
+
10
+ -->
11
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
12
+ <head>
13
+ <title>ffmpeg</title>
14
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
15
+ </head>
16
+ <frameset rows="20%, 80%">
17
+ <frameset cols="25%,35%,45%">
18
+ <frame src="fr_file_index.html" title="Files" name="Files" />
19
+ <frame src="fr_class_index.html" name="Classes" />
20
+ <frame src="fr_method_index.html" name="Methods" />
21
+ </frameset>
22
+ <frame src="files/README_textile.html" name="docwin" />
23
+ </frameset>
24
+ </html>
@@ -0,0 +1,208 @@
1
+
2
+ body {
3
+ font-family: Verdana,Arial,Helvetica,sans-serif;
4
+ font-size: 90%;
5
+ margin: 0;
6
+ margin-left: 40px;
7
+ padding: 0;
8
+ background: white;
9
+ }
10
+
11
+ h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; }
12
+ h1 { font-size: 150%; }
13
+ h2,h3,h4 { margin-top: 1em; }
14
+
15
+ a { background: #eef; color: #039; text-decoration: none; }
16
+ a:hover { background: #039; color: #eef; }
17
+
18
+ /* Override the base stylesheet's Anchor inside a table cell */
19
+ td > a {
20
+ background: transparent;
21
+ color: #039;
22
+ text-decoration: none;
23
+ }
24
+
25
+ /* and inside a section title */
26
+ .section-title > a {
27
+ background: transparent;
28
+ color: #eee;
29
+ text-decoration: none;
30
+ }
31
+
32
+ /* === Structural elements =================================== */
33
+
34
+ div#index {
35
+ margin: 0;
36
+ margin-left: -40px;
37
+ padding: 0;
38
+ font-size: 90%;
39
+ }
40
+
41
+
42
+ div#index a {
43
+ margin-left: 0.7em;
44
+ }
45
+
46
+ div#index .section-bar {
47
+ margin-left: 0px;
48
+ padding-left: 0.7em;
49
+ background: #ccc;
50
+ font-size: small;
51
+ }
52
+
53
+
54
+ div#classHeader, div#fileHeader {
55
+ width: auto;
56
+ color: white;
57
+ padding: 0.5em 1.5em 0.5em 1.5em;
58
+ margin: 0;
59
+ margin-left: -40px;
60
+ border-bottom: 3px solid #006;
61
+ }
62
+
63
+ div#classHeader a, div#fileHeader a {
64
+ background: inherit;
65
+ color: white;
66
+ }
67
+
68
+ div#classHeader td, div#fileHeader td {
69
+ background: inherit;
70
+ color: white;
71
+ }
72
+
73
+
74
+ div#fileHeader {
75
+ background: #057;
76
+ }
77
+
78
+ div#classHeader {
79
+ background: #048;
80
+ }
81
+
82
+
83
+ .class-name-in-header {
84
+ font-size: 180%;
85
+ font-weight: bold;
86
+ }
87
+
88
+
89
+ div#bodyContent {
90
+ padding: 0 1.5em 0 1.5em;
91
+ }
92
+
93
+ div#description {
94
+ padding: 0.5em 1.5em;
95
+ background: #efefef;
96
+ border: 1px dotted #999;
97
+ }
98
+
99
+ div#description h1,h2,h3,h4,h5,h6 {
100
+ color: #125;;
101
+ background: transparent;
102
+ }
103
+
104
+ div#validator-badges {
105
+ text-align: center;
106
+ }
107
+ div#validator-badges img { border: 0; }
108
+
109
+ div#copyright {
110
+ color: #333;
111
+ background: #efefef;
112
+ font: 0.75em sans-serif;
113
+ margin-top: 5em;
114
+ margin-bottom: 0;
115
+ padding: 0.5em 2em;
116
+ }
117
+
118
+
119
+ /* === Classes =================================== */
120
+
121
+ table.header-table {
122
+ color: white;
123
+ font-size: small;
124
+ }
125
+
126
+ .type-note {
127
+ font-size: small;
128
+ color: #DEDEDE;
129
+ }
130
+
131
+ .xxsection-bar {
132
+ background: #eee;
133
+ color: #333;
134
+ padding: 3px;
135
+ }
136
+
137
+ .section-bar {
138
+ color: #333;
139
+ border-bottom: 1px solid #999;
140
+ margin-left: -20px;
141
+ }
142
+
143
+
144
+ .section-title {
145
+ background: #79a;
146
+ color: #eee;
147
+ padding: 3px;
148
+ margin-top: 2em;
149
+ margin-left: -30px;
150
+ border: 1px solid #999;
151
+ }
152
+
153
+ .top-aligned-row { vertical-align: top }
154
+ .bottom-aligned-row { vertical-align: bottom }
155
+
156
+ /* --- Context section classes ----------------------- */
157
+
158
+ .context-row { }
159
+ .context-item-name { font-family: monospace; font-weight: bold; color: black; }
160
+ .context-item-value { font-size: small; color: #448; }
161
+ .context-item-desc { color: #333; padding-left: 2em; }
162
+
163
+ /* --- Method classes -------------------------- */
164
+ .method-detail {
165
+ background: #efefef;
166
+ padding: 0;
167
+ margin-top: 0.5em;
168
+ margin-bottom: 1em;
169
+ border: 1px dotted #ccc;
170
+ }
171
+ .method-heading {
172
+ color: black;
173
+ background: #ccc;
174
+ border-bottom: 1px solid #666;
175
+ padding: 0.2em 0.5em 0 0.5em;
176
+ }
177
+ .method-signature { color: black; background: inherit; }
178
+ .method-name { font-weight: bold; }
179
+ .method-args { font-style: italic; }
180
+ .method-description { padding: 0 0.5em 0 0.5em; }
181
+
182
+ /* --- Source code sections -------------------- */
183
+
184
+ a.source-toggle { font-size: 90%; }
185
+ div.method-source-code {
186
+ background: #262626;
187
+ color: #ffdead;
188
+ margin: 1em;
189
+ padding: 0.5em;
190
+ border: 1px dashed #999;
191
+ overflow: hidden;
192
+ }
193
+
194
+ div.method-source-code pre { color: #ffdead; overflow: hidden; }
195
+
196
+ /* --- Ruby keyword styles --------------------- */
197
+
198
+ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; }
199
+
200
+ .ruby-constant { color: #7fffd4; background: transparent; }
201
+ .ruby-keyword { color: #00ffff; background: transparent; }
202
+ .ruby-ivar { color: #eedd82; background: transparent; }
203
+ .ruby-operator { color: #00ffee; background: transparent; }
204
+ .ruby-identifier { color: #ffdead; background: transparent; }
205
+ .ruby-node { color: #ffa07a; background: transparent; }
206
+ .ruby-comment { color: #b22222; font-weight: bold; background: transparent; }
207
+ .ruby-regexp { color: #ffa07a; background: transparent; }
208
+ .ruby-value { color: #7fffd4; background: transparent; }
@@ -0,0 +1,349 @@
1
+ require File.dirname(__FILE__) + '/spec_helper'
2
+
3
+ describe "FFMpeg Video Advanced Options" do
4
+ before(:each) do
5
+ @from_file, @to_file = "~/Desktop/test.avi", "~/Desktop/test2.avi"
6
+ FFMpegCommand.clear
7
+ end
8
+
9
+ it "should set the pixel format" do
10
+ convert @from_file, :to => @to_file do
11
+ pixel_format 'list'
12
+ end
13
+
14
+ FFMpegCommand.command("ffmpeg").should match(/-pix_fmt list/)
15
+ end
16
+
17
+ it "should set the SwScaler flags" do
18
+ convert @from_file, :to => @to_file do
19
+ swscaler_flags 'flag'
20
+ end
21
+
22
+ FFMpegCommand.command("ffmpeg").should match(/-sws_flags flag/)
23
+ end
24
+
25
+ it "should set the group of pictures size" do
26
+ convert @from_file, :to => @to_file do
27
+ group_of_pictures_size 200
28
+ end
29
+
30
+ FFMpegCommand.command("ffmpeg").should match(/-g 200/)
31
+ end
32
+
33
+ it "should set to use only intra frames" do
34
+ convert @from_file, :to => @to_file do
35
+ use_only_intra_frames
36
+ end
37
+
38
+ FFMpegCommand.command("ffmpeg").should match(/-intra/)
39
+ end
40
+
41
+ it "should set the discard threshold" do
42
+ convert @from_file, :to => @to_file do
43
+ video_discard_threshold 20
44
+ end
45
+
46
+ FFMpegCommand.command("ffmpeg").should match(/-vdt 20/)
47
+ end
48
+
49
+ it "should set to use a fixed video quantizer scale" do
50
+ convert @from_file, :to => @to_file do
51
+ video_quantizer_scale 10
52
+ end
53
+
54
+ FFMpegCommand.command("ffmpeg").should match(/-qscale 10/)
55
+ end
56
+
57
+ it "should set the minimum video quantizer scale" do
58
+ convert @from_file, :to => @to_file do
59
+ video_minimum_quantizer_scale 10
60
+ end
61
+
62
+ FFMpegCommand.command("ffmpeg").should match(/-qmin 10/)
63
+ end
64
+
65
+ it "should set the maximum video quantizer scale" do
66
+ convert @from_file, :to => @to_file do
67
+ video_maximum_quantizer_scale 10
68
+ end
69
+
70
+ FFMpegCommand.command("ffmpeg").should match(/-qmax 10/)
71
+ end
72
+
73
+ it "should set the maximum video quantizer difference" do
74
+ convert @from_file, :to => @to_file do
75
+ video_maximum_quantizer_difference 10
76
+ end
77
+
78
+ FFMpegCommand.command("ffmpeg").should match(/-qdiff 10/)
79
+ end
80
+
81
+ it "should set the video quantizer scale blur" do
82
+ convert @from_file, :to => @to_file do
83
+ video_quantizer_scale_blur 0.6
84
+ end
85
+
86
+ FFMpegCommand.command("ffmpeg").should match(/-qblur 0.6/)
87
+ end
88
+
89
+ it "should set the video quantizer scale compression" do
90
+ convert @from_file, :to => @to_file do
91
+ video_quantizer_scale_compression 0.7
92
+ end
93
+
94
+ FFMpegCommand.command("ffmpeg").should match(/-qcomp 0.7/)
95
+ end
96
+
97
+ it "should set the minimum video lagrange factor" do
98
+ convert @from_file, :to => @to_file do
99
+ video_minimum_lagrange_factor 10
100
+ end
101
+
102
+ FFMpegCommand.command("ffmpeg").should match(/-lmin 10/)
103
+ end
104
+
105
+ it "should set the maximum video lagrange factor" do
106
+ convert @from_file, :to => @to_file do
107
+ video_maximum_lagrange_factor 10
108
+ end
109
+
110
+ FFMpegCommand.command("ffmpeg").should match(/-lmax 10/)
111
+ end
112
+
113
+ it "should set the minimum video macroblock quantizer scale" do
114
+ convert @from_file, :to => @to_file do
115
+ video_minimum_macroblock_scale 10
116
+ end
117
+
118
+ FFMpegCommand.command("ffmpeg").should match(/-mblmin 10/)
119
+ end
120
+
121
+ it "should set the maximum video macroblock quantizer scale" do
122
+ convert @from_file, :to => @to_file do
123
+ video_maximum_macroblock_scale 10
124
+ end
125
+
126
+ FFMpegCommand.command("ffmpeg").should match(/-mblmax 10/)
127
+ end
128
+
129
+ it "should set the initial complexity for single pass encoding" do
130
+ convert @from_file, :to => @to_file do
131
+ initial_complexity 5
132
+ end
133
+
134
+ FFMpegCommand.command("ffmpeg").should match(/-rc_init_cplx 5/)
135
+ end
136
+
137
+ it "should set the qp factor between P-frames and B-frames" do
138
+ convert @from_file, :to => @to_file do
139
+ b_frame_factor 10
140
+ end
141
+
142
+ FFMpegCommand.command("ffmpeg").should match(/-b_qfactor 10/)
143
+ end
144
+
145
+ it "should set the qp factor between P-frames and I-frames" do
146
+ convert @from_file, :to => @to_file do
147
+ i_frame_factor 10
148
+ end
149
+
150
+ FFMpegCommand.command("ffmpeg").should match(/-i_qfactor 10/)
151
+ end
152
+
153
+ it "should set the qp offset between P-frames and B-frames" do
154
+ convert @from_file, :to => @to_file do
155
+ b_frame_offset 10
156
+ end
157
+
158
+ FFMpegCommand.command("ffmpeg").should match(/-b_qoffset 10/)
159
+ end
160
+
161
+ it "should set the qp offset between P-frames and I-frames" do
162
+ convert @from_file, :to => @to_file do
163
+ i_frame_offset 10
164
+ end
165
+
166
+ FFMpegCommand.command("ffmpeg").should match(/-i_qoffset 10/)
167
+ end
168
+
169
+
170
+ it "should set the rate control equation" do
171
+ convert @from_file, :to => @to_file do
172
+ rate_control_equation "tex^qComp"
173
+ end
174
+
175
+ FFMpegCommand.command("ffmpeg").should match(/-rc_eq string/)
176
+ end
177
+
178
+ it "should set the rate control override" do
179
+ convert @from_file, :to => @to_file do
180
+ rate_control_override 10
181
+ end
182
+
183
+ FFMpegCommand.command("ffmpeg").should match(/-rc_override 10/)
184
+ end
185
+
186
+ it "should set the motion estimation method" do
187
+ convert @from_file, :to => @to_file do
188
+ motion_estimation_method "hex"
189
+ end
190
+
191
+ FFMpegCommand.command("ffmpeg").should match(/-me_method hex/)
192
+ end
193
+
194
+ it "should set the DCT algorithm" do
195
+ convert @from_file, :to => @to_file do
196
+ dct_algorithm 5
197
+ end
198
+
199
+ FFMpegCommand.command("ffmpeg").should match(/-dct_algo 5/)
200
+ end
201
+
202
+ it "should set the IDCT algorithm" do
203
+ convert @from_file, :to => @to_file do
204
+ idct_algorithm 8
205
+ end
206
+
207
+ FFMpegCommand.command("ffmpeg").should match(/-idct_algo 8/)
208
+ end
209
+
210
+ it "should set error resilience" do
211
+ convert @from_file, :to => @to_file do
212
+ error_resilience 2
213
+ end
214
+
215
+ FFMpegCommand.command("ffmpeg").should match(/-er 2/)
216
+ end
217
+
218
+ it "should set error concealment" do
219
+ convert @from_file, :to => @to_file do
220
+ error_concealment 1
221
+ end
222
+
223
+ FFMpegCommand.command("ffmpeg").should match(/-ec 1/)
224
+ end
225
+
226
+ it "should set to use B-frames" do
227
+ convert @from_file, :to => @to_file do
228
+ b_frames 15
229
+ end
230
+
231
+ FFMpegCommand.command("ffmpeg").should match(/-bf 15/)
232
+ end
233
+
234
+ it "should set macroblock decision mode" do
235
+ convert @from_file, :to => @to_file do
236
+ macroblock_decision_mode 1
237
+ end
238
+
239
+ FFMpegCommand.command("ffmpeg").should match(/-mbd 1/)
240
+ end
241
+
242
+ it "should use four motion vector by macroblock" do
243
+ convert @from_file, :to => @to_file do
244
+ use_four_motion_vector
245
+ end
246
+
247
+ FFMpegCommand.command("ffmpeg").should match(/-4mv/)
248
+ end
249
+
250
+ it "should set to use data partitioning" do
251
+ convert @from_file, :to => @to_file do
252
+ use_data_partitioning
253
+ end
254
+
255
+ FFMpegCommand.command("ffmpeg").should match(/-part/)
256
+ end
257
+
258
+ # `-bug param'
259
+ # Work around encoder bugs that are not auto-detected.
260
+
261
+ it "should set how strictly to follow standards" do
262
+ convert @from_file, :to => @to_file do
263
+ strictness 3
264
+ end
265
+
266
+ FFMpegCommand.command("ffmpeg").should match(/-strict 3/)
267
+ end
268
+
269
+ it "should enable advanced intra coding" do
270
+ convert @from_file, :to => @to_file do
271
+ enable_advanced_intra_coding
272
+ end
273
+
274
+ FFMpegCommand.command("ffmpeg").should match(/-aic/)
275
+ end
276
+
277
+ it "should enable unlimited motion vector" do
278
+ convert @from_file, :to => @to_file do
279
+ enable_unlimited_motion_vector
280
+ end
281
+
282
+ FFMpegCommand.command("ffmpeg").should match(/-umv/)
283
+ end
284
+
285
+ it "should deinterlace pictures" do
286
+ convert @from_file, :to => @to_file do
287
+ deinterlace
288
+ end
289
+
290
+ FFMpegCommand.command("ffmpeg").should match(/-deinterlace/)
291
+ end
292
+
293
+ it "should force interlacing support in encoder" do
294
+ convert @from_file, :to => @to_file do
295
+ interlacing_support
296
+ end
297
+
298
+ FFMpegCommand.command("ffmpeg").should match(/-ilme/)
299
+ end
300
+
301
+ it "should calculate PSNR of compressed frames" do
302
+ convert @from_file, :to => @to_file do
303
+ calculate_psnr
304
+ end
305
+
306
+ FFMpegCommand.command("ffmpeg").should match(/-psnr/)
307
+ end
308
+
309
+ it "should dump video coding statistic to log file" do
310
+ convert @from_file, :to => @to_file do
311
+ dump_video_statistics
312
+ end
313
+
314
+ FFMpegCommand.command("ffmpeg").should match(/-vstats/)
315
+ end
316
+
317
+ it "should dump video statistics to named file" do
318
+ convert @from_file, :to => @to_file do
319
+ dump_video_statistics "video_stats.log"
320
+ end
321
+
322
+ FFMpegCommand.command("ffmpeg").should match(/-vstats_file video_stats.log/)
323
+ end
324
+
325
+ # `-top n'
326
+ # top=1/bottom=0/auto=-1 field first
327
+
328
+ # `-dc precision'
329
+ # Intra_dc_precision.
330
+
331
+ # `-vtag fourcc/tag'
332
+ # Force video tag/fourcc.
333
+
334
+ it "should show QP histogram" do
335
+ convert @from_file, :to => @to_file do
336
+ show_qp_histogram
337
+ end
338
+
339
+ FFMpegCommand.command("ffmpeg").should match(/-qphist/)
340
+ end
341
+
342
+ it "should set the video bitstream filter" do
343
+ convert @from_file, :to => @to_file do
344
+ video_bitstream_filter "dump_extra"
345
+ end
346
+
347
+ FFMpegCommand.command("ffmpeg").should match(/-vbsf dump_extra/)
348
+ end
349
+ end