changeset 5638:0c0dd1aacdf5

Mp4: allow end values bigger than track duration. 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.
author Roman Arutyunyan <arut@nginx.com>
date Tue, 01 Apr 2014 20:53:18 +0400
parents 5a65b9d8bc2b
children ce98b460606e
files src/http/modules/ngx_http_mp4_module.c
diffstat 1 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/http/modules/ngx_http_mp4_module.c
+++ b/src/http/modules/ngx_http_mp4_module.c
@@ -2154,11 +2154,21 @@ ngx_http_mp4_crop_stts_data(ngx_http_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);
-
-    return NGX_ERROR;
+    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;
+
+    } 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: