Changeset 960


Ignore:
Timestamp:
04/27/10 17:08:40 (3 years ago)
Author:
pablo
Message:
  • Reverses changes from 957, which didn't work well
  • Sends bytes loaded metadata along with buffering events (as opposed to sending them in separate JWPLAYER_MEDIA_METADATA events)
  • Fixes bug 791
Location:
trunk/fl5
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/fl5/src/com/longtailvideo/jwplayer/events/MediaEvent.as

    r806 r960  
    189189                        var defaults:MediaEvent = new MediaEvent(""); 
    190190 
    191                         if (this.type == MediaEvent.JWPLAYER_MEDIA_META) { 
    192                                 for (var s:String in metadata) { 
    193                                         retString += ' ' + s + '="' + metadata[s] + '"'; 
    194                                 } 
    195                         } else { 
    196                                 if (bufferPercent != defaults.bufferPercent) retString += ' bufferPercent="' + bufferPercent + '"'; 
    197                                 if (duration != defaults.duration) retString += ' duration="' + duration + '"'; 
    198                                 if (position != defaults.position) retString += ' position="' + position + '"'; 
    199                                 if (offset != defaults.offset) retString += ' offset="' + offset + '"'; 
    200                                 if (volume != defaults.volume) retString += ' volume="' + volume + '"'; 
    201                                 if (mute != defaults.mute) retString += ' mute="' + mute + '"'; 
    202                                 if (message != defaults.message) retString += ' message="' + message + '"'; 
     191                        for (var s:String in metadata) { 
     192                                retString += ' ' + s + '="' + metadata[s] + '"'; 
    203193                        } 
     194 
     195                        if (bufferPercent != defaults.bufferPercent) retString += ' bufferPercent="' + bufferPercent + '"'; 
     196                        if (duration != defaults.duration) retString += ' duration="' + duration + '"'; 
     197                        if (position != defaults.position) retString += ' position="' + position + '"'; 
     198                        if (offset != defaults.offset) retString += ' offset="' + offset + '"'; 
     199                        if (volume != defaults.volume) retString += ' volume="' + volume + '"'; 
     200                        if (mute != defaults.mute) retString += ' mute="' + mute + '"'; 
     201                        if (message != defaults.message) retString += ' message="' + message + '"'; 
    204202                         
    205203                        retString += ' id="' + id + '"' 
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/HTTPMediaProvider.as

    r957 r960  
    236236                /** Resume playing. **/ 
    237237                override public function play():void { 
     238                        _stream.resume(); 
    238239                        if (!_positionInterval) { 
    239240                                _positionInterval = setInterval(positionInterval, 100); 
    240241                        } 
    241                         if (!shouldBuffer) { 
    242                                 _stream.resume(); 
    243                                 super.play(); 
    244                         } else { 
    245                                 setState(PlayerState.BUFFERING); 
    246                         } 
    247                 } 
    248  
    249                 /** Calculate how much of the buffer time has been loaded **/ 
    250                 protected function get bufferFill():Number { 
    251                         return _stream.bufferTime > 0 ? Math.floor(_stream.bufferLength / _stream.bufferTime * 100) : 0; 
    252                 } 
    253                  
    254                 /** Figure out whether or not to buffer, based on the amount loaded **/ 
    255                 protected function get shouldBuffer():Boolean { 
    256                         return (bufferFill < 50); 
    257                 } 
    258                  
    259                 /** Returns true if the required buffer time has been loaded **/ 
    260                 protected function get bufferFull():Boolean { 
    261                         var streamTime:Number = Math.min(_stream.time, item.duration); 
    262                         var bufferTime:Number = _stream.bufferTime < (item.duration - streamTime) ? _stream.bufferTime : Math.floor(Math.abs(item.duration - streamTime)); 
    263                         return (bufferFill > 95 && state == PlayerState.BUFFERING && _bufferFull == false && bufferTime > 0); 
    264                 } 
     242                        super.play(); 
     243                } 
     244 
    265245 
    266246                /** Interval for the position progress **/ 
    267247                protected function positionInterval():void { 
    268                         var percentoffset:Number = 0; 
    269                         var bufferPercent:Number = 0; 
    270  
     248                        var pos:Number = Math.round(_stream.time * 10) / 10;  
     249                        var percentoffset:Number; 
     250                        if (_mp4) { 
     251                                pos += _timeoffset; 
     252                        } 
     253                         
     254                        var bufferPercent:Number; 
     255                        var bufferFill:Number; 
    271256                        if (item.duration > 0 && _stream && _stream.bytesTotal > 0) { 
    272257                                percentoffset =  Math.round(_timeoffset /  item.duration * 100); 
    273258                                bufferPercent = (_stream.bytesLoaded / _stream.bytesTotal) * (1 - _timeoffset / item.duration) * 100; 
    274                         } 
    275                          
    276                         _position = Math.round(_stream.time * 10) / 10; 
    277                         if (_mp4) { 
    278                                 _position += _timeoffset; 
    279                         } 
    280  
     259                                var bufferTime:Number = _stream.bufferTime < (item.duration - pos) ? _stream.bufferTime : Math.round(item.duration - pos); 
     260                                bufferFill = _stream.bufferTime == 0 ? 0 : Math.ceil(_stream.bufferLength / bufferTime * 100); 
     261                        } else { 
     262                                percentoffset = 0; 
     263                                bufferPercent = 0; 
     264                                bufferFill = _stream.bufferLength/_stream.bufferTime * 100; 
     265                        } 
     266         
    281267                        if (!_bandwidthChecked && _stream.bytesLoaded > 0 && _stream.bytesLoaded < _stream.bytesTotal) { 
    282268                                _bandwidthChecked = true; 
     
    285271                        } 
    286272                         
    287                         if (shouldBuffer && state == PlayerState.PLAYING) { 
     273                        if (bufferFill < 50 && state == PlayerState.PLAYING) { 
    288274                                _bufferFull = false; 
    289275                                _stream.pause(); 
    290276                                setState(PlayerState.BUFFERING); 
    291                         } else if (bufferFull) { 
     277                        } else if (bufferFill > 95 && state == PlayerState.BUFFERING && _bufferFull == false) { 
    292278                                _bufferFull = true; 
    293279                                sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_BUFFER_FULL); 
     
    298284                                        _bufferingComplete = true; 
    299285                                } 
    300                                 sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {loaded:_stream.bytesLoaded, total:_stream.bytesTotal, offset:_timeoffset}}); 
    301                                 sendBufferEvent(bufferPercent, _timeoffset); 
     286                                sendBufferEvent(bufferPercent, _timeoffset, {loaded:_stream.bytesLoaded, total:_stream.bytesTotal, offset:_timeoffset}); 
    302287                        } 
    303288                         
     
    305290                                return; 
    306291                        } 
     292                         
    307293                                 
    308                         if (_position < item.duration) { 
     294                        if (pos < item.duration) { 
     295                                _position = pos; 
    309296                                if (_position >= 0) { 
    310297                                        sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_TIME, {position: _position, duration: item.duration, offset: _timeoffset}); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/MediaProvider.as

    r843 r960  
    274274                 
    275275                /** Dispatches buffer change notifications **/ 
    276                 protected function sendBufferEvent(bufferPercent:Number, offset:Number=0):void { 
     276                protected function sendBufferEvent(bufferPercent:Number, offset:Number=0, metadata:Object=null):void { 
    277277                        if ((_bufferPercent != bufferPercent || bufferPercent == 0) && 0 <= bufferPercent < 100) { 
    278278                                _bufferPercent = bufferPercent; 
     
    281281                                        'offset':                       offset,  
    282282                                        'duration':             _item.duration, 
    283                                         'position':             Math.max(0, _position) 
     283                                        'position':             Math.max(0, _position), 
     284                                        'metadata':                     metadata 
    284285                                }; 
    285286                                sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_BUFFER, obj); 
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/SoundMediaProvider.as

    r956 r960  
    168168                                        _bufferingComplete = true; 
    169169                                } 
    170                                 sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {loaded:_sound.bytesLoaded, total:_sound.bytesTotal}}); 
    171                                 sendBufferEvent(bufferPercent); 
     170                                sendBufferEvent(bufferPercent, 0, {loaded:_sound.bytesLoaded, total:_sound.bytesTotal}); 
    172171                        } 
    173172                         
  • trunk/fl5/src/com/longtailvideo/jwplayer/media/VideoMediaProvider.as

    r957 r960  
    137137                                _positionInterval = setInterval(positionHandler, 100); 
    138138                        } 
    139                         // Don't resume the stream if it should continue buffering 
    140                         if (!shouldBuffer) { 
    141                                 _stream.resume(); 
    142                                 super.play(); 
    143                         } else { 
    144                                 setState(PlayerState.BUFFERING); 
    145                         } 
    146                 } 
    147                  
    148                 /** Calculate how much of the buffer time has been loaded **/ 
    149                 protected function get bufferFill():Number { 
    150                         return _stream.bufferTime > 0 ? Math.floor(_stream.bufferLength / _stream.bufferTime * 100) : 0; 
    151                 } 
    152                  
    153                 /** Figure out whether or not to buffer, based on the amount loaded **/ 
    154                 protected function get shouldBuffer():Boolean { 
    155                         return (bufferFill < 50); 
    156                 } 
    157                  
    158                 /** Returns true if the required buffer time has been loaded **/ 
    159                 protected function get bufferFull():Boolean { 
    160                         var streamTime:Number = Math.min(_stream.time, item.duration); 
    161                         var bufferTime:Number = _stream.bufferTime < (item.duration - streamTime) ? _stream.bufferTime : Math.floor(Math.abs(item.duration - streamTime)); 
    162                         return (bufferFill > 95 && state == PlayerState.BUFFERING && _bufferFull == false && bufferTime > 0); 
    163                 } 
     139                        _stream.resume(); 
     140                        super.play(); 
     141                } 
     142 
    164143 
    165144                /** Interval for the position progress **/ 
     
    170149                        } 
    171150                         
    172                         if (shouldBuffer && state == PlayerState.PLAYING) { 
     151                        var _streamTime:Number = Math.min(_stream.time, item.duration); 
     152                        var bufferPercent:Number = _stream.bytesTotal > 0 ? _stream.bytesLoaded / _stream.bytesTotal * 100 : 0; 
     153                        var bufferTime:Number = _stream.bufferTime < (item.duration - _streamTime) ? _stream.bufferTime : Math.floor(Math.abs(item.duration - _streamTime)); 
     154                        var bufferFill:Number = bufferTime == 0 ? 100 : Math.floor(_stream.bufferLength / bufferTime * 100); 
     155 
     156                         
     157                        if (bufferFill < 50 && state == PlayerState.PLAYING) { 
    173158                                _bufferFull = false; 
    174159                                _stream.pause(); 
    175160                                setState(PlayerState.BUFFERING); 
    176                         } else if (bufferFull) { 
     161                        } else if (bufferFill > 95 && state == PlayerState.BUFFERING && _bufferFull == false && bufferTime > 0) { 
    177162                                _bufferFull = true; 
    178163                                sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_BUFFER_FULL); 
    179164                        } 
    180165 
    181                         var bufferPercent:Number = _stream.bytesTotal > 0 ? _stream.bytesLoaded / _stream.bytesTotal * 100 : 0; 
    182                          
    183166                        if (!_bufferingComplete) { 
    184167                                if (bufferPercent == 100 && _bufferingComplete == false) { 
    185168                                        _bufferingComplete = true; 
    186169                                } 
    187                                 sendMediaEvent(MediaEvent.JWPLAYER_MEDIA_META, {metadata: {loaded:_stream.bytesLoaded, total:_stream.bytesTotal}}); 
    188                                 sendBufferEvent(bufferPercent); 
     170                                sendBufferEvent(bufferPercent, 0, {loaded:_stream.bytesLoaded, total:_stream.bytesTotal}); 
    189171                        } 
    190172 
     
    193175                        } 
    194176 
    195                         _position = Math.round(_stream.time * 10) / 10; 
     177                        _position = Math.round(_streamTime * 10) / 10; 
    196178                         
    197179                        if (position < item.duration) { 
  • trunk/fl5/src/com/longtailvideo/jwplayer/player/PlayerVersion.as

    r957 r960  
    33         
    44        public class PlayerVersion { 
    5                 protected static var _version:String = "5.2.957"; 
     5                protected static var _version:String = "5.2.960"; 
    66                 
    77                public static function get version():String { 
Note: See TracChangeset for help on using the changeset viewer.