Skip to content

FESTIVE stateful bitrate update misunderstanding #8

Description

@chanh1964

Dear authors and to whom it may concern,

I have been using this project for my research and I'd like to thank the authors for such a great contribution.

However, I have checked the FESTIVE algorithm and found out that there was a part in your FESTIVE.cc file that might have been misunderstood.

m_smooth.push_back (5); // after how many steps switch up is possible

dash/model/festive.cc

Lines 122 to 147 in 3522e46

if (currentRepIndex < m_highestRepIndex && !decisionMade)
{
int count = 0;
for (unsigned _sd = m_playbackData.playbackIndex.size () - 1; _sd-- > 0; )
{
if (currentRepIndex == m_playbackData.playbackIndex.at (_sd))
{
count++;
if (count >= m_smooth.at (0))
{
break;
}
}
else
{
break;
}
}
if (count >= m_smooth.at (0)
&& (double) m_videoData.averageBitrate.at (currentRepIndex + 1) <= thrptEstimation)
{
refIndex = currentRepIndex + 1;
answer.decisionCase = 1;
decisionMade = true;
}
}

According to the white paper of FESTIVE, bitrate at level k will remain the same for at least k chunks, before switching up to level k+1. Also in their paper, they've given an example where bitrate at 1130Kbps would switch up after 5 chunks, which I think might have led to this misunderstanding.

Therefore, the comparisons at line #130 and #140 should be if (count >= currentRepIndex), instead of the fixed value of 5.

Hope it helps.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions