winlin

fix #268, the hls pcr is negative when startup. 1.0.14

@@ -383,6 +383,7 @@ Supported operating systems and hardware: @@ -383,6 +383,7 @@ Supported operating systems and hardware:
383 * 2013-10-17, Created.<br/> 383 * 2013-10-17, Created.<br/>
384 384
385 ## History 385 ## History
  386 +* v1.0, 2014-12-29, hotfix [#268](https://github.com/winlinvip/simple-rtmp-server/issues/268), the hls pcr is negative when startup. 1.0.14
386 * v1.0, 2014-12-22, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12 387 * v1.0, 2014-12-22, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), ignore NALU when sequence header to make HLS happy. 1.0.12
387 * v1.0, 2014-12-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11 388 * v1.0, 2014-12-20, hotfix [#264](https://github.com/winlinvip/simple-rtmp-server/issues/264), support disconnect publish connect when hls error. 1.0.11
388 * <strong>v1.0, 2014-12-05, [1.0 release(1.0.10)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0) released. 59391 lines.</strong> 389 * <strong>v1.0, 2014-12-05, [1.0 release(1.0.10)](https://github.com/winlinvip/simple-rtmp-server/releases/tag/1.0) released. 59391 lines.</strong>
@@ -368,11 +368,16 @@ private: @@ -368,11 +368,16 @@ private:
368 } 368 }
369 static char* write_pcr(char* p, int64_t pcr) 369 static char* write_pcr(char* p, int64_t pcr)
370 { 370 {
371 - *p++ = (char) (pcr >> 25);  
372 - *p++ = (char) (pcr >> 17);  
373 - *p++ = (char) (pcr >> 9);  
374 - *p++ = (char) (pcr >> 1);  
375 - *p++ = (char) (pcr << 7 | 0x7e); 371 + // the pcr=dts-delay
  372 + // and the pcr maybe negative
  373 + // @see https://github.com/winlinvip/simple-rtmp-server/issues/268
  374 + int64_t v = srs_max(0, pcr);
  375 +
  376 + *p++ = (char) (v >> 25);
  377 + *p++ = (char) (v >> 17);
  378 + *p++ = (char) (v >> 9);
  379 + *p++ = (char) (v >> 1);
  380 + *p++ = (char) (v << 7 | 0x7e);
376 *p++ = 0; 381 *p++ = 0;
377 382
378 return p; 383 return p;
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 // current release version 31 // current release version
32 #define VERSION_MAJOR 1 32 #define VERSION_MAJOR 1
33 #define VERSION_MINOR 0 33 #define VERSION_MINOR 0
34 -#define VERSION_REVISION 13 34 +#define VERSION_REVISION 14
35 // server info. 35 // server info.
36 #define RTMP_SIG_SRS_KEY "SRS" 36 #define RTMP_SIG_SRS_KEY "SRS"
37 #define RTMP_SIG_SRS_ROLE "origin/edge server" 37 #define RTMP_SIG_SRS_ROLE "origin/edge server"