comparison src/http/modules/ngx_http_mp4_module.c @ 644:ad25218fd14b NGINX_1_0_12

nginx 1.0.12 *) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the "ssl_protocols" directive. *) Feature: the "if" SSI command supports captures in regular expressions. *) Bugfix: the "if" SSI command did not work inside the "block" command. *) Bugfix: in AIO error handling on FreeBSD. *) Bugfix: in the OpenSSL library initialization. *) Bugfix: the "worker_cpu_affinity" directive might not work. *) Bugfix: the "limit_conn_log_level" and "limit_req_log_level" directives might not work. *) Bugfix: the "read_ahead" directive might not work combined with "try_files" and "open_file_cache". *) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter did not return answer from cache if there were no live upstreams. *) Bugfix: a segmentation fault might occur in a worker process if small time was used in the "inactive" parameter of the "proxy_cache_path" directive. *) Bugfix: responses from cache might hang. *) Bugfix: in error handling while connecting to a backend. Thanks to Piotr Sikora. *) Bugfix: in the "epoll" event method. Thanks to Yichun Zhang. *) Bugfix: the $sent_http_cache_control variable might contain a wrong value if the "expires" directive was used. Thanks to Yichun Zhang. *) Bugfix: the "limit_rate" directive did not allow to use full throughput, even if limit value was very high. *) Bugfix: the "sendfile_max_chunk" directive did not work, if the "limit_rate" directive was used. *) Bugfix: nginx could not be built on Solaris; the bug had appeared in 1.0.11. *) Bugfix: in the ngx_http_scgi_module. *) Bugfix: in the ngx_http_mp4_module.
author Igor Sysoev <http://sysoev.ru>
date Mon, 06 Feb 2012 00:00:00 +0400
parents 1b80544421e8
children f0a8697979af
comparison
equal deleted inserted replaced
643:d81e1c257a02 644:ad25218fd14b
1 1
2 /* 2 /*
3 * Copyright (C) Igor Sysoev 3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
4 */ 5 */
5 6
6 #include <ngx_config.h> 7 #include <ngx_config.h>
7 #include <ngx_core.h> 8 #include <ngx_core.h>
8 #include <ngx_http.h> 9 #include <ngx_http.h>
163 ((u_char *) (p))[5] = n2; \ 164 ((u_char *) (p))[5] = n2; \
164 ((u_char *) (p))[6] = n3; \ 165 ((u_char *) (p))[6] = n3; \
165 ((u_char *) (p))[7] = n4 166 ((u_char *) (p))[7] = n4
166 167
167 #define ngx_mp4_get_32value(p) \ 168 #define ngx_mp4_get_32value(p) \
168 ( (((u_char *) (p))[0] << 24) \ 169 ( ((uint32_t) ((u_char *) (p))[0] << 24) \
169 + (((u_char *) (p))[1] << 16) \ 170 + ( ((u_char *) (p))[1] << 16) \
170 + (((u_char *) (p))[2] << 8) \ 171 + ( ((u_char *) (p))[2] << 8) \
171 + (((u_char *) (p))[3]) ) 172 + ( ((u_char *) (p))[3]) )
172 173
173 #define ngx_mp4_set_32value(p, n) \ 174 #define ngx_mp4_set_32value(p, n) \
174 ((u_char *) (p))[0] = (u_char) ((n) >> 24); \ 175 ((u_char *) (p))[0] = (u_char) ((n) >> 24); \
175 ((u_char *) (p))[1] = (u_char) ((n) >> 16); \ 176 ((u_char *) (p))[1] = (u_char) ((n) >> 16); \
176 ((u_char *) (p))[2] = (u_char) ((n) >> 8); \ 177 ((u_char *) (p))[2] = (u_char) ((n) >> 8); \
2380 trak->start_chunk, trak->chunk_samples); 2381 trak->start_chunk, trak->chunk_samples);
2381 2382
2382 data->pos = (u_char *) entry; 2383 data->pos = (u_char *) entry;
2383 atom_size = sizeof(ngx_mp4_stsc_atom_t) + (data->last - data->pos); 2384 atom_size = sizeof(ngx_mp4_stsc_atom_t) + (data->last - data->pos);
2384 2385
2386 ngx_mp4_set_32value(entry->chunk, 1);
2387
2385 if (trak->chunk_samples) { 2388 if (trak->chunk_samples) {
2386 2389
2387 first = &trak->stsc_chunk_entry; 2390 first = &trak->stsc_chunk_entry;
2388 ngx_mp4_set_32value(first->chunk, 1); 2391 ngx_mp4_set_32value(first->chunk, 1);
2389 ngx_mp4_set_32value(first->samples, samples - trak->chunk_samples); 2392 ngx_mp4_set_32value(first->samples, samples - trak->chunk_samples);