СПОСОБ УПРАВЛЕНИЯ ПЕРЕДАЧАМИ ПАКЕТОВ ДАННЫХ ДЛЯ ДАННЫХ С ПЕРЕМЕННЫМ БИТРЕЙТОМ
METHOD OF CONTROLLING TRANSMISSION OF DATA PACKETS FOR DATA WITH VARIABLE BITRATE

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
Изобретение, в целом, относится к передаче данных и, более конкретно, к способу управления передачами пакетов потоковых данных.
УРОВЕНЬ ТЕХНИКИ
Возрастающие объемы данных передаются от серверов клиентам через инфраструктуры связи, такие как сети на основе передачи пакетов по Интернет-протоколу (IP). Одним конкретным приложением, популярность которого возрастает, является потоковая передача мультимедийных данных. Однако должны быть выполнены усовершенствования в обеспечении надежных потоков данных прежде, чем такие услуги получат широкое распространение. Например, поскольку скорости передачи данных для линий связи между IP-сетью и клиентским устройством пользователя имеют тенденцию нерегулярно изменяться, любые нарушения в доставке данных пользователю могут приводить для конечного пользователя к серьезному ухудшению качества воспроизведения, то есть, к ухудшению качества медиа продукта, наблюдаемого пользователем. В частности, важно, чтобы был достаточный запас пакетов данных в клиентском устройстве, подлежащих выборке мультимедийным приложением, пока идет воспроизведение (то есть отображение мультимедийного файла посредством мультимедийного приложения или устройства воспроизведения).
Во многих случаях скорость передачи пакетов не может быть изменена, поскольку эта скорость зависит от полосы пропускания канала связи (или, по меньшей мере, изменение скорости передачи пакетов является неосуществимым). Однако скорость, с которой данные подаются на выходное устройство пользователя, часто должна быть изменена. Обычно, для потоковых приложений такие подстройки осуществляются с использованием "переключения потока". При переключении потока одно и то же мультимедийное содержимое, например конкретная видеопоследовательность, предварительно кодируется с различными битрейтами и сохраняется на сервере. Следовательно, являются доступными различные версии одного и того же потока. В течение передачи сервер выбирает конкретную версию, которая имеет наиболее подходящий битрейт данных, на основании текущей доступной полосы пропускания в сети и на основании состояния клиентского буфера. Используемая сервером переключательная логическая схема решает, переключать ли на другую версию потока и когда переключать на нее. В случае так называемого "переключения-вниз", поток переключается на версию с более низким кодированным битрейтом. В случае "переключения-вверх" переключение выполняется на версию с более высоким кодированным битрейтом. Во многих реализациях критерии для осуществления переключения используют заранее заданные пороговые величины, определенные по отношению к состоянию клиентского буфера. В одном примере пороговые величины основаны на уровне заполнения буфера, представляющем в байтах количество данных внутри клиентского буфера. В другом примере пороговые величины основаны на продолжительности воспроизведения (РТ) хранимых аудиовизуальных данных в клиентском буфере, которая представляет время в секундах, нужное для воспроизведения пользователем данных, уже находящихся внутри клиентского буфера. В данном документе описываются примеры, касающиеся продолжительности воспроизведения, хотя с тем же успехом может использоваться уровень заполнения буфера или другие надлежащие параметры.
DOWN
Некоторые традиционные способы для определения состояния клиентского буфера используют информацию в рамках сообщений (RR) приемника согласно транспортному протоколу (RTCP) управления передачей в реальном времени. Информация относительно следующего порядкового номера (NSN), или самого давнего буферизированного порядкового номера (OBSN) внутри клиентского буфера и последнего принятого порядкового номера (HRSN) внутри клиентского буфера содержится вместе с RR и используется, чтобы определять использованное пространство буфера, поскольку размер каждого пакета в пределах диапазона от HRSN до NSN/OBSN является известным. Если свободное пространство внутри клиентского буфера ниже предпочтительного уровня заполнения клиентского буфера, то выбирается другая версия потока. Например, если продолжительность (PT) воспроизведения буфера снижается ниже заранее установленной минимальной пороговой величины (PT), то возникает риск опустошения буфера, то есть клиентский буфер становится пустым, так как в нем нет данных для передачи потоком пользователю. Это приводит к остановке («замораживанию») воспроизведения, причем последнее отображенное на дисплее изображение является обычно остановленным, до тех пор, пока к клиентскому буферу не сможет быть добавлено достаточное количество дополнительных данных, чтобы повторно запустить поток на используемое пользователем выходное устройство, то есть требуется "повторная буферизация" клиентского буфера. Повторная буферизация может быть чрезвычайно раздражающей с точки зрения пользователя.
DOWN
Чтобы избежать возможной повторной буферизации из-за опустошения клиентского буфера, сервер выявляет, когда продолжительность (PT) воспроизведения в пределах клиентского буфера снижается ниже пороговой величины PT, затем подстраивает битрейт (то есть выбирает версию потока, имеющую другой битрейт) в попытке предотвратить полное опустошение клиентского буфера. Более конкретно, сервер выполняет переключение-вниз, то есть переключение на поток с более низким битрейтом. Переключение-вниз предпочтительнее, чем переключение-вверх, поскольку наиболее вероятная причина, по которой клиентский буфер опустошается, состоит в том, что скорость передачи по каналу связи между сервером и клиентским буфером является меньше ожидаемой, то есть эффективная полоса пропускания меньше требуемой для используемого в текущее время битрейта. В результате, данные не принимаются клиентским буфером с той же скоростью, с которой клиентский буфер подает данные на выходное устройство пользователя. Следовательно, клиентский буфер, который должен оставаться довольно хорошо заполненным данными, становится опустошенным. Путем переключения на более низкий битрейт, клиентский буфер подает данные на устройство отображения с более низкой скоростью, таким образом, оставляя больше времени для приема данных от сервера, и таким образом препятствуя тому, чтобы клиентский буфер становился полностью опустошенным. С точки зрения пользователя, качество потока мультимедиа снижается из-за переключения-вниз, например, размер воспроизводимого изображения потока видеоданных становится меньше, разрешающая способность изображения становится ниже, или наблюдаются более сильные искажения в изображении. Все же, это является предпочтительным по отношению к вышеупомянутой остановке воспроизведения, которая возникает при повторной буферизации.
UP
С другой стороны, если продолжительность (PT) воспроизведения буфера превышает заранее установленную максимальную пороговую величину (PT), то возникает риск переполнения буфера, то есть клиентский буфер становится полным настолько, что не остается места для дополнительных пакетов. Какие-либо пакеты, принятые клиентским буфером, но не сохраненные в нем, обычно повторно не посылаются сервером и, следовательно, данные этих пакетов просто не пересылаются на выходное устройство пользователя. Как только клиентский буфер снова способен сохранять пакеты, поток данных возобновляется с наличием новых пакетов. Таким образом, с точки зрения пользователя, имеется внезапная потеря содержимого, поскольку поток просто перескакивает вперед. В случае (передачи) кинофильма или видеофильма, может быть утерян диалог, таким образом, мешая пользователю отслеживать текст. В случае передачи музыки, песня просто перескакивает вперед. Понятно, это также может быть весьма раздражающим с точки зрения пользователя.
UP
Чтобы избежать прерывания потока из-за переполнения клиентского буфера, сервер выявляет, когда продолжительность (PT) воспроизведения внутри клиентского буфера превышает пороговую величину PT, и затем выполняет переключение-вверх, то есть переключение на поток с более высоким битрейтом. Переключение-вверх предпочтительнее, чем переключение-вниз, поскольку наиболее вероятная причина, по которой клиентский буфер становится полным, состоит в том, что скорость канала связи между сервером и клиентским буфером является больше ожидаемой, то есть эффективная полоса пропускания выше, чем необходима для используемого в текущее время битрейта. В результате, данные принимаются клиентским буфером со скоростью выше скорости, с которой клиентский буфер подает данные на выходное устройство пользователя. Следовательно, клиентский буфер переполняется. Путем переключения на более высокий битрейт, клиентский буфер подает данные на выходное устройство с более высокой скоростью, таким образом, предотвращая переполнение клиентского буфера. С точки зрения пользователя, качество потока аудиовизуальных данных повышается благодаря переключению-вверх, например размер воспроизводимого изображения потока видеоданных становится больше, или разрешающая способность изображения становится выше. Следовательно, переключение-вверх помогает препятствовать прерыванию потока, и улучшает качество аудиовизуальных данных, что вместе приносит выгоду пользователю.
Простая логика для выполнения переключений-вверх и переключений-вниз может быть представлена, как изложено ниже:
UP
Если PT>PT, то
выполнить переключение-вверх
DOWN
иначе, если PT<PT
выполнить переключение-вниз
конец если.
Соответствующая подборка этих пороговых величин является решающей для общего впечатления пользователя от аудиовизуальных данных. В случае переключения-вниз, которое выполняется слишком поздно, будет происходить событие повторной буферизации. В случае переключения-вверх, которое выполняется слишком поздно, пользователь принимает аудиовизуальные данные более низкого качества, чем необходимо в ином случае и, как отмечено, может возникать разрыв в потоке данных, как результат переполнения буфера. Также, если переключение-вниз выполняется раньше, чем необходимо, пользователь принимает аудиовизуальные данные более низкого качества, чем необходимо в ином случае. Если переключение-вверх выполняется раньше, чем необходимо, затем вскоре может потребоваться переключение-вниз, что приведет к раздражающей неустойчивости в качестве аудиовизуальных данных. Чтобы избежать эти проблемы, потенциально можно использовать множественные пороговые величины переключения-вниз и множественные пороговые величины переключения-вверх. Если продолжительность воспроизведения снижается в сторону опустошения буфера, ряд пороговых величин переключения-вниз пересекаются, каждое запускает переключение-вниз. Наоборот, если продолжительность воспроизведения увеличивается в сторону переполнения буфера, ряд пороговых величин переключения-вверх пересекается, каждое запускает переключение-вверх.
Однако, после того как произошло переключение, и поток с новым битрейтом был передан, потребуется некоторое время прежде, чем переключение будет иметь какое-либо воздействие на продолжительность воспроизведения клиентского буфера. Во-первых, имеется задержка передачи, пока первый пакет, содержащий кодированные с новой скоростью данные, не достигнет клиентского буфера. В течение этого промежутка времени продолжительность воспроизведения хранимых аудиовизуальных данных в клиентском буфере не находится под воздействием новой скорости. Следовательно, если продолжительность воспроизведения была увеличивающейся в сторону возможного переполнения буфера, она будет, вероятно, продолжать увеличиваться. Наоборот, если продолжительность воспроизведения была уменьшающейся в сторону возможного опустошения буфера, она, вероятно, продолжит уменьшаться. Также даже после поступления первого пакета с новым битрейтом, продолжительность воспроизведения может изменяться сначала только медленно. Например, могут все еще иметься некоторые посланные пакеты с данными с предыдущим битрейтом, которые еще не были приняты клиентским буфером. Следовательно, условия переключения зачастую все еще действительны, и за первым переключением затем последуют несколько переключений, которые являются зачастую ненужными. В случае первого переключения-вниз может быть выполнено несколько дальнейших переключений-вниз, приводя к битрейту потока, который будет намного ниже необходимого. Зачастую переключения-вниз не останавливаются, пока не будет выбран самый низкий битрейт для потока. Такое поведение приводит к излишне низкому качеству потока аудиовизуальных данных для пользователя. В случае переключения-вверх могут происходить несколько дальнейших переключений-вверх, приводя к битрейту для потока, который является слишком высоким, зачастую к максимально возможным скорости. Это приводит к тому, что битрейт потока становится слишком высоким по сравнению с текущей доступной полосой пропускания сети, запуская ряд переключений-вниз.
В результате пользователь наблюдает частые и раздражающие изменения в качестве потока. Кроме того, если был выбран битрейт, который является слишком высоким, последующие переключения-вниз зачастую не могут быть выполнены достаточно быстро, приводя к раздражающим событиям повторной буферизации и остановкам воспроизведения. Подобным образом, если был выбран битрейт, который является слишком низким, последующие переключения-вверх зачастую не могут быть выполнены достаточно быстро, приводя к раздражающему переполнению буфера, и связанному с потерей данных. Даже при единственной пороговой величине переключения-вверх и единственной пороговой величине переключения-вниз могут возникать проблемы такого рода, особенно если пороговые величины установлены слишком близкими друг к другу.
Еще больше проблем может возникать при передаче мультимедийного содержимого, которое имеет переменный битрейт. Традиционно каждая предварительно кодированная версия мультимедийного потока имеет единственный битрейт, и, следовательно, битрейт для потока изменяется, только если сервер переключается на другой поток, имеющий более быструю или более медленную скорость, как уже описано. Однако, в некоторых случаях, нужно обеспечивать потоки с изменяющимся битрейтом, чтобы конкретно приспосабливать, особенно при упаковке больших файлов аудиовизуальных данных для хранения и передачи. Другими словами, каждая версия потока может иметь порции с одним битрейтом, а другие порции с другим. Предпочтительно, битрейт для отдельных частей конкретной версии потока выбирается на основании содержимого этой части. Например, одна порция потока может быть довольно статичной, допускающей низкий битрейт, чтобы адекватно вводить содержимое. После этого может быть необходимым более высокий битрейт, чтобы адекватно вводить более динамичное содержимое. При установке битрейта для каждой порции мультимедийного потока на основании динамичного содержимого этой порции потока полный размер файла может быть уменьшен, что не помешает адекватно передавать содержимое.
При применении традиционных способов переключения потока на потоки с переменным битрейтом, могут возникать различные проблемы. В частности, изменяющиеся битрейты для потока могут объединять вышеупомянутые проблемы, имея результатом даже более частые и ненужные переключения, вызывая дополнительное раздражение пользователя и зачастую излишне расходуя полосу пропускания.
Соответственно, имеется потребность в усовершенствованном способе управления переключением потоков для данных с переменным битрейтом, чтобы поставлять пользователю более устойчивое и надежное содержимое, и именно на это в основном направлено изобретение.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Изобретение может быть осуществлено в виде способа управления передачами пакетов данных с переменным битрейтом от сервера клиенту, имеющему в составе клиентский буфер, причем сервер осуществляет переключение между различными версиями потока передаваемых данных с переменным битрейтом на основании состояния клиентского буфера. В соответствии со способом, для передачи выбирается начальная версия потока данных с переменным битрейтом, и отслеживается значение (PT), представляющее количество данных внутри клиентского буфера. Определяется битрейт (BR) для порции данных с переменным битрейтом, еще подлежащих передаче в рамках выбранной версии потока. Затем сервер управляет переключениями на другие версии потока, имеющие другие средние битрейты, на основании значения (PT), представляющего количество данных внутри клиентского буфера, в комбинации с битрейтом (BR) для порции данных с переменным битрейтом, еще подлежащих передаче.
NEXT
NEXT
AVE
В одном примере определяется битрейт (BR) для следующей последовательной порции подлежащих передаче данных. Если BR превышает средний битрейт (BR), то выполняется этап управления переключением, чтобы задержать любое переключение на версию потока, имеющую в целом более высокий битрейт, то есть задерживаются переключения-вверх.
NEXT
AVE
В другом примере, если BR превышает средний битрейт (BR), выполняется этап управления переключением, чтобы ускорить любое переключение на версию потока, имеющую в целом более низкий битрейт, то есть ускоряются переключения-вниз.
NEXT
AVE
В следующем примере, если BR ниже среднего битрейта (BR), выполняется этап управления переключением, чтобы ускорить какое-либо переключение на версию потока, имеющую в целом более высокий битрейт, то есть ускоряются переключения-вверх.
В предпочтительном варианте осуществления сервер управляет переключением на различные версии потока на основании текущего состояния клиентского буфера, применяя одну или несколько пороговых величин к данным, уже находящимся в клиентском буфере. Этап управления переключением выполняется путем динамической подстройки одной или нескольких пороговых величин на основании битрейта (BR) для порции подлежащих передаче данных с переменным битрейтом, и последующего определения, осуществлять ли переключение на другую версию потока, применяя одну или несколько подстраиваемых пороговых величины к значению (PT), представляющему количество данных внутри клиентского буфера.
В примере предпочтительного варианта осуществления одна или несколько пороговых величин включают в состав пороговую величину «переключение-вверх»
UP
DOWN
AVE
UP
DOWN
NEXT
AVE
UP
DOWN
NEXT
AVE
UP
NEXT
AVE
UP
(PT) и пороговую величину «переключение-вниз» (PT). Этап динамической подстройки одной или нескольких пороговых величин выполняется посредством определения среднего битрейта (BR) для данных с переменным битрейтом и затем выборочной подстройки пороговых величин переключения-вверх и переключения-вниз (PT и PT) на основании сравнения битрейта (BR) для следующей порции подлежащих передаче данных с переменным битрейтом со средним битрейтом (BR) для данных с переменным битрейтом. Этап выборочной подстройки пороговых величин переключения-вверх и переключения-вниз включает в состав этап увеличения пороговых величин переключения-вверх и переключения-вниз (PT и PT), если битрейт (BR) для следующей порции данных с переменным битрейтом превышает средний битрейт (BR). Этап выборочной подстройки пороговых величин переключения-вверх и переключения-вниз также включает в состав этап уменьшения пороговой величины переключения-вверх (PT), если битрейт (BR) для следующей порции данных с переменным битрейтом ниже среднего битрейта (BR) и если пороговая величина переключения-вверх (PT) превышает пороговую величину переключения-вниз
DOWN
UP
DOWN
(PT). Другими словами, PT не подстраивается вниз, если бы затем она потом снизилась ниже PT.
UP
DOWN
AVE
NEXT
NEXT
AVE
UP
DOWN
UP
NEXT
NEXT
AVE
UP
UP
DOWN
В предпочтительном варианте осуществления этап увеличения пороговых величин переключения-вверх и переключения-вниз (PT и PT) выполняется, если битрейт (BR) для следующей порции данных с переменным битрейтом превышает средний битрейт (BR), путем определения битрейта (BR) для следующей порции данных с переменным битрейтом, затем вычисления значения отношения (F) битрейта (BR) для следующей порции данных с переменным битрейтом к среднему битрейту (BR). Пороговые величины переключения-вверх и переключения-вниз (PT и PT) затем умножают на значение отношение (F), чтобы таким образом увеличить пороговые величины. Этап уменьшения пороговой величины переключения-вверх (PT) также выполняется путем определения битрейта (BR) для следующей порции данных с переменным битрейтом и затем вычисления значения отношения (F) битрейта (BR) для следующей порции данных с переменным битрейтом к среднему битрейту (BR). Пороговую величину переключения-вверх (PT) затем умножают на значение отношения (F), чтобы таким образом уменьшить пороговую величину. Затем выбирается наибольшее из уменьшенной пороговой величины переключения-вверх (PT*F) и пороговой величины переключения-вниз (PT) для использования в качестве новой пороговой величины переключения-вверх.
AVE
В различных вариантах осуществления значения, представляющие количество данных внутри клиентского буфера, представляют продолжительности (PT) воспроизведения данных, или уровень заполнения буфера. Средний битрейт (BR) может представлять средний битрейт по полной версии передаваемого потока или может вместо этого представлять средний битрейт для данных, которые уже были переданы в рамках версии передаваемого потока.
В зависимости от реализации клиент может быть терминалом мобильной связи, таким как мобильный телефон, и, кроме того, или в качестве альтернативы, сервер может быть встроенным в терминал мобильной связи, так что линия связи между сервером и сетью может быть беспроводной. Кроме того, способ в соответствии с настоящим изобретением может выполняться посредством одного или нескольких посреднических сетевых узлов (таких как прокси-серверы), расположенных между сервером и клиентом. Способ также может использоваться в архитектуре, имеющей множество потоков данных, буферизуемых посредством клиентского буфера (или множеством клиентских буферов, в зависимости от конфигурации оборудования клиента).
Изобретение также может быть осуществлено в виде компьютерного программного продукта, который может храниться на машиночитаемом носителе записи, содержащем части кода программы для выполнения любого из этапов вышеупомянутых способов, когда компьютерный программный продукт исполняется на компьютерной системе.
Изобретение может дополнительно содержать устройство, содержащее процессор компьютера и запоминающее устройство, соединенное с процессором, причем запоминающее устройство кодируется с одной или несколькими программами, которые могут выполнять любые этапы из вышеупомянутых способов.
В еще одном варианте осуществления изобретение относится к устройству управления передачами пакетов данных с переменным битрейтом, выполняемых от сервера клиенту, имеющему в составе клиентский буфер, причем сервер осуществляет переключения между различными версиями потока для передаваемых данных с переменным битрейтом на основании состояния клиентского буфера. Устройство содержит: упреждающий контроллер передачи потока с переменным битрейтом, чтобы выбирать для передачи начальную версию потока данных с переменным битрейтом; блок контроля клиентского буфера, чтобы отслеживать значение, представляющее количество данных внутри клиентского буфера; блок определения переменного битрейта (BR) для порции данных с переменным битрейтом, еще подлежащих передаче в рамках выбранной версии потока; и причем упреждающий контроллер передачи потока с переменным битрейтом затем управляет переключениями на другие версии потока, имеющие другие средние битрейты, на основании значения (PT), представляющего количество данных внутри клиентского буфера, в комбинации с битрейтом (BR) для порции данных с переменным битрейтом, еще подлежащих передаче.
Устройство может быть выполнено в виде стационарного или мобильного сетевого компонента, такого как сетевой сервер и/или терминал беспроводной связи. Кроме того, устройство может составлять посреднический сетевой узел, такой как прокси-сервер.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
В нижеследующем изобретении будет описано с помощью ссылки на примерные варианты осуществления, проиллюстрированные на чертежах, на которых:
Фиг.1 - схематическое представление системы связи, полезное для понимания и реализации изобретения;
Фиг.2 - схема алгоритма, обеспечивающая общее представление об осуществлении способа согласно изобретению;
Фиг.3 - график, иллюстрирующий различные версии потока данных с переменным битрейтом, конкретно иллюстрирующий различные средние битрейты для различных версий потока;
Фиг.4 - блок-схема отдельного потока данных с переменным битрейтом, конкретно иллюстрирующая битрейты для различных порций потока;
Фиг.5 - схема алгоритма, иллюстрирующая примерную реализацию логики переменного битрейта согласно изобретению;
Фиг.6 - блок-схема клиентского буфера, конкретно иллюстрирующая различные пороговые величины, используемые в соответствии с изобретением;
Фиг.7 - блок-схема, иллюстрирующая примерную реализацию устройства серверного компонента согласно изобретению.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
В нижеследующем описании, с целями пояснения, а не ограничения, сформулированы конкретные подробности, такие как конкретные последовательности этапов и различные конфигурации, чтобы обеспечить полное понимание изобретения. Специалисту в данной области техники будет очевидно, что изобретение на практике может быть исполнено в других вариантах осуществления, которые выходят за пределы этих конкретных подробностей. Кроме того, специалисты в данной области техники оценят, что функции, поясненные ниже в документе, могут быть осуществлены с использованием программного обеспечения, действующего вместе с запрограммированным микропроцессором или универсальным компьютером, и/или с использованием проблемно-ориентированной интегральной схемы (ASIC). Будет также оценено, что, хотя изобретение в основном описано в виде способа, оно также может быть осуществлено в виде компьютерного программного продукта, а также системы или устройства, содержащего процессор компьютера и запоминающее устройство, соединенное с процессором, причем запоминающее устройство является кодированным с одной или несколькими программами, которые могут выполнять способы, раскрытые в документе.
На Фиг.1 иллюстрируется примерная архитектура 100, которая может использоваться в связи с изобретением, включающая в состав сервер 105, который может быть соединен с клиентом 115 через магистраль связи, такую как IP-сеть 110. Сервер включает в состав блок 120 аудиовизуального содержимого, который осуществляет доступ и передает некоторое аудиовизуальное содержимое (например, файлы мультимедийных данных) через блок 125 RTP/UDP (транспортный протокол реального времени/протокол передачи дейтаграмм пользователя), использующий стандарт потоковой передачи, такой как RTP (транспортный протокол реального времени) поверх UDP или другого транспортного протокола передачи данных для управления передачей мультимедийных данных в реальном времени (с наличием протокола транспортного уровня, такого так UDP - протокол передачи дейтаграмм пользователя). Пакеты передаются на общедоступную сеть 130 (например, Интернет, однако, внешняя общедоступная сеть не требуется, когда сервер непосредственно соединен с сетью 135 оператора), которая доставляет пакеты на сеть 135 оператора, такую как "проводная" сеть оператора мобильной связи, соединенную с ней.
Сеть 135 оператора включает в состав базовую сеть 140, которая обеспечивает каналы связи между сервером 105 и клиентом 115. Базовая сеть 140, которая может необязательно иметь буфер, обеспечивает принятые от блока RTP/UDP 125 пакеты для буферизации в буфере в рамках сети (RAN) 145 радиодоступа (таком как буфер в SGSN (обслуживающий узел поддержки пакетной радиосвязи) или в RNC (дистанционный сетевой контроллер)) прежде их передачи посредством передатчика 150 беспроводной связи. Буферы базовой сети 140 (если буферизация используется) и RAN 145 размещены последовательно и составляют сетевой буфер.
Клиент 115 принимает пакеты, переданные посредством передатчика 150 беспроводной связи в клиентский буфер 155. Пакеты передаются из клиентского буфера 155 на блок RTP/UDP 160 для доставки на модуль 165 мультимедийного приложения (или мультимедийный проигрыватель) и их использования. Для целей данного применения, выражение “скорость передачи пакетов” будет относиться к скорости передачи пакетов от сервера 105 на IP-сеть 110, выражение “скорость канала связи” будет относиться к скорости передачи пакетов от IP-сети 110 клиенту 115, и фраза “скорость передачи содержимого” должна относиться к скорости, с которой данные передаются из клиентского буфера 115 на модуль 165 мультимедийного приложения для воспроизведения посредством модуля 165 мультимедийного приложения.
Со ссылкой на Фиг.2 проиллюстрирован вариант 200 осуществления способа согласно изобретению, который может быть выполнен, например, посредством системы по Фиг.1. Способ предпочтительно осуществляется посредством сервера, такого как сервер 105 по Фиг.1, но может быть осуществлен посредством любого другого надлежащего сетевого компонента. В нижеследующих описаниях будет полагаться, что сервер осуществляет этапы способа. Начиная на этапе 202, сервер выбирает для передачи начальную версию потока данных с переменным битрейтом. Начальная версия потока выбирается, в соответствии с иными традиционными способами, из группы различных версий потока, имеющих в целом различные предварительно кодированные скорости передачи. Например, первый поток может начать с битрейтом в 1 мегабит (Мбит)/секунду, тогда как второй поток может начать с битрейтом в 2 Мбит/секунду. Поскольку сам поток имеет переменный битрейт, каждая версия потока подобным образом имеет переменный битрейт. Следовательно, какая бы версия потока ни была выбрана, битрейт для данных, закодированных внутри потока, будет изменяться. Например, первая версия потока может переключаться на битрейт в 2 Мбит/секунду после десяти секунд, тогда как вторая версия потока может переключаться на битрейт в 3 Мбит/секунду после десяти секунд, то есть после десяти секунд обе версии потока имеют предварительно кодированные битрейты, которые увеличиваются на 1 Мбит/секунду.
Три примерных версии отдельного потока битов показаны на Фиг.3. Каждая версия потока имеет битрейт, который изменяется в зависимости от времени. Версии синхронизированы между собой, то есть битрейты все увеличиваются в одинаковое время или все уменьшаются за одинаковое время. Однако средние скорости передачи битов для различных версий потока отличаются друг от друга. Сервер выполняет переключения-вверх и переключения-вниз путем переключения между различными версиями потока. В примере на Фиг.3 показываются только три версии потока. Обычно, большее количество версий являются предварительно сохраненными. Также, в примере, самый низкий битрейт для версии 205 потока с самым высоким битрейтом находится на более высокой скорости, чем самый высокий битрейт для следующей версии 207 потока. Подобным образом, самый низкий битрейт для версии 205 потока находится на более высокой скорости, чем самый высокий битрейт для версии 209. Это, однако, не должно быть требованием. Зачастую имеется, по меньшей мере, некоторое перекрытие в битрейтах. Также, в примере, изменения скорости показаны плавными, то есть скорость увеличивается плавно до максимума, затем плавно уменьшается. Это также не должно быть требованием. Во многих примерах, битрейты изменяются прерывисто, то есть, скорость изменяется скачком от одного уровня (такого как 1 Мбит/секунду) к другому уровню (такому как 2 Мбит/секунду).
Возвращаясь к Фиг.2, на этапе 202 выбранная версия потока передается от сервера клиенту путем взятия предварительно кодированных данных из версии потока и помещения этих предварительно кодированных данных в пакеты данных, которые передаются клиенту с заранее установленной скоростью передачи пакетов. Обратите внимание, что любое изменение в битрейте для данных с переменным битрейтом в рамках передаваемого потока обычно не требует изменения в скорости передачи пакетов, которая определена базовой после рассмотрения полосы пропускания. Подобным образом, выбор одной версии потока поверх другой версии обычно не влечет за собой каких-либо изменений в скорости передачи пакетов.
На этапе 204 сервер отслеживает значение, представляющее количество данных внутри клиентского буфера в текущий момент. Это также может быть выполнено в соответствии с иными традиционными способами. В одном примере, если клиентский буфер реализован в соответствии с протоколами RTCP, сервер принимает от клиентского буфера обратную связь, которая включает в состав поля данных NSN/OBSN и HRSN, на основании которых определяется количество данных в клиентском буфере. Как отмечено, количество данных в клиентском буфере может быть представлено, например, в терминах продолжительности (PT) воспроизведения, уровня заполнения клиентского буфера, или другого подходящего значения. В нижеследующих описаниях будут описаны примеры с использованием продолжительности (PT) воспроизведения.
NEXT
На этапе 206 сервер определяет битрейт (BR) для порции данных с переменным битрейтом, еще подлежащих передаче. Предпочтительно, она является следующей последовательной порцией подлежащих передаче данных, которую сервер исследует, то есть, сервер определяет значение (BR), представляющее битрейт для следующей порции данных, подлежащей передаче. Следующая порция данных может быть определена, например, в терминах заранее установленного количества секунд, соответствующих подлежащих передаче данным, или может быть определена в виде порции данных, начиная от передаваемых в текущее время данных, до следующего заданного изменения в данных. Например, если предварительно кодированный поток данных с переменным битрейтом должен поддерживать свой текущий битрейт в течение последующих 12 секунд прежде переключения на другую скорость передачи битов, то следующая порция данных содержит данные, соответствующие длительности в следующие 12 секунд.
#1
#2
#3
#4
#1
#3
#2
#4
#2
NEXT
#2
NEXT
AVE
NEXT
На Фиг.4 иллюстрируется примерная версия 208 потока передаваемых данных с переменным битрейтом. Поток включает в состав порции с разными битрейтами, обозначенными BR, BR, BR, BR и т.д. BR и BRмогут обе быть, например, 1 Мбит/секунду, тогда как BR и BR могут обе быть, например, 2 Мбита/секунду. Как может быть видно, порции могут быть различной продолжительности, то есть длительности. В примере, стрелка 210 обозначает точку внутри потока, соответствующую данным, передаваемым в текущее время. Следующей порцией данных, следовательно, являются данные, начинающиеся в точке 210. Битрейтом является BR. Если следующая порция данных определяется в терминах порции данных, начиная от данных, передаваемых в текущее время, до следующего заданного изменения в данных, то BR является просто BR. Если вместо этого, следующая порция данных определяется в терминах заранее установленного количества секунд, соответствующих подлежащих передаче данным, то следующая порция данных может охватывать два или больше различных битрейта. В этом случае, сервер может быть выполнен с возможностью просто выбирать первого из этих битрейтов для использования в качестве BR или вместо этого быть может выполнен с возможностью вычислять средний битрейт BR в течение этого заранее установленного промежутка времени для использования в качестве BR. В любом случае, значение, представляющее битрейт для некоторой порции данных, еще подлежащих передаче, определяется на этапе 206 по Фиг.2.
NEXT
На этапе 212 по Фиг.2, сервер затем управляет переключениями на различные версии потока, имеющие различные средние битрейты, на основании значения, представляющего (PT) количество данных в текущее время внутри клиентского буфера, и на основании битрейта (BR) для порции данных с переменным битрейтом, еще подлежащих передаче, например, сервер управляет переключениями-вверх и переключениями-вниз на основании и PT, и BR. Принимая во внимание битрейт для еще подлежащих передаче данных, в дополнение к PT, сервер способен избегать многих ненужных переключений скорости передачи, которые происходят в традиционных системах, применяющих только фиксированные пороговые величины переключаемых скоростей.
NEXT
AVE
Предпочтительно, если BR превышает BR, то задерживают любое переключение-вверх вследствие изменения в состоянии клиентского буфера. Другими словами, если какое-либо увеличение продолжительности воспроизведения внутри клиентского буфера запустило бы иначе переключение на другую версию потока, имеющую в целом более высокую скорость передачи, это переключение задерживают. Если вместо этого переключение-вверх было выполнено сервером до точки в потоке, где переменный битрейт был обязан увеличиться в любом случае, переключение-вверх будет вероятно неэффективным и может потребовать компенсирующее переключение-вниз. В этом отношении, при выполнении переключения-вверх до точки в потоке, где битрейт для потока с переменным битрейтом увеличивается, происходит два увеличения битрейтом, один за другим. В результате, битрейт является затем вероятно более высоким, чем необходимо, и, вероятно, запустит компенсирующее переключение-вниз, чтобы предотвратить возможное опустошение буфера. Вместо этого путем задержки переключения-вверх в условиях, где битрейт для данных с переменным битрейтом должен увеличиться в любом случае, сервер, вероятно, избегает и ненужного переключение-вверх, и последующего компенсирующего переключения-вниз, посредством этого обеспечивая конечному пользователю более однородный уровень качества аудиовизуальных данных.
NEXT
AVE
DOWN
Также предпочтительно, если BR превышает BR, ускоряется переключение-вниз из-за изменения в состоянии клиентского буфера. Другими словами, если бы уменьшение в продолжительности воспроизведения внутри клиентского буфера, иначе вызвало бы переключения на другую версию потока, имеющую в целом более низкую скорость передачи, это переключение ускоряется, если переменный битрейт должен увеличиться. Путем ускорения переключения-вниз в условиях, где битрейт для передаваемых данных должен увеличиться, сервер посредством этого помогает предотвращать возможное событие повторной буферизации. Если, с другой стороны, сервер не ожидает увеличения битрейта внутри данных с переменным битрейтом, переключение-вниз, запускаемое согласно снижению продолжительности воспроизведения ниже обычной фиксированной пороговой величины переключения-вниз (PT), может быть слишком поздним, чтобы предотвратить повторную буферизацию, вызванную тем, что увеличивающийся битрейт потока сам будет ускорять опустошение буфера.
NEXT
AVE
UP
Предпочтительно, если вместо этого BR ниже BR, ускоряется любое переключение-вверх из-за изменения в состоянии клиентского буфера. Другими словами, если увеличение в продолжительности воспроизведения внутри клиентского буфера вызвало бы иначе переключение на другую версию потока, имеющую в целом более высокую скорость передачи, это переключение ускоряется, если переменный битрейт должен уменьшиться. Путем ускорения переключения-вверх в условиях, где битрейт для передаваемых данных должен уменьшиться, сервер посредством этого помогает предотвращать возможное событие переполнения. Если, с другой стороны, сервер не ожидает уменьшения в битрейте внутри данных с переменным битрейтом, переключение-вверх, запускаемое из-за превышения продолжительности воспроизведения обычной фиксированной пороговой величины переключения-вверх (PT), может быть слишком поздним, чтобы предотвратить переполнение буфера, заданное тем, что уменьшающийся битрейт для потока сам ускорит переполнение буфера. Кроме того, ускоренное переключение-вверх более быстро обеспечивает пользователю повышенное качество аудиовизуальных данных.
NEXT
AVE
DOWN
Однако обратите внимание, что когда BR ниже BR, любое переключение-вниз вследствие изменения в состоянии клиентского буфера предпочтительно не задерживается (не ускоряется). Скорее, в этом случае, переключения-вниз предпочтительно запускаются на основании обычного фиксированного порога переключения-вниз (PT). Хотя переключение-вниз может быть потенциально задержано ввиду факта, что битрейт для данных с переменным битрейтом должен вскоре уменьшиться в любом случае, таковое не выполняется в предпочтительном осуществлении изобретения, чтобы избежать риска опустошения буфера.
UP
DOWN
UP
DOWN
Обращаясь теперь к Фиг.5, будет описано предпочтительное осуществление логики переменного битрейта для использования на этапе два 212 по Фиг.2. Начиная на этапе 300, сервер определяет значения для PT и PT. PT и PT могут быть заранее определенными, фиксированными пороговыми величинами переключения-вверх и переключения-вниз и могут быть установлены в соответствии с иными традиционными способами. На этапе 302 сервер определяет значения для
NEXT
AVE
NEXT
AVE
AVE
AVE
AVE
AVE
BR и BR. BR может быть определено посредством исследования кодированных битрейтов, связанных с подлежащими передаче данными, которые хранятся в пределах сервера или иного доступного серверу устройства. В одном примере BR вычисляют, исследуя запись кодированных битрейтов для уже переданных данных (по длительностям времени, в течение которого были переданы пакеты, содержащие данные, кодированные с различными битрейтами.) В ином случае могут использоваться типовые арифметические действия, чтобы вычислить фактическое среднее значение. Во втором примере, значение BR для полного потока может быть вычислено и сохранено заранее (поскольку отдельные потоки кодируются прежде начала сеанса потоковой передачи, отдельные значения BR могут быть определены для отдельных потоков прежде воспроизведения). Другими словами, в этом втором примере, BR не является средним битрейтом только для одной порции данных, которая уже была передана, но вместо этого представляет среднее значение по полному потоку, то есть BR является средним битрейтом, проиллюстрированным, например, на Фиг.3.
NEXT
AVE
NEXT
AVE
NEXT
AVE
На этапе 304 сервер вычисляет значение F, которое представляет отношение BRк BR, то есть F=BR/BR. Следовательно, если BR превышает BR, то F больше 1,0.
NEXT
AVE
Если BR превышает BR, тогда F меньше 1,0.
NEXT
AVE
В случаях, где BR равно BR, тогда F равно 1,0.
AVE
NEXT
Если никакие данные еще не были переданы (так, что нет никакого текущего значения BR), тогда F просто установлено в 1,0. Если нет остатков данных, подлежащих передаче в рамках текущего потока данных, так что нет текущего значения для BR, тогда F также предпочтительно сбрасывается в 1,0 для использования в связи со следующим потоком подлежащих передаче данных.
UP-ADJ
UP
UP
DOWN-ADJ
DOWN
DOWN
На этапе 306 сервер устанавливает подстраиваемую пороговую величину переключения-вверх (PT), равной PT, умноженной на F, то есть PT*F, и также устанавливает подстраиваемую пороговую величину переключения-вниз (PT), равной PT, умноженному на F, то есть PT*F.
NEXT
AVE
UP-ADJ
UP
DOWN-ADJ
DOWN
NEXT
AVE
UP-ADJ
UP
DOWN-ADJ
DOWN
Следовательно, если BR превышает BR, то PTбольше PT и PTтакже больше PT. Наоборот, если BR ниже BR, то PT меньше PT и PTтакже меньше PT.
UP-ADJ
NEXT
AVE
UP-ADJ
DOWN-ADJ
DOWN-ADJ
UP-ADJ
DOWN-ADJ
UP-ADJ
Пороговые величины проиллюстрированы на Фиг.6, которая предоставляет блочное представление клиентского буфера 115 по Фиг.1. В примере по Фиг.6, подстраиваемые пороговые величины больше соответствующих фиксированных пороговых величин. Обратите внимание, что потенциально могут возникать обстоятельства, где величина PT, которая может быть вычислена, будет больше максимального значения для клиентского буфера (MAX). Это может случаться, если BR немного больше BR, выдавая высокое значение для F. Если это так, PT просто устанавливается равным MAX или некоторому другому меньшему, заданному по умолчанию значению. В крайне маловероятном случае, когда вычисленная PT будет больше MAX вследствие крайне высокого значения для F, тогда PT предпочтительно также устанавливается в некоторое заданное по умолчанию значение, которое меньше заданного по умолчанию значения, в которое установлено PT, гарантируя таким образом, что PT остается меньше PT.
DOWN
UP-ADJ
DOWN
DOWN-ADJ
Возвращаясь на Фиг.5, на этапе 308, сервер начинает определять значения для PT, то есть текущую продолжительность воспроизведения для уже содержащихся внутри клиентского буфера данных, которое отслежено на этапе 204 по Фиг.2. Если, на этапе 310 принятия решения, PT больше PT, и PT также больше PT, то на этапе 312 запускается переключение-вверх. Если не больше, то выполняется этап 314 принятия решения, причем если PT меньше PT или PT меньше PT, то на этапе 316 запускается переключение-вниз.
Логика этапов 310 и 316 принятия решения может быть представлена, как изложено ниже:
DOWN
UP-ADJ
Если PT>PTИ PT>PTто
выполнить переключение-вверх
иначе
DOWN
DOWN-ADJ
если PT<PT ИЛИ PT<PT
выполнить переключение-вниз
конец если,
причем, как отмечено,
UP-ADJ
UP
PT=PT*F и
DOWN-ADJ
DOWN
PT=PT*F
UP-ADJ
DOWN
Следовательно, переключение-вверх запускается, если текущая продолжительность (PT) воспроизведения для клиентского буфера превышает подстраиваемую пороговую величину (PT) переключения-вверх, если PT также превышает PT. Это последнее условие предотвращает неподходящие переключения-вверх в условиях, где переключение-вниз может быть более подходящим. Посредством запуска переключений-вверх на основании подстраиваемой пороговой величины переключения-вверх, предпочтительнее чем на основании фиксированной пороговой величины переключения, сервер, таким образом, учитывает текущее состояние клиентского буфера (как представлено посредством PT), при этом также упреждая изменения в битрейте внутри потока данных с переменным битрейтом (посредством подстройки пороговой величины переключения-вверх). Это помогает предотвращать другие неподходящие переключения-вверх.
Можно рассмотреть пример, в котором подстраиваемая пороговая величина переключения-вверх первоначально точно равна фиксированной пороговой величине переключения-вверх. Следовательно, если продолжительность воспроизведения для клиентского буфера превышает этот пороговый уровень, выполняется переключение-вверх. Если битрейт для данных с переменным битрейтом затем должен увеличиться, подстраиваемая пороговая величина переключения-вверх будет увеличена с тем, чтобы была больше фиксированной пороговой величины. В этом случае последующее переключение-вверх будет выполнено, только если продолжительность воспроизведения превышает новое, более высокое пороговое значение. Другими словами, становится более трудным, чтобы запускалось переключение-вверх, поскольку должно быть превышено более высокое пороговое значение, задерживая, таким образом, последующее переключение-вверх в условиях, где такая задержка гарантирована, как обсуждено выше в связи с Фиг.1. Теперь можно рассмотреть пример, в котором подстраиваемая пороговая величина переключения-вверх снова первоначально установлена равной фиксированной пороговой величине переключения-вверх, но в котором взамен должен уменьшиться битрейт для данных с переменным битрейтом. В этом случае подстраиваемая пороговая величина переключения-вверх тогда будет более низкой, чем фиксированная пороговая величина. В этом случае становится легче, чтобы запускалось переключение-вверх, ускоряя, таким образом, последующее переключение-вверх в условиях, где оно гарантировано, как также обсуждено выше.
DOWN
DOWN-ADJ
Если обратиться теперь к переключениям-вниз, переключение-вниз запускается, если текущая продолжительность (PT) воспроизведения для клиентского буфера снижается ниже либо фиксированной пороговой величины PT, либо подстраиваемой пороговой величины переключения-вниз (PT). Другими словами, переключение-вниз запускается, если PT снижается ниже наибольшей величины из двух пороговых величин переключения-вниз. Фиксированная пороговая величина еще используется, чтобы запускать переключение-вниз для предотвращения задержки переключение-вниз с тем, чтобы помогать предотвращению событий повторной буферизации. Однако может быть ускорено переключение-вниз, которое возникает, если PT снижается ниже подстраиваемой пороговой величины переключения-вниз. Как отмечено выше, может оказаться, что подстраиваемая пороговая величина переключения-вниз будет либо выше, либо ниже фиксированной пороговой величины переключения-вниз. Если она ниже фиксированной пороговой величины, это излишне, поскольку фиксированная пороговая величина используется для немедленного запуска переключения-вниз в любом случае. Однако если подстраиваемая пороговая величина переключения-вниз превышает фиксированную пороговую величину переключения-вниз, подстраиваемая пороговая величина переключения-вниз тогда может запустить ускоренное переключение-вниз, то есть становится легче, чтобы запускалось переключение-вниз, ускоряя, таким образом, последующие переключения-вниз в условиях, где оно гарантировано, как также обсуждено выше.
NEXT
AVE
Если ни одно из условий этапов 310 и 314 принятия решения не выполняется, то обработка возвращается на этап 302, в котором обновляются значения BR и BR, чтобы отразить в них любые изменения, подстраиваемые пороговые величины подстраиваются, и самое последнее значение PT является входным для применения к различным пороговым значениям.
Таким образом, было описано примерное осуществление способа по методике подстройки общей скорости передачи данных в системе на основе передачи пакетов путем переключения между различными версиями предварительно кодированного потока. Скорость передачи пакетов обычно не изменяется, поскольку она зависит от полосы пропускания канала связи. Однако в других вариантах осуществления скорость передачи пакетов также может изменяться с использованием, например, адаптивных способов.
Хотя изобретение было в основном описано со ссылкой на реализации способа, аппаратные реализации также являются частью изобретения. На Фиг.7 иллюстрируется, на общем уровне, примерная аппаратная реализация. Вкратце, сетевой компонент 400, который может быть частью сервера 105 по Фиг.1, включает в состав упреждающий контроллер (402) передачи потока с переменным битрейтом, чтобы выбирать (202) для передачи начальную версию потока данных с переменным битрейтом. Блок (404) контроля клиентского буфера отслеживает значение, представляющее количество данных внутри клиентского буфера. Блок (406) определения переменного битрейта определяет битрейт (BR) для порции данных с переменным битрейтом, еще подлежащих передаче в рамках выбранной версии потока. Упреждающий контроллер (402) передачи потока с переменным битрейтом затем управляет переключением на различные версии потока, имеющие разные средние битрейты, на основании значения, представляющего (PT) количество данных внутри клиентского буфера, в комбинации с битрейтом (BR) для порции данных с переменным битрейтом, еще подлежащих передаче, то есть контроллер 402 упреждает изменения в битрейте для потока с переменным битрейтом и соответственно управляет переключением-вверх и переключением-вниз.
Как может быть оценено специалистом в данной области техники настоящее изобретение и методики, связанные с ним, обеспечивают усовершенствованное воспринимаемое впечатление конечного пользователя для приложений, таких как потоковая передача мультимедиа, так как избегается переполнение клиентского буфера. Кроме того, специалист в данной области техники также оценит, что имеются много различных способов, которые могут использоваться, чтобы определять уровень заполнения клиентского буфера, включая оценки, основанные на данных в рамках сообщений RR (сообщение приемника) и сообщений отправителя (Sender Reports) и, что настоящее изобретение может быть осуществлено параллельно со множеством потоков пакетов данных, одновременно буферизуемых для передачи одному или нескольким клиентам.
Специалист в данной области техники дополнительно оценит, что изобретение может быть осуществлено в сетевых компонентах различных типов и посредством таких компонентов, как сетевые терминалы, сетевые узлы, и т.п. В частности изобретение может быть осуществлено на практике посредством терминалов мобильной связи, прокси-серверов (что может разделять тракт передачи), и стационарных терминалов.
Тогда как изобретение было описано по отношению к конкретным вариантам осуществления, специалисты в данной области техники признают, что изобретение не ограничивается конкретными вариантами осуществления, описанными и проиллюстрированными в документе. Следовательно, тогда как изобретение было описано относительно его предпочтительных вариантов осуществления, должно быть понятно, что данное раскрытие является лишь иллюстративным. Соответственно, подразумевается, что изобретение ограничивается только в соответствии с объемом прилагаемой к документу формулы изобретения.