[nginx] svn commit: r4688 - trunk/src/http/modules

mdounin at mdounin.ru mdounin at mdounin.ru
Mon Jun 18 14:01:18 UTC 2012


Author: mdounin
Date: 2012-06-18 14:01:18 +0000 (Mon, 18 Jun 2012)
New Revision: 4688
URL: http://trac.nginx.org/nginx/changeset/4688/nginx

Log:
Mp4: fixed non-keyframe seeks in some cases (ticket #175).

Number of entries in stsc atom was wrong if we've added an entry to
split a chunk.

Additionally, there is no need to add an entry if we are going to split
last chunk in an entry, it's enough to update the entry we already have.
Previously new entry was added and old one was left as is, resulting in
incorrect entry with zero chunks which might confuse some software.


Modified:
   trunk/src/http/modules/ngx_http_mp4_module.c

Modified: trunk/src/http/modules/ngx_http_mp4_module.c
===================================================================
--- trunk/src/http/modules/ngx_http_mp4_module.c	2012-06-18 13:51:20 UTC (rev 4687)
+++ trunk/src/http/modules/ngx_http_mp4_module.c	2012-06-18 14:01:18 UTC (rev 4688)
@@ -2488,8 +2488,14 @@
 
     ngx_mp4_set_32value(entry->chunk, 1);
 
-    if (trak->chunk_samples) {
+    if (trak->chunk_samples && next_chunk - trak->start_chunk == 2) {
 
+        /* last chunk in the entry */
+
+        ngx_mp4_set_32value(entry->samples, samples - trak->chunk_samples);
+
+    } else if (trak->chunk_samples) {
+
         first = &trak->stsc_chunk_entry;
         ngx_mp4_set_32value(first->chunk, 1);
         ngx_mp4_set_32value(first->samples, samples - trak->chunk_samples);
@@ -2504,6 +2510,7 @@
 
         ngx_mp4_set_32value(entry->chunk, 2);
 
+        entries++;
         atom_size += sizeof(ngx_mp4_stsc_entry_t);
     }
 



More information about the nginx-devel mailing list