]> git.kaiwu.me - nginx.git/commitdiff
Mp4: allow end values bigger than track duration.
authorRoman Arutyunyan <arut@nginx.com>
Tue, 1 Apr 2014 16:53:18 +0000 (20:53 +0400)
committerRoman Arutyunyan <arut@nginx.com>
Tue, 1 Apr 2014 16:53:18 +0000 (20:53 +0400)
If start time is within the track but end time is out of it, error
"end time is out mp4 stts samples" is generated.  However it's
better to ignore the error and output the track until its end.

src/http/modules/ngx_http_mp4_module.c

index 9266e8c40a692d1a93f74d285dfbc6d3e99bef86..8f439ba923953654ed9a42e563570fdfda22ebc9 100644 (file)
@@ -2154,11 +2154,21 @@ ngx_http_mp4_crop_stts_data(ngx_http_mp4_file_t *mp4,
         entry++;
     }
 
-    ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
-                  "%s time is out mp4 stts samples in \"%s\"",
-                  start ? "start" : "end", mp4->file.name.data);
+    if (start) {
+        ngx_log_error(NGX_LOG_ERR, mp4->file.log, 0,
+                      "start time is out mp4 stts samples in \"%s\"",
+                      mp4->file.name.data);
 
-    return NGX_ERROR;
+        return NGX_ERROR;
+
+    } else {
+        trak->end_sample = trak->start_sample + start_sample;
+
+        ngx_log_debug1(NGX_LOG_DEBUG_HTTP, mp4->file.log, 0,
+                       "end_sample:%ui", trak->end_sample);
+
+        return NGX_OK;
+    }
 
 found: