Ejemplo n.º 1
0
def algorithm1(dash):
    max_buffer = dash.max_buffer
    r = max_buffer * 0.3
    cu = max_buffer * (0.9 - 0.3)
    T = dash.get_throughput()
    quality = dash.quality
    buffer_len = dash.buffer_len
    new_quality = quality
    max_quality = len(dash.mpd["bitrates"])
    next_chunks_size = dash.get_chunks_size()
    duration = dash.segment_len

    ref = 1
    for i in range(1, max_quality):
        if next_chunks_size[i] / duration > T:
            ref = i - 1
            break
    
    if buffer_len <= r :
        for i in range(1, max_quality):
            if next_chunks_size[i] > (duration - buffer_len) * T:
                tmp = i - 1
                break
        new_quality = max(tmp,1)
    elif buffer_len >= (r + cu) :
        new_quality = max_quality
    else:
        new_quality = ref

    dash.select(new_quality)
Ejemplo n.º 2
0
def PBAC2(dash):
    max_buffer = dash.max_buffer
    r = max_buffer * 0.3
    cu = max_buffer * (0.9 - 0.3)
    T = dash.get_throughput()
    quality = dash.quality
    buffer_len = dash.buffer_len
    new_quality = quality
    max_quality = len(dash.mpd["bitrates"])
    next_chunks_size = dash.get_chunks_size()
    duration = dash.segment_len

    ref = 1
    for i in range(1, max_quality):
        if next_chunks_size[i] / duration > T:
            ref = i - 1
            break
    
    if buffer_len <= r :
        ref = max(ref-1,1)
        if ref < quality:
            for i in range(1, max_quality):
                if next_chunks_size[i] > (duration - buffer_len) * T:
                    tmp = i - 1
                    break
            new_quality = max(tmp,1)
        else:
            new_quality = ref
    elif buffer_len >= (r + cu) :
        new_quality = max_quality
        #new_quality = max(ref,quality)
    else:
        if ref < quality :
            new_quality = quality
        else:
            buffergap = duration * (T/next_chunks_size[ref]-1)
            bufferemp = max_buffer - buffer_len
            if buffergap > 0.15 * bufferemp:
                new_quality = ref
            else:
                new_quality = ref - 1

    dash.select(new_quality)