2009-11-27 Daniel Bates <dbates@webkit.org>
[webkit:qtwebkit.git] / LayoutTests / http / tests / media / video-throttled-load.cgi
1 #!/usr/bin/perl -w
2
3 use strict;
4
5 use CGI;
6 use File::stat;
7
8 use constant CHUNK_SIZE_BYTES => 1024;
9
10 my $query = new CGI;
11
12 my $name = $query->param('name');
13 my $filesize = stat($name)->size;
14
15 # Get throttling rate, assuming parameter is in kilobytes per second.
16 my $kbPerSec = $query->param('throttle');
17 my $chunkPerSec = $kbPerSec * 1024 / CHUNK_SIZE_BYTES;
18
19 # Get MIME type if provided.  Default to video/mp4.
20 my $type = $query->param('type') || "video/mp4";
21
22 # Print HTTP Header, disabling cache.
23 print "Content-type: " . $type . "\n"; 
24 print "Content-Length: " . $filesize . "\n";
25 print "Cache-Control: no-cache\n";
26 print "\n";
27
28 open FILE, $name or die;
29 binmode FILE;
30 my ($data, $n);
31 my $total = 0;
32 while (($n = read FILE, $data, 1024) != 0) {
33     print $data;
34
35     $total += $n;
36     if ($total >= $filesize) {
37         last;
38     }
39
40     # Throttle if there is some.
41     if ($chunkPerSec > 0) {
42         select(undef, undef, undef, 1.0 / $chunkPerSec);
43     }
44 }
45 close(FILE);