Ignore:
Timestamp:
08/25/10 00:20:41 (21 months ago)
Author:
shiretu
Message:

-- fixed rolling file appender

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/applications/applestreamingclient/src/playlist.cpp

    r103 r104  
    128128                                //that means the item is finished. Save it 
    129129                                _items[itemIndex] = item; 
    130                                 _itemMediaSequences[itemIndex] = _lastMediaSequence; 
     130                                _itemMediaSequences[_lastMediaSequence] = itemIndex; 
    131131                                _itemKeyUris[itemIndex] = _pLastKeyUri; 
    132132                                _itemUris[itemIndex] = pLine; 
     
    189189} 
    190190 
    191 string Playlist::GetItemUri(uint32_t index) { 
     191string Playlist::GetItemUri(uint32_t &sequence) { 
     192        uint32_t index = GetIndex(sequence); 
    192193        if (index >= _itemUris.size()) 
    193194                return ""; 
     
    203204} 
    204205 
    205 string Playlist::GetItemKeyUri(uint32_t index) { 
     206string Playlist::GetItemKeyUri(uint32_t &sequence) { 
     207        uint32_t index = GetIndex(sequence); 
    206208        if (index >= _itemKeyUris.size()) 
    207209                return ""; 
     
    211213} 
    212214 
    213 uint32_t Playlist::GetItemMediaSequence(uint32_t index) { 
    214         if (index >= _itemMediaSequences.size()) 
    215                 return 0; 
    216         return _itemMediaSequences[index]; 
    217 } 
    218  
    219 uint32_t Playlist::GetItemBandwidth(uint32_t index) { 
     215uint32_t Playlist::GetItemBandwidth(uint32_t &sequence) { 
     216        uint32_t index = GetIndex(sequence); 
    220217        if (index >= _itemBandwidths.size()) 
    221218                return 0; 
     
    223220} 
    224221 
    225 Variant Playlist::GetItemVariant(uint32_t index) { 
    226         if (index >= _items.size()) 
    227                 return Variant(); 
     222Variant Playlist::GetItemVariant(uint32_t &sequence) { 
     223        uint32_t index = GetIndex(sequence); 
    228224        Variant result; 
    229225        result["encryptionKeyUri"] = GetItemKeyUri(index); 
     
    233229} 
    234230 
    235 void Playlist::ApproximateStartEndTimes(uint32_t index, double start, double end) { 
    236         _meanDuration = _meanDuration * (double) _meanDurationCount + end - start; 
    237         _meanDurationCount++; 
    238         _meanDuration /= (double) _meanDurationCount; 
    239 } 
    240  
    241 void Playlist::GetSeekRange(double &min, double &max) { 
    242         min = 0; 
    243         max = (double) _items.size() * _meanDuration; 
    244 } 
    245  
    246 uint32_t Playlist::GetItemIndex(double seekPoint) { 
    247         if (_meanDuration == 0) 
    248                 return 0; 
    249         uint32_t index = (uint32_t) (seekPoint / _meanDuration); 
    250         if (_items.size() <= index) 
    251                 return 0; 
    252         return index; 
    253 } 
    254  
    255 uint32_t Playlist::GetLastMediaSequence() { 
    256         if (_itemMediaSequences.size() == 0) 
    257                 return 0; 
    258         return _itemMediaSequences[_itemMediaSequences.size() - 1]; 
    259 } 
     231uint32_t Playlist::GetIndex(uint32_t &sequence) { 
     232        FINEST("---------------------"); 
     233        FINEST("sequence requested: %d", sequence); 
     234        //1. We have it, we return it 
     235        if (MAP_HAS1(_itemMediaSequences, sequence)) { 
     236                FINEST("WE have it"); 
     237                FINEST("---------------------"); 
     238                return _itemMediaSequences[sequence]; 
     239        } 
     240 
     241        //2. We don't have it, and is a 0 value, that means it was never initialized 
     242        if (sequence == 0) { 
     243                FINEST("sequence is 0"); 
     244                FINEST("_itemMediaSequences.size(): %d", _itemMediaSequences.size()); 
     245                if (_itemMediaSequences.size() != 0) { 
     246                        //3. We have stuff. Init and return 
     247                        FINEST("Return the first entry"); 
     248                        sequence = MAP_KEY(_itemMediaSequences.begin()); 
     249                        FINEST("---------------------"); 
     250                        return MAP_VAL(_itemMediaSequences.begin()); 
     251                } else { 
     252                        //4. We don't have stuff. Don't do nothing and return 
     253                        FINEST("empty sequences"); 
     254                        FINEST("---------------------"); 
     255                        return 0xffffffff; 
     256                } 
     257        } 
     258 
     259        //5. Ok, sequence is initialized but we don't have that value. 
     260        //So, we search the next one, init and return; 
     261        FINEST("DISC????"); 
     262        if (_itemMediaSequences.size() > 0) { 
     263                FINEST("So, we have some items"); 
     264                if (MAP_KEY(_itemMediaSequences.end()) >= sequence) { 
     265                        FINEST("Our sequence is somewhere there..."); 
     266 
     267                        FOR_MAP(_itemMediaSequences, uint32_t, uint32_t, i) { 
     268                                FINEST("sequence: %d; MAP_KEY(i): %d", sequence, MAP_KEY(i)); 
     269                                if (MAP_KEY(i) >= sequence) { 
     270                                        sequence = MAP_KEY(i); 
     271                                        FINEST("JACKPOT"); 
     272                                        FINEST("---------------------"); 
     273                                        return MAP_VAL(i); 
     274                                } 
     275                        } 
     276                } else { 
     277                        FINEST("sequence is bigger than the last item"); 
     278                } 
     279        } 
     280 
     281        //6. Nada. This is the bottom 
     282        FINEST("Nothing left to do...."); 
     283        FINEST("---------------------"); 
     284        return 0xffffffff; 
     285} 
Note: See TracChangeset for help on using the changeset viewer.