Динамічне перемежовування потоків і доставка на основі підпотоків
Номер патенту: 94811
Опубліковано: 10.06.2011
Автори: Вічізано Лоренцо, Лубі Майкл, Пакзад Паям, Уотсон Марк, Кліш Джордан Дж.
Формула / Реферат
1. Спосіб передачі потоку вмісту, який використовує систему зв'язку, яка включає в себе щонайменше один передавач і щонайменше один приймач, причому спосіб включає:
формування з'єднання між приймачем і першим передавачем;
прийом в приймачі першого потоку вмісту, що передається від першого передавача, при цьому перший потік вмісту містить початкову величину перемежовування; і
регулювання величини перемежовування, що міститься в першому потоці вмісту, під час передачі першого потоку вмісту незалежно від структури вихідних блоків першого потоку вмісту, збільшуючи величину перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах першого потоку вмісту.
2. Спосіб за п. 1, в якому початкова величина перемежовування в першому потоці вмісту сконфігурована так, що немає вихідного перемежовування в першому потоці вмісту.
3. Спосіб за п. 1, в якому величина перемежовування в першому потоці вмісту регулюється від вихідної величини до величини режиму, що встановився.
4. Спосіб за п. 3, в якому перемежовування в першому потоці вмісту лінійно переходить між початковою величиною і величиною режиму, що встановився.
5. Спосіб за п. 1, в якому величина перемежовування, що міститься в першому потоці вмісту, регулюється як функція від часу.
6. Спосіб за п. 1, в якому величина перемежовування, що міститься в першому потоці вмісту, регулюється як функція від різниці між швидкістю відтворення першого потоку вмісту і швидкістю передачі першого потоку вмісту.
7. Спосіб за п. 1, в якому величина перемежовування, що міститься в першому потоці вмісту, регулюється як функція від кількості втрати даних, що зазнається в приймачі.
8. Спосіб за п. 1, в якому структура вихідних блоків першого потоку вмісту не змінюється під час передачі першого потоку вмісту.
9. Спосіб за п. 1, який додатково включає компонування буфера резервування вмісту з першого потоку вмісту.
10. Спосіб за п. 9, в якому буфер резервування компонується одночасно з будь-якими регулюваннями, що виконуються у величині перемежовування в першому потоці вмісту.
11. Спосіб за п. 1, який додатково включає:
формування другого з'єднання між приймачем і другим передавачем;
прийом в приймачі другого потоку вмісту, що передається від другого передавача, з'єднаного з приймачем, при цьому другий потік вмісту містить початкову величину перемежовування;
регулювання величини перемежовування, що міститься у другому потоці вмісту, що доставляється в приймач, під час передачі другого потоку вмісту незалежно від структури вихідних блоків другого потоку вмісту; і
перехід між першим потоком вмісту і другим потоком вмісту таким чином, що зберігається приблизно однакова сукупна швидкість передачі потоків вмісту.
12. Спосіб за п. 11, в якому перехід між першим потоком вмісту і другим потоком вмісту виконується у часі як функція від величини перемежовування, що міститься в цих двох потоках.
13. Спосіб передачі потоку вмісту із застосуванням передавача, який передає дані по каналу, причому спосіб включає:
формування з'єднання між передавачем і приймачем;
відправку в приймач потоку вмісту, при цьому потік вмісту містить початкову величину перемежовування; і
регулювання величини перемежовування, що міститься в потоці вмісту, під час передачі потоку вмісту незалежно від структури вихідних блоків потоку вмісту, збільшуючи величину перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах потоку вмісту.
14. Спосіб прийому потоку вмісту з використанням приймача, який приймає дані по каналу, причому спосіб включає:
формування з'єднання між приймачем і передавачем;
прийом потоку вмісту, що передаєтьсявід передавача, при цьому потік вмісту містить початкову величину перемежовування, яка може регулюватися під час передачі потоку вмісту незалежно від структури вихідних блоків потоку вмісту шляхом збільшення величини перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах потоку вмісту.
15. Спосіб передачі потоку вмісту із застосуванням системи зв'язку, яка включає в себе щонайменше один передавач і щонайменше один приймач, причому спосіб включає:
формування з'єднання між приймачем і множиною передавачів;
прийом в приймачі потоку вмісту, що передається від множини передавачів, при цьому кожний передавач передає підпотік, що відрізняється, потоку вмісту в приймач, і кожний підпотік містить початкову величину перемежовування; і
регулювання величини перемежовування, що міститься в кожному з підпотоків вмісту, під час передачі підпотоків вмісту незалежно від структури вихідних блоків підпотоків вмісту, збільшуючи величину перемежовування в кожному підпотоці від початкової величини перемежовування на основі поточної позиції відправки в межах кожного підпотоку.
16. Спосіб за п. 15, в якому структура вихідних блоків підпотоків вмісту не змінюється під час передачі підпотоків вмісту.
17. Спосіб за п. 15, в якому величина перемежовування, що міститься в кожному підпотоці вмісту, є незалежною від величини перемежовування, що міститься в інших підпотоках вмісту.
Текст
1. Спосіб передачі потоку вмісту, який використовує систему зв'язку, яка включає в себе щонайменше один передавач і щонайменше один приймач, причому спосіб включає: формування з'єднання між приймачем і першим передавачем; прийом в приймачі першого потоку вмісту, що передається від першого передавача, при цьому перший потік вмісту містить початкову величину перемежовування; і регулювання величини перемежовування, що міститься в першому потоці вмісту, під час передачі першого потоку вмісту незалежно від структури вихідних блоків першого потоку вмісту, збільшуючи величину перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах першого потоку вмісту. 2. Спосіб за п. 1, в якому початкова величина перемежовування в першому потоці вмісту сконфігурована так, що немає вихідного перемежовування в першому потоці вмісту. 3. Спосіб за п. 1, в якому величина перемежовування в першому потоці вмісту регулюється від вихідної величини до величини режиму, що встановився. 4. Спосіб за п. 3, в якому перемежовування в першому потоці вмісту лінійно переходить між початковою величиною і величиною режиму, що встановився. 2 (19) 1 3 94811 4 відправку в приймач потоку вмісту, при цьому потік вмісту містить початкову величину перемежовування; і регулювання величини перемежовування, що міститься в потоці вмісту, під час передачі потоку вмісту незалежно від структури вихідних блоків потоку вмісту, збільшуючи величину перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах потоку вмісту. 14. Спосіб прийому потоку вмісту з використанням приймача, який приймає дані по каналу, причому спосіб включає: формування з'єднання між приймачем і передавачем; прийом потоку вмісту, що передається від передавача, при цьому потік вмісту містить початкову величину перемежовування, яка може регулюватися під час передачі потоку вмісту незалежно від структури вихідних блоків потоку вмісту шляхом збільшення величини перемежовування від початкової величини перемежовування на основі поточної позиції відправки в межах потоку вмісту. 15. Спосіб передачі потоку вмісту із застосуванням системи зв'язку, яка включає в себе щонайменше один передавач і щонайменше один приймач, причому спосіб включає: формування з'єднання між приймачем і множиною передавачів; прийом в приймачі потоку вмісту, що передається від множини передавачів, при цьому кожний передавач передає підпотік, що відрізняється, потоку вмісту в приймач, і кожний підпотік містить початкову величину перемежовування; і регулювання величини перемежовування, що міститься в кожному з підпотоків вмісту, під час передачі підпотоків вмісту незалежно від структури вихідних блоків підпотоків вмісту, збільшуючи величину перемежовування в кожному підпотоці від початкової величини перемежовування на основі поточної позиції відправки в межах кожного підпотоку. 16. Спосіб за п. 15, в якому структура вихідних блоків підпотоків вмісту не змінюється під час передачі підпотоків вмісту. 17. Спосіб за п. 15, в якому величина перемежовування, що міститься в кожному підпотоці вмісту, є незалежною від величини перемежовування, що міститься в інших підпотоках вмісту. Перехресне посилання на споріднені заявки Дана заявка заявляє пріоритет попередньої заявки на патент США номер 60/912145, озаглавленої «Dynamic Stream Interleaving and Sub-Stream Based Delivery», поданої 16 квітня 2007 року. Вміст цієї заявки повністю включений в даному документі за допомогою посилання для всіх цілей. Дане розкриття суті винаходу також включає в себе за допомогою посилання, як якби вони були повністю викладені в цьому документі, для всіх цілей, наступні спільно переуступлені заявки/патенти: Патент США № 6307487 на ім'я Luby (у подальшому «Luby I»); Патент США № 7068729 на ім'я Shokrollahi та інш. (у подальшому «Shokrollahi I»); Патентна заявка США № 11/423391, подана 9 червня 2006 та озаглавлена «Forward ErrorCorrecting (FEC) Coding and Streaming», на ім'я Luby та інш. (у подальшому «Luby II»); і Патентна заявка США № 11/674625, подана 13 лютого 2007 року, озаглавлена «Streaming and Buffering Using Variable FEC Overhead and Protection Periods», на ім'я Watson та інш. (у подальшому «Watson»). Галузь техніки, до якої належить винахід Даний винахід належить до підвищення якості потокової доставки, часу на перемикання вмісту, масштабованої розподіленої доставки потоків і використання FEC-кодування у всіх аспектах, щоб вдосконалити рішення по потоковій передачі. Потокова передача містить потокову передачу аудіо, відео і даних, на постійній швидкості або змінній швидкості передачі бітів, для відтворення вмісту в формі списків відтворення за запитом або прямого відтворення. Рівень техніки Доставка потокового мультимедіа стає все більш важливою, оскільки стає все більш поширеним, що високоякісне аудіо і відео доставляється по мережах з комутацією пакетів, таких як Інтернет, стільникові і бездротові мережі, лінії електромережі і багато інших мереж. Якість потокового мультимедіа, що доставляється, залежить від ряду факторів, в тому числі якості вихідного вмісту, якості кодування вихідного вмісту, можливостей приймачів декодувати і відображати відео, своєчасності і якості сигналу, що приймається в приймачах, тощо. Щоб створювати високоякісне сприйняття потокового мультимедіа, транспортування і своєчасність сигналу, що приймається в приймачах, є особливо важливими. Хороший транспорт надає точність відтворення потоку, що приймається в приймачі, в порівнянні з тим, що відправляється від передавача, тоді як своєчасність представляє те, як швидко приймач може починати відтворення вмісту після вихідного запиту цього вмісту. Останнім часом стало усталеною практикою розглядати використання кодів прямої корекції помилок (FEC) для захисту потокового мультимедіа під час передачі. Коли відправляється по пакетній мережі, приклади якої включають в себе Інтернет і бездротові мережі, такі як стандартизовані за допомогою таких груп, як 3GPP, 3GPP2 та DVB, вихідний потік вміщується в пакети по мірі того, як він формується або стає доступним, і тим самим пакети використовуються для того, щоб переносити вихідний потік або потік вмісту в тому порядку, в 5 якому він формується або стає доступним, в приймачі. У нетиповому варіанті застосування FEC-кодів для цих видів сценаріїв, кодер використовує FECкод при створенні виправляючих пакетів, які потім відправляються в доповнення до первинних вихідних пакетів, які містять вихідний потік. Виправляючі пакети мають таку властивість, що, коли виникає втрата вихідних пакетів, виправляючі пакети, що приймаються, можуть використовуватися для того, щоб відновлювати дані, які містяться у втрачених вихідних пакетах. Виправляючі пакети можуть використовуватися для того, щоб відновлювати вміст втрачених вихідних пакетів, які втрачені повністю, але також можуть використовуватися для відновлення після того, як виникає часткова втрата пакетів, або за рахунок виправляючих пакетів, що повністю приймаються, або навіть за рахунок виправляючих пакетів, що частково приймаються. Таким чином, виправляючі пакети, що повністю або частково приймаються, можуть використовуватися для того, щоб відновлювати повністю або частково втрачені вихідні пакети. В інших прикладах, інші типи пошкодження можуть виникати для даних, що відправляються, наприклад, значення бітів можуть бути інвертовані, і, таким чином, виправляючі пакети можуть використовуватися для того, щоб коректувати це пошкодження і надавати максимально точне відновлення вихідних пакетів. В інших прикладах, вихідний потік не обов'язково відправляється в дискретних пакетах, а замість цього може відправлятися, наприклад, як безперервний потік бітів. Є багато прикладів FEC-кодів, які можуть використовуватися для того, щоб надавати захист вихідного потоку. Коди Ріда-Соломона - це відомі коди для корекції помилок і стирання в системах зв'язку. Для корекції стирання, наприклад, в мережах пакетної передачі даних, відома ефективна реалізація кодів Ріда-Соломона використовує матриці Коші або Вандермонда, як описано в L. Rizzo, «Effective Erasure Codes for Reliable Computer Communication Protocols», Computer Communication Review, 27 (2):24-36 (квітень 1997 року) (у подальшому «Rizzo») і Bloemer та інш., «An XOR-Based Erasure-Resilient Coding Scheme», Technical Report TR-95-48, International Computer Science Institute, Berkeley, California (1995) (y подальшому «XOR-Reed-Solomon»), або в інших джерелах. Інші приклади FEC-кодів включають в себе LDPC-коди, коди ланцюгової реакції, такі як описані в Luby І, і коди багатостадійної ланцюгової реакції, такі як в Shokrollahi І. Приклади процесу FEC-декодування для різновидів кодів Ріда-Соломона описуються в Rizzo і XOR-Reed-Solomon. У цих прикладах декодування застосовується після того, як прийнято достатньо вихідних і виправляючих пакетів даних. Процес декодування може вимагати великого обсягу обчислень, і, залежно від доступних ресурсів CPU, його виконання може віднімати велику кількість часу відносно тривалості часу, що охоплюється за допомогою мультимедіа в блоці. Приймач повинен брати до уваги цю тривалість часу, необхідну для 94811 6 декодування, при обчисленні затримки, необхідної між початком прийому медіапотоку і відтворенням медіа. Цязатримка, зумовлена декодуванням, сприймається користувачем як затримка між його запитом на предмет конкретного медіапотоку і початком відтворення. Таким чином, бажано мінімізувати цю затримку. У багатьох варіантах застосування, пакети додатково поділяються на символи, до яких застосовується FEC-процес. Пакет може містити один або більше символів (або менше одного символу, але звичайно символи не розбиваються між пакетами). Символ може мати будь-який розмір, але часто розмір символу найбільше дорівнює розміру пакета. Вихідні символи - це символи, які кодують дані, які повинні бути передані. Виправляючи символи це символи, сформовані з вихідних символів, які прямо або непрямо є в доповнення до вихідних символів (тобто дані, які повинні бути передані, можуть бути повністю відновлені, якщо всі вихідні символи доступні, і жоден з виправляючих символів недоступний). Деякі FEC-коди основані на блоках в тому, що операції кодування залежать від символу(ів), які знаходяться в блоці, і можуть бути незалежними від символів не в цьому блоці. При блоковому кодуванні FEC-кодер може формувати виправляючи символи для блока з вихідних символів в цьому блоці, потім перейти до наступного блока і не обов'язково повинен звертатися до вихідних символів, відмінних від символів для поточного кодованого блока. При передачі вихідний блок, що містить вихідні символи, може представлятися за допомогою кодованого блока, який містить кодовані символи (які можуть бути декількома вихідними символами, декількома виправляючими символами або і тим, і іншим). При наявності виправляючих символів не всі вихідні символи потрібні в кожному кодованому блоці. Для деяких FEC-кодів, а саме кодів РідаСоломона, час кодування і декодування стає непрактичним по мірі того, як кількість кодованих символів на вихідний блок зростає. Таким чином, на практиці часто передбачена доцільна верхня межа (255 - це приблизне доцільне обмеження для деяких додатків) для загальної кількості кодованих символів, які можуть бути сформовані на вихідний блок, зокрема, в типовому випадку, де процес кодування і декодування за Рідом-Соломоном виконується за допомогою спеціалізованих апаратних засобів, наприклад, MPE-FEC-процеси, які використовують коди Ріда-Соломона, включені як частина DVB-H-стандарту, для захисту потоків від втрати пакетів, реалізовуються в спеціалізованих апаратних засобах у стільниковому телефоні, який обмежений всього 255 кодованими символами Ріда-Соломона на вихідний блок. Оскільки символи часто повинні вміщуватися в окремі робочі дані пакета, це задає доцільну верхню межу на максимальну довжину кодованого вихідного блока. Наприклад, якщо робочі дані пакета обмежені 1024 байтами або менше, і кожний пакет переносить один кодований символ, то кодований вихідний блок може становити найбільше 255 Кбайт (кіло 7 байт), і це, зрозуміло, також є верхньою межею розміру самого вихідного блока. Інші проблеми, наприклад, можливість декодувати вихідні блоки досить швидко, щоб не відставати від швидкості вихідної потокової передачі, щоб мінімізувати час затримки на декодування, що вводиться за допомогою FEC-декодування, і використовувати тільки невелику частину доступної потужності CPU в приймачі в будь-який момент часу під час FEC-декодування, представляють складність у рішенні. Інші проблеми включають в себе можливість починати відтворення потоку, наприклад, декодування і підготовку за допомогою рендерінгу аудіо- і відеопотоків, що приймаються, з використанням персонального комп'ютера і відображення відео на екрані комп'ютера і відтворення аудіо через вбудовані динаміки, або, як ще один приклад, декодування і підготовку за допомогою рендерінгу аудіо- і відеопотоків, що приймаються, з використанням абонентського префікса і відображення відео на телевізійному дисплеї, і відтворення аудіо через стереосистему. Першочергова задача полягає в тому, щоб мінімізувати затримку тим часом, коли користувач вирішує переглядати новий вміст, що доставляється як потік, і коли вміст починає відтворення, яка надалі називається «часом на перемикання вмісту». Прикладом перемикання вмісту є, коли користувач переглядає перший вміст, що доставляється через перший потік, і потім користувач вирішує переглядати другий вміст, що доставляється через другий потік, та ініціює дію, щоб починати перегляд другого вмісту. Другий потік може відправлятися з того самого набору або іншого набору серверів, в порівнянні з першим потоком. Іншим прикладом перемикання вмісту є, коли користувач відвідує веб-вузол і вирішує починати перегляд першого вмісту, що доставляється через перший потік, за допомогою натиснення посилання у вікні оглядача. Ще одним прикладом перемикання вмісту є, коли користувачеві бажано знаходити і починати перегляд в новій позиції, уперед або назад, в цьому самому потоці вмісту. Мінімізація часу на перемикання вмісту є важливою для перегляду відео, щоб надавати користувачам високоякісну швидку навігацію по вмісту при пошуку і вибірці широкого діапазону доступного вмісту. Високоякісна швидка навігація по вмісту часто позитивно корельована з обсягом вмісту, який використовують користувачі. Часто має місце те, що основним фактором часу на перемикання вмісту є базова структура FEC. Інша задача полягає в мінімізації часового проміжку між закінченням відтворення одного фрагмента вмісту і початком відтворення іншого фрагмента вмісту, який переважно йде слідом з невеликою паузою або без неї. Наприклад, якщо один фрагмент вмісту - це широкомовна телепередача, а наступний фрагмент вмісту - це реклама, або навпаки, тривалий проміжок (в даному документі названий «часом на зміну вмісту») між їх відтворенням небажаний. Безумовно, бажана мінімізація часу на зміну вмісту, при одночасній мінімізації швидкості пото 94811 8 кової передачі в приймач протягом періодів часу, оточуючих перехід. Інша задача полягає в тому, щоб максимізувати якість потоку, що доставляється при використанні мережі доставки на основі принципу максимальної ефективності, такої як Інтернет, яка може відкидати пакети і яка може викликати глобальні зміни кількості часу, що займає доставка пакетів, при одночасній мінімізації використання мережних ресурсів, таких як смуга пропускання. Інша задача полягає в тому, щоб надавати відмовостійке і масштабоване рішення по доставці потокової передачі, яке дає можливість компонентам системи відмовляти без негативного впливу на якість потоків, що доставляються в приймачі. Перемежовування може використовуватися для того, щоб надавати гарний захист від дефектів в каналі, таких як стрибкоподібна втрата пакетів. Наприклад, втрата пакетів часто є в деякій мірі пульсуючою, і тим самим розподіл вихідного блока по більш тривалих періодах часу може бути переважним. Для деяких FEC-кодів власне використання великих вихідних блоків доцільне, але для інших FEC-кодів, таких як коди Ріда-Соломона, часто є доцільні обмеження на розмір вихідного блока, який може використовуватися. Таким чином, щоб розподіляти передачу пакетів, асоційованих з вихідним блоком, по більш тривалому інтервалу часу, може бути переважним перемежовувати відправку пакетів, які містять кодовані символи для різних вихідних блоків. Раніше з'явилися способи, які дозволяють деякі із задач, описаних вище. Наприклад, деякі нові способи формування вихідних FEC-блоків і перемежовування описуються в Luby II. Деякі способи перемежовування є статичними в тому значенні, що величина перемежовування є фіксованою для всього потоку. Таким чином, іноді передбачається компроміс між величиною перемежовування, яка впливає на якість захисту, що пропонується за допомогою таких способів, і часом на перемикання вмісту, тобто великі величини перемежовування надають кращий захист потоків, але задають більш тривалий час на перемикання вмісту, і цей компроміс визначається фіксованим способом для всієї тривалості потокової передачі в приймач. Є деякі способи, які надають невеликий час на перемикання вмісту і великі величини перемежовування протягом значної частини процесу відправки потоку, наприклад, деякі способи, описані в Watson. Деякі із способів, описаних в Watson, динамічно переходять від коротких початкових вихідних блоків до все більш довгих вихідних блоків і протягом перехідного періоду відправляються на дещо більшій швидкості, ніж швидкість потокової передачі вмісту. Ці способи надають невеликий час на перемикання вмісту при одночасному наданні можливості підвищення якості захисту, що надається по мірі того, як продовжується проходження потоку. Наприклад, один спосіб застосування деяких із способів, описаних в Watson, полягає в тому, щоб визначати структуру вихідних блоків і виконувати FEC-кодування в той час, коли потік відправляється, тобто структура вихідних блоків «від коротких до довгих» визначається і 9 FEC-кодується по мірі того, як вони відправляються в кожній точці, де до них здійснюється доступ, в окремі приймачі, і тим самим формування структури вихідних блоків і FEC-кодування виконуються унікально для кожного приймача, і потік, щовідправляється в кожний приймач, є унікальним. Проте, іноді бажано мати структуру вихідних блоків потоку вмісту, що визначається незалежно від доставки потоку, наприклад, незалежно від приймачів, незалежно від того, коли вміст переглядається, і де в потоці вмісту починається перегляд, і незалежно від того, в якому порядку доставляються дані в рамках потоку. Це особливо важливе, якщо потік вмісту повинен бути доставлений з декількох серверів в один приймач. Таким чином, бажано вдосконалити процеси та пристрій. Суть винаходу Варіанти здійснення кодерів, декодерів і системи зв'язку згідно з аспектами даного винаходу передбачають способи динамічного перемежовування потоків, в тому числі способи для динамічного введення великих величин перемежовування по мірі того, як потік передається, незалежно від структури вихідних блоків. Деякі переваги цих способів полягають в тому, що вони розподіляють втрати або помилки в каналі по набагато більшому періоду часу в рамках первинного потоку, ніж якби перемежовування не вводилося, вони надають гарний захист від втрати пакетів або пошкодження пакетів при використанні з FEC-кодуванням, вони надають гарний захист від порушення синхронізації в мережі, і вони дають можливість зниження часу на перемикання вмісту і часу на зміну вмісту до мінімуму. Деякі додаткові переваги цих способів включають в себе згладжування швидкості потокової передачі, в тому числі через зміни від потокової передачі одного вмісту на інший вміст, і мінімальний час на зміну вмісту. Варіанти здійснення кодерів, декодерів і системи зв'язку згідно з аспектами даного винаходу також можуть передбачати секціонування потоку даних на підпотоки, доставку підпотоків в приймачі по різних трактах через мережу і прийом одночасно різних підпотоків в приймачі, що відправляються від потенційно різних серверів. При використанні разом з FEC-кодуванням способи включають в себе доставку частин кодування кожного вихідного блока від потенційно різних серверів. Деякі переваги цих способів включають в себе поліпшення часу на перемикання вмісту, підвищення стійкості до збоїв сервера і збоїв в тракті, підвищення стійкості до дискових збоїв, підвищення стійкості до втрати і/або пошкодження пакетів, поліпшення масштабованості загального рішення по доставці потокової передачі і поліпшення зберігання вмісту і балансу швидкості потокової передачі між серверами. Варіанти здійснення кодерів, декодерів і системи зв'язку згідно з аспектами даного винаходу також можуть передбачати комбінування динамічного перемежовування з доставкою підпотоків. Наприклад, за допомогою динамічного перемежовування, структура вихідних блоків і FECкодування можуть бути визначені, кодований потік 94811 10 може бути секціонований на підпотоки, і комбінації підпотоків можуть доставлятися в приймачі з використанням динамічного перемежовування, щоб надавати відмовостійку систему доставки потокової передачі, яка надає мінімальні часи на перемикання вмісту. Переваги цих комбінованих способів - це комбінація переваг динамічного перемежовування і доставки підпотоків. Наступний докладний опис разом з прикладеними кресленнями надає краще розуміння характеру і переваг даного винаходу. Короткий опис креслень Фіг. 1 - блок-схема системи зв'язку згідно з одним варіантом здійснення даного винаходу. Фіг. 2 - схема, що ілюструє час на перемикання вмісту. Фіг. 3А - креслення, що ілюструє компоненти часу на перемикання вмісту. Фіг. 3В - креслення, що ілюструє використання CPU для FEC під час декодування. Фіг. 4 - креслення, що ілюструє структуру вихідних блоків потоку вмісту і представлення відповідної швидкості передачі потоку вмісту для кожного вихідного блока. Фіг. 5 - креслення, що ілюструє структуру кодованих блоків, які відповідають потоку вмісту за фіг. 4. Фіг. 6 - креслення, що ілюструє приймач і час на перемикання вмісту, що відповідає базовому способу відправки. Фіг. 7 - креслення, що ілюструє стрічковий спосіб відправки потоку. Фіг. 8 - креслення, що ілюструє статичне перемежовування згідно із стрічковим способом відправки потоку. Фіг. 9 - креслення, що ілюструє приймач і час на перемикання вмісту, що відповідає способу відправки із статичним перемежовуванням. Фіг. 10 - креслення, що ілюструє спосіб відправки з динамічним перемежовуванням, коли новий потік відправляється в приймач. Фіг. 11 - креслення, що ілюструє час на перемикання вмісту і період довгострокового захисту, що зазнаються на приймачі для способу відправки з динамічним перемежовуванням. Фіг. 12 - креслення, що ілюструє зміну вмісту між двома послідовними сегментами вмісту для способу відправки з динамічним перемежовуванням. Фіг. 13 - креслення, що ілюструє зміну вмісту між двома непослідовними сегментами вмісту для способу відправки з динамічним перемежовуванням. Фіг. 14 - креслення, що ілюструє потік кодованого вмісту, що розподіляється із центрального сервера в різні розподілені сервери, який повинен використовуватися в способі доставки на основі підпотоків. Фіг. 15 - креслення, що ілюструє приймач, який запитує потік вмісту з різних розподілених серверів і приймає потоки кодованого вмісту від деяких з цих серверів у способі доставки на основі підпотоків. 11 Докладний опис Варіанти здійснення представляють нові способи динамічного перемежовування потоків, включаючи способи для динамічного введення великих величин перемежовування по мірі того, як потік передається незалежно від структури вихідних блоків, де передача здійснюється по мережі тощо. Варіанти здійснення також представляють нові способи секціонування потоку даних на підпотоки, доставки підпотоків в приймачі по різних трактах через мережу і прийом одночасно різних підпотоків у приймачі, що відправляються від потенційно різних серверів. При використанні разом з FECкодуванням, способи включають в себе доставку частин кодування кожного вихідного блока від потенційно різних серверів. Варіанти здійснення також представляють нові способи комбінування динамічного перемежовування з доставкою підпотоків. Далі передбачається, що мережа, яка переносить дані, є мережею з комутацією пакетів, щоб спрощувати опис в даному документі, з розумінням того, що фахівці в даній галузі техніки можуть легко бачити те, як процеси та способи, описані в даному документі, можуть застосовуватися до інших типів мереж передачі, таких як мережі з безперервним потоком бітів. Далі передбачається, що FEC-коди надають захист від втрачених пакетів або втрачених часткових даних в рамках пакетів, щоб спрощувати опис в даному документі, з розумінням того, що фахівці в даній галузі техніки можуть легко бачити те, як процеси та способи, описані в даному документі, можуть застосовуватися до інших типів пошкоджень при передачі даних, таких як інвертування бітів. У цьому описі передбачається, що дані, які повинні бути кодовані (вихідні дані), розбиваються на «символи» рівної довжини, які можуть мати будь-яку довжину (аж до одного біта мінімум), але які можуть мати різну довжину для різних частин даних. Символи можуть переноситися по мережі передачі даних в пакетах, при цьому ціле число символів явно переноситься або передбачається в кожному пакеті. У деяких випадках можливо, що вихідний пакет не є кратним довжині символу, в цьому випадку останній символ в пакеті може зрізатися. У цьому випадку, з метою FEC-кодування неявно припускається, що цей останній символ доповнюється до кінця фіксованою комбінацією бітів, наприклад, бітів з нульовим значенням, так що навіть якщо ці біти не переносяться в пакеті, приймач як і раніше може заповнювати цей останній зрізаний символ до повного символу. В інших варіантах здійснення, фіксована комбінація бітів може бути вміщена в пакет, тим самим фактично доповнюючи символи до довжини, що дорівнює довжині пакета. Розмір символу часто може вимірюватися в бітах, при цьому символ має розмір М бітів, і символ вибирається з алфавіту в 2М (два в ступені М) символів. Недвійкові цифри також розглядаються, але біти переважні, оскільки вони частіше за все використовуються. FEC-коди, що розглядаються для використання з потоковою передачею, типово є систематичними FEC-кодами, тобто вихідні символи вихідного 94811 12 блока включаються як частина кодування вихідного блока, і тим самим вихідні символи передаються. Фахівцям в даній галузі техніки повинне бути зрозуміло, що способи і процеси, описані в даному документі, застосовуються з рівним успіхом до FEC-кодів, які не є систематичними. Систематичний FEC-кодер формує з вихідного блока вихідних символів деяку кількість виправляючих символів, причому комбінація щонайменше деяких з вихідних і виправляючих символів - це кодовані символи, які відправляються по каналу, що представляє вихідний блок. Деякі FEC-коди корисні для ефективного формування точно необхідної кількості виправляючих символів, наприклад, «інформаційні адитивні коди» або «фонтанні коди», і приклади цих кодів включають в себе «коди з ланцюговою реакцією» і «коди з багатостадійною ланцюговою реакцією». Інші FEC-коди, такі як коди РідаСоломона, фактично можуть формувати тільки обмежену кількість виправляючих символів для кожного вихідного блока. Передбачена множина інших способів для перенесення символів, і, хоча нижченаведений опис використовує спосіб пакетів для простоти, він не має намір бути обмежуючим або вичерпним. У контексті нижченаведеного опису, термін «пакет» не має намір бути обмеженим так, щоб означати буквально те, що відправляється як одна одиниця даних. Навпаки, він має намір включати в себе більш широке поняття завдання логічного групування символів і часткових символів, які можуть відправлятися або можуть не відправлятися як одна одиниця даних. Є також форми пошкодження даних, відмінні від втрати символів, наприклад, символи, які при передачі змінюють своє значення або ушкоджуються іншими способами, до яких способи, описані нижче, застосовні в рівній мірі. Таким чином, хоча нижченаведений опис часто описує втрату символів, способи з рівним успіхом застосовуються до інших типів пошкодження і до інших типів FECкодів, крім FEC-кодів із стиранням помилок, таких як FEC-коди з корекцією помилок. Приклад FEC-коду Фіг. 1 - це блок-схема системи 100 зв'язку, яка використовує FEC-кодування з ланцюговою реакцією. У системі 100 зв'язку, вхідний файл 101 або вхідний потік 105 надається в формувач ПО вхідних символів. Формувач ПО вхідних символів формує послідовність з одного або більше вхідних символів (IS(0), IS(l), IS(2),...) з вхідного файлу або потоку, при цьому кожний вхідний символ має значення і позицію (що позначаються на фіг. 1 як ціле число в дужках). Можливі значення для вхідних символів, тобто їх алфавіт, - це типово алфавіт з двох мільйонів символів, так що кожний вхідний символ кодує М бітів вхідного файлу. Значення М, загалом, визначається за допомогою системи 100 зв'язку, але система загального призначення може включати в себе введення розміру символу для формувача ПО вхідних символів так, щоб М могло варіюватися кожний раз. Виведення формувача 110 вхідних надається в кодер 115. Формувач 120 ключів формує ключ для кожного вихідного символу, який повинен формуватися 13 за допомогою код ера 115. Кожний ключ може бути сформований згідно з одним із способів, описаних в Luby І або в Shokrollahi І, або будь-якому порівнянному способу, який забезпечує те, що значна частина ключів, що формуються для одного вхідного файлу або блока даних в потоці, є унікальною, незалежно від того, чи формуються вони за допомогою цього або іншого формувача ключів. Наприклад, формувач 120 ключів може використовувати комбінацію виведення лічильника 125, унікального ідентифікатора 130 потоку і/або виведення випадкового формувача 135, щоб формувати кожний ключ. Виведення формувача 120 надається в код ер 115. В інших прикладах, наприклад, в деяких додатках потокової передачі, набір ключів може бути фіксованим і повторно використаним для кожного блока даних в потоці. У типовому варіанті здійснення кількість ключів, які можуть бути сформовані, диктується за допомогою розрізнення формувача ключів, а не розміру або іншої характеристики вхідного файлу або потоку. Наприклад, якщо, як очікується, введення становить часто порядку тисячі символів або менше, ключове розрізнення може становити 32 біти, забезпечуючи до 4 мільярдів унікальних ключів. Один результат цих відносних чисел полягає в тому, що кодер, який кодує згідно з ключами, може допускати формування 4 мільярдів унікальних вихідних символів для чотирьох тисяч символів введення. На практиці більшість систем зв'язку не повинні втрачати 0,999999 частини символів, так що ніде не потребується формувати порядку 4 мільярдів вихідних символів, і тому кількість можливих ключів може трактуватися як фактично необмежена і не обов'язково повинна повторюватися, і імовірність, що два незалежних вибори ключів захоплять однаковий ключ, є незначно малою. Проте, якщо це сталося з якої-небудь причини, розрізнення формувача ключів може бути збільшене так, що процеси, які використовують ключі, можуть діяти, як якби ключі надавалися нескінченно. З кожного ключа І, що надається за допомогою формувача 120 ключів, кодер 115 формує вихідний символ із значенням В(І) з вхідних символів, що надаються за допомогою формувача вхідних символів. Значення кожного вихідного символу формується на основі його ключа і деякої функції від одного або більше з вхідних символів, що згадуються в даному документі як «асоційовані вхідні символи» вихідного символу або просто його «асоціювання». Як правило, але не завжди, М є ідентичним для вхідних символів і вихідних символів, тобто вони обидва кодують ідентичну кількість бітів. У деяких варіантах здійснення, число К вхідних символів використовується за допомогою кодера для того, щоб вибирати асоціювання. Якщо К не відоме заздалегідь, наприклад, коли введення це потік, і К може варіюватися між кожним блоком в потоці, К може бути просто оцінкою. Значення К також може використовуватися за допомогою кодера 115 для того, щоб виділяти пам'ять під зберігання вхідних символів. 94811 14 Кодер 115 надає вихідні символи в передавальний модуль 140, і формувач 120 ключів надає ключ кожного такого вихідного символу в передавальний модуль 140. Передавальний модуль 140 передає вихідні символи, і, залежно від способу маніпуляції, що використовується, передавальний модуль 140 також може передавати деякі дані про ключі вихідних символів, що передаються, по каналу 145 в приймальний модуль 150. Припускається, що канал 145 є каналом із стиранням, але це необов'язково для належної роботи системи 100 зв'язку. Модулі 140, 145 і 150 можуть бути будь-якими підходящими апаратними компонентами, програмними компонентами, фізичними середовищами або будь-якою комбінацією вищезазначеного доти, доки передавальний модуль 140 виконаний з можливістю передавати вихідні символи і всі необхідні дані про свої ключі в канал 145, а приймальний модуль 150 виконаний з можливістю приймати символи і потенційно деякі дані про свої ключі від каналу 145. Значення К, якщо використовується для того, щоб визначати асоціювання, може відправлятися по каналу 145 або воно може задаватися заздалегідь відповідно до узгодження кодера 115 і декодера 155. Канал 145 може бути каналом реального часу, таким як тракт через Інтернет або широкомовна лінія зв'язку від телевізійного передавального пристрою в телевізійний приймач, або телефонне з'єднання від однієї точки до іншої, або канал 145 може бути каналом з пам'яттю, таким як CD-ROM, накопичувач, веб-вузол тощо. Канал 145 навіть може бути комбінацією каналу реального часу і каналу з пам'яттю, такою як канал, що формується, коли один користувач передає вхідний файл з персонального комп'ютера постачальнику Інтернет-послуг (ISP) по телефонній лінії зв'язку, вхідний файл зберігається на веб-сервері і згодом передається одержувачу по Інтернету. Якщо канал 145 містить пакетну мережу, система 100 зв'язку може не мати можливості допускати, що відносний порядок будь-яких двох або більше пакетів зберігається у шляху через канал 145. Отже, ключ вихідних символів визначається з використанням однієї або більше із схем маніпуляції, що описані вище і не обов'язково визначаються відповідно до порядку, в якому вихідні символи виходять з приймального модуля 150. Приймальний модуль 150 надає вихідні символи в декодер 155, і всі дані, які приймальний модуль 150 приймає про ключі цих вихідних символів, надаються в повторний формувач 160 ключів. Повторний формувач 160 ключів відновлює ключі для вихідних символів, що приймаються, і надає ці ключі в декодер 155. Декодер 155 використовує ключі, що надаються за допомогою повторного формувача 160 ключів, разом з відповідними вихідними символами для того, щоб відновлювати вхідні символи (знов IS(0), IS(l), IS(2), ...). Декодер 155 надає відновлені вхідні символи в повторний збирач 165 вхідних файлів, який формує копію 170 вхідного файлу 101 або копію 175 вхідного потоку 105. 15 Додатки потокової передачі мультимедіа При використанні в додатках потокової передачі мультимедіа, вихідні пакети, що формують вихідний мультимедийньїй потік, іноді збираються в групи, які називаються вихідними блоками. Наприклад, вихідний блок може бути групою вихідних пакетів, які охоплюють тривалість, що фіксується, і, наприклад, код із стиранням Ріда-Соломона може застосовуватися незалежно до цих вихідних блоків, щоб формувати виправляючи пакети, які відправляються разом з первинними вихідними пакетами вихідного блока в приймачі. У передавачі вихідний потік може безперервно секціонуватися на вихідні блоки по мірі того, як вихідні пакети надходять, і виправляючі пакети формуються для кожного вихідного блока і відправляються. Іноді переважно мінімізувати повну крізну затримку, яка додається за допомогою використання FEC-кодів, зокрема, для додатків прямої або інтерактивної потокової передачі, і таким чином іноді переважно, якщо загальна розробка рішення FEC така, що вихідні пакети затримуються як можна менше в передавачі перед відправкою, і всі вихідні і виправляючі пакети для вихідного блока відправляються з мінімально можливою повною затримкою. Також переважно, якщо швидкість FEC-кодованого потоку є максимально плавною, тобто є мінімально можлива мінливість швидкості FEC-кодованого потоку або щонайменше немає посилення мінливості, яка вже існує в первинному вихідному потоці, оскільки це робить використання смуги пропускання FEC-кодованого потоку більш прогнозованим і мінімізує вплив на мережу і на інші можливо конкуруючі потоки. Також переважно, якщо дані, що відправляються в пакетах для вихідного блока, розподіляються максимально рівномірно за періодом, коли пакети відправляються для цього вихідного блока, оскільки це надає кращий захист від втрат пакетів. Також переважно, щоб вихідні блоки складалися таким чином, щоб мінімізувати час на перемикання вмісту і час на зміну вмісту. Також переважно, щоб логіка в приймачі була максимально простою. У приймачі, якщо пакети втрачаються або приймаються з помилками (що може виявлятися і відкидатися, наприклад, з використанням CRCконтролю), то за умови, що прийнято достатньо виправляючих пакетів, виправляючі пакети можуть використовуватися для того, щоб відновлювати втрачені вихідні пакети. У деяких варіантах застосування, пакети додатково поділяються на символи, до яких застосовується FEC-процес. Для деяких FEC-кодів, а саме, кодів Ріда-Соломона, час кодування і декодування стає непрактичним по мірі того, як кількість кодованих символів на вихідний блок зростає, і часто є верхня межа на загальну кількість кодованих символів, які можуть бути сформовані на вихідний блок. Оскільки символи розміщуються в різних робочих даних пакета, це задає доцільну верхню межу на максимальну довжину при кодуванні вихідного блока, а також, звичайно, задає верхню межу на розмір самого вихідного блока. 94811 16 У багатьох додатках, коли захист повинен надаватися протягом тривалого періоду часу або коли швидкість потокової передачі медіа є високою, може бути переважним надавати захист для даних, які перевищують максимальний розмір вихідного блока. У цих випадках застосування вихідних блоків, які коротше максимального розміру вихідного блока, і подальше перемежовування вихідних пакетів з різних вихідних блоків надає рішення, коли вихідні пакети від окремого вихідного блока, що відправляється, розподіляються по великих періодах часу. В інших додатках, коли бажаний невеликий час на перемикання вмісту і коли структура вихідних блоків визначається незалежно від способів перемежовування, бажано використовувати менші вихідні блоки і відправляти їх послідовно спочатку, коли до вмісту здійснюється доступ за допомогою приймача, і потім збільшувати величину перемежовування по мірі того, як потокова передача вмісту продовжується, щоб розподіляти відправку вихідних блоків по більш тривалих інтервалах часу, щоб підвищувати рівень захисту від втрати пакетів. Інша задача полягає в тому, щоб мати можливість декодувати вихідні блоки досить швидко, щоб не відставати від швидкості вихідної потокової передачі, щоб мінімізувати час затримки на декодування, що вводиться за допомогою FEC-декодування, і використовувати тільки невелику частину доступної потужності CPU в приймальному пристрої в будь-який момент часу під час FEC-декодування. Таким чином, бажано використовувати перемежовування вихідних блоків, яке дає можливість розподілу FECдекодування кожного вихідного блока максимально рівномірно у часі і мінімізує час затримки FECдекодування. Різні варіанти здійснення, описані в даному документі, надають одну або більше з цих переваг. Потокова передача і FEC-коди З метою надання захисту FEC вихідного потоку, вихідний потік може бути комбінацією одного або більше логічних потоків, прикладами яких є комбінація RTP-потоку аудіо і RTP-потоку відео, комбінація MIKEY-потоку і RTP-потоку, комбінація двох або більше відеопотоків і комбінація RTCPтрафіку керування і RTP-потоку. У міру того як вихідний потік надходить в передавач в форматі, який, наприклад, є потоком вихідних бітів, потоком вихідних символів або потоком вихідних пакетів, передавач може буферизувати потік у вихідні блоки і формувати виправляючий потік з вихідних блоків. Передавач може планувати і відправляти вихідний потік і виправляючий потік, наприклад, в пакетах, які повинні відправлятися по пакетній мережі. FEC-кодований потік - це комбінований вихідний і виправляючий потік. FEC-приймач приймає FEC-кодований потік, який, можливо, пошкоджений, наприклад, внаслідок втрат або інвертування бітів. FEC-приймач намагається відновлювати первинні вихідні блоки вихідного потоку і планує і робить доступним первинний вихідний потік в приймачі. У багатьох варіантах застосування, структура вихідних блоків визначається разом із структурою базових потоків, наприклад, GOP-структурою і/або 17 структурою кадру відеопотоку за стандартом Н.264 AVC. У деяких з цих варіантів застосування структура вихідних блоків визначається до і/або незалежно від порядку відправки потоку пакетів, причому порядок відправки потоку пакетів може залежати від того, коли і де до потоку здійснюється доступ за допомогою приймачів, щоб приймати потік. У цих варіантах застосування переважно, щоб структура вихідних блоків визначалася таким чином, що кожний вихідний блок містить послідовний набір вихідних пакетів з потоку, щоб забезпечувати мінімізацію часу на перемикання вмісту і часу на зміну вмісту. У деяких варіантах застосування, формування структури вихідних блоків і FEC-кодування потоку переважно виконуються до відправки потоку. Одна причина цього полягає в тому, що потік може відправлятися у множину приймачів, і таким чином формування структури вихідних блоків і FECкодування виконується один раз для всіх приймачів, що дає деякі переваги по масштабованості. Для додатку потокової передачі, передбачено декілька основних параметрів, які є введенням в шаблон того, як використовувати FEC-коди для того, щоб захищати вихідний потік, і декілька ключових показників, які типово важливо оптимізувати. Один можливий ключовий вхідний параметр при розробці структури вихідних блоків - це тривалість вихідного блока. Тривалість вихідного блока для вихідного блока може бути задана як тривалість часу, протягом якого символи, сформовані з цього вихідного блока, повинні відправлятися, якщо вихідні блоки відправляються послідовно, тобто неперемежованими, і якщо вони відправляються на звичайній швидкості, тобто, по суті, на звичайній швидкості відтворення. Альтернативно, тривалість вихідного блока може бути задана так, щоб бути часом відтворення відео, що представляється за допомогою вихідного блока. У деяких випадках ці два визначення співпадають, але вони можуть не співпадати. Проте, для простоти в описі в даному документі використовується тривалість вихідного блока без вказівки того, яке визначення є цільовим, роблячи спрощуюче припущення про те, що ці два визначення співпадають. Фахівцям в даній галузі техніки повинне бути зрозуміло, що способи та процеси, описані в даному документі, належать до будь-якого визначення тривалості вихідного блока, навіть якщо ці два визначення не співпадають, і навіть в деяких випадках вихідний блок може відправлятися набагато швидше, ніж його швидкість відтворення. Крім того, фахівцям в даній галузі техніки повинне бути зрозуміло, що є інші способи вказівки розміру або часу відтворення вихідного блока, наприклад, за допомогою вказівки кількості символів у вихідному блоці і розміру символу для вихідного блока. Період захисту для вихідного блока - це період часу, протягом якого вихідний блок відправляється, незалежно від того, перемежовує чи ні відправка вихідних блоків відправку пакетів з деяких вихідних блоків з відправкою пакетів з інших вихідних блоків. Зазначимо, що період захисту, загалом, дорівнює тривалості вихідного блока, якщо пере 94811 18 межовування вихідних блоків не використовується, але період захисту може бути більш тривалим і іноді істотно більш тривалим, ніж тривалість вихідного блока при використанні перемежовування. Величина захисту для вихідного блока - це кількість виправляючих символів FEC, що відправляються для вихідного блока, виражена як частина або відсоток від кількості вихідних символів у вихідному блоці. Наприклад, якщо величина захисту становить 20%, і є 10000 вихідних символів у вихідному блоці, то є 2000 виправляючих символів, сформованих з вихідного блока. Величина захисту є відносним поняттям, тобто величина захисту для одного вихідного блока може варіюватися залежно від того, звідки відправляється вихідний блок і куди відправляється вихідний блок. Наприклад, вихідний блок може відправлятися з першого сервера в інший сервер з величиною захисту 50%, тоді як цей самий вихідний блок може відправлятися з другого сервера в приймач з величиною захисту 10%. Як тривалість вихідного блока, так і величина захисту на вихідний блок можуть варіюватися від одного вихідного блока до наступного. Наприклад, коли вихідний блок переважно не охоплює визначені вихідні пакети у вихідному потоці, наприклад, коли перший пакет - це останній пакет групи зображень (GOP) у відеопотоці MPEG2, а другий послідовний пакет - це перший пакет наступної GOP, то вихідний блок може бути завершений після першого пакета, і новий вихідний блок початий у другому пакеті. Це дає можливість поєднання FEC-кодованого блока з блоком кодування відео, що може мати множину переваг, включаючи перевагу того, що час затримки приймача або час на перемикання каналів можуть бути мінімізовані внаслідок можливості мінімізації комбінації буферизації відео і FEC-буферизації в приймачі. В інших додатках може бути переважним з множини причин завжди зберігати незмінну тривалість вихідного блока і/або розмір вихідного блока для кожного послідовного вихідного блока. У деяких з нижченаведених описів для простоти припускається, що тривалість вихідного блока і величина захисту є однаковими для кожного подальшого вихідного блока. Для фахівців в даній галузі техніки повинне бути зрозумілим на основі цього розкриття суті винаходу, що це не є обмеженням, оскільки можна легко визначити на основі цього розкриття, як застосовуються процеси та способи, описані в даному документі, коли або величина захисту, або тривалість вихідного блока, або і те, і інше варіюються від одного вихідного блока до наступного, і коли розміри вихідного блока варіюються від одного до наступного. Для спрощення деяких з подальших пояснень, іноді припускається, що вихідні символи первинного потоку надходять на сталій швидкості в передавач, який повинен виконувати формування вихідних блоків і FEC-кодування, і що як тільки FECприймач спочатку робить вихідні символи доступними в приймачі, то подальші вихідні символи робляться доступними за допомогою FEC-приймача на тій самій сталій швидкості, за умови, що в першому вихідному блоці, з якого приймається вихід 19 ний символ, немає втрати вихідних символів, і що в кожному подальшому вихідному блоці втрата кодованих символів становить, найбільше, максимум, можливий для того, щоб забезпечувати успішне FEC-декодування. Це спрощуюче припущення не присутнє при роботі або розробці процесів та описаних нижче способів, і немає наміру обмежувати ці процеси таким припущенням яким-небудь чином, а воно вводиться просто як засіб для спрощення деяких з описів властивостей процесів та способів. Наприклад, для потоків із змінною швидкістю відповідна умова полягає в тому, що вихідні символи робляться доступними за допомогою FEC-приймача на тій самій або практично тій самій швидкості, на якій вони надходять в передавач. У деяких варіантах застосування переважно доставляти декодовані вихідні символи в приймачі у відеопрогравач якнайшвидше, щоб мінімізувати час на перемикання вмісту, і в таких випадках вихідні символи можуть доставлятися в пакетах вихідних блоків. У деяких варіантах застосування бажано розділяти етапи формування вихідних блоків, FEC-кодування і відправки на два або більше різних етапів. Наприклад, як описано нижче, формування вихідних блоків і FEC-кодування можуть виконуватися в одному сервері, і кодований потік потім секціонується на підпотоки, а потім підпотоки відправляються в один або більше розподілених серверів і кешуються локально, і після цього деякі або всі з підпотоків відправляються в приймач від деяких з одного або більше розподілених серверів. Деякі ключові важливі для мінімізації показники включають в себе час затримки в передавачі, який є часом затримки, що вводиться передавачем. Мінімізація часу затримки в передавачі бажана для деяких додатків, таких як пряма потокова передача відео або інтерактивні додатки, такі як відеоконференц-зв'язок. Один аспект загальної розробки для передавача, що допомагає мінімізувати час затримки в передавачі, полягає в тому, щоб відправляти кодовані символи для початкового вихідного блока або блоків для потоку в приймач в послідовному порядку. Інші аспекти розробки, які мінімізують час затримки в передавачі, описуються нижче. Інший важливий показник - цей час на перемикання вмісту. Як показано на фіг. 2, цей час між моментом, коли приймач приєднується або запитує потік, до моменту, коли FEC-приймач перший раз робить доступними вихідні символи з потоку. Загалом, бажано мінімізувати час на перемикання вмісту, оскільки це мінімізує час тим часом, коли до потоку приєднується приймач, і коли потік перший раз стає доступним в приймачі, наприклад, для відтворення відеопотоку. Один важливий аспект мінімізації часу на перемикання вмісту полягає в тому, щоб передавач зберігав первинний порядок відправки кодованих символів для початкових вихідних блоків, але, як описано нижче, є багато інших важливих аспектів розробки, які впливають великим чином на час перемикання вмісту. Час на перемикання вмісту типово містить декілька компонентів. Приклад цих компонентів для 94811 20 потоку, який секціонується на послідовні вихідні блоки, показаний на фіг. ЗА та ЗВ, де перемежовування не використовується. Фіг. ЗА показує один вихідний блок на період захисту, і приклад показує випадок, коли приймач приєднується до потоку на початку вихідного блока. Два компоненти часу на перемикання вмісту в цьому прикладі - це період захисту і час затримки на FEC-декодування. Період захисту приймача для вихідного блока - це час, протягом якого приймач буферизує кодовані символи, що приймаються, з вихідного блока. Зазначимо, що період захисту передавача і період захисту приймача є ідентичними, якщо канал між передавачем і приймачем не має відхилення з точки зору інтервалу часу, що займає те, щоб кожний біт, байт, символ або пакет перемістився від передавача в приймач. Таким чином, на практиці період захисту передавача може відрізнятися від періоду захисту приймача для одного і того самого вихідного блока внаслідок змін синхронізації в мережі при доставці. Для спрощення ілюстрацій, що наводяться тут, припускається, що період захисту передавача і період захисту приймача є ідентичними для кожного вихідного блока (і «період захисту» використовується синонімічно для періоду захисту передавача і періоду захисту приймача), але це не завжди має місце. Іншими словами, є припущення про те, що час доставки в мережі є однаковим для всіх даних. Фахівці в даній галузі техніки, після прочитання цього розкриття суті, можуть здійснювати необхідні зміни в способах та пристроях, описаних в даному документі, щоб враховувати відмінності періодів захисту передавача і приймача внаслідок коливань часу доставки в мережі. Компонент періоду захисту часу на перемикання вмісту є таким, що не виключається, оскільки навіть якщо в першому вихідному блоці немає втрати яких-небудь вихідних символів, як і раніше потрібно затримувати завдання вихідних символів доступними протягом щонайменше періоду захисту, щоб забезпечувати плавну доставку вихідних символів по всіх подальших вихідних символах, коли є втрати кодованих символів у подальших вихідних блоках. Протягом періоду захисту частина, або велика частина, або всі FEC-декодування вихідного блока може здійснюватися одночасно з прийомом кодованих символів. У кінці періоду захисту може бути додаткове FEC-декодування, яке здійснюється до того, як перший вихідний символ вихідного блока доступний з FEC-приймача, і цей період часу позначається як час затримки на FECдекодування на фіг. 3А. Крім цього, навіть після того, як перший вихідний символ доступний, може бути додаткове FEC-декодування, яке здійснюється до того, як другий і подальші вихідні символи вихідного блока доступні. Для простоти це додаткове FEC-декодування не показане на фіг. 3А, і в цьому прикладі припускається, що є достатньо доступних ресурсів CPU для того, щоб декодувати всі вихідні символи після першого на досить високій швидкості. Інший можливий компонент часу на перемикання вмісту може бути часом між тим, коли приймач запитується, щоб приєднуватися до потоку, і 21 коли перші пакети для того потоку надходять в приймач. Ця величина часу може бути змінною і залежати від часу двостороннього поширення між приймачем і одним або більше передавачами пакетів для потоку. Цей компонент часу на перемикання вмісту не описаний детально в даному документі, але фахівцям в даній галузі техніки повинне бути зрозуміло, що іноді це може бути важливим внеском під час перемикання вмісту, який повинен братися до уваги, і що способи і процеси, описані в даному документі, можуть легко модифікуватися, щоб брати до уваги цей потенційний внесок під час перемикання вмісту. Фіг. 3В показує дві потенційні криві використання CPU для FEC-декодування, які можуть відповідати прикладу, показаному на фіг. 3А. Для однієї з двох кривих, показаних на фіг. 3В, використання CPU, що застосовується для FECдекодування, є однаковим в кожній точці у часі, тобто використання CPU розподіляється рівномірно. Це бажана крива використання CPU, оскільки вона очевидно використовує однакову величину ресурсів CPU в кожній точці у часі і мінімізує максимальні ресурси CPU за умови, що однакова величина повних ресурсів CPU потрібна для того, щоб декодувати весь вихідний блок. Для іншої з двох кривих, показаних на фіг. 3В, використання CPU, що застосовується для FEC-декодування, не є однаковим в кожній точці у часі, і зокрема, використання CPU при і відразу після закінчення прийому кодованих символів для вихідного блока значно вище, ніж в інші моменти часу. Це небажана крива використання CPU, оскільки використання ресурсів CPU дає викид у визначених точках у часі, які можуть бути точками у часі, коли інші процеси, такі як відеопрогравач, також відправляють запити в CPU і тим самим підвищують можливість виникнення, наприклад, збою при відтворенні відеопотоку. Таким чином, розробка рішення FEC по захисту потоків полягає в тому, щоб надавати рішення, в якому FEC-декодер використовує CPU максимально плавно і рівномірно у часі. Як приклад, розрахункові критерії можуть полягати в тому, що максимальне використання CPU в будь-який момент часу в процесі FEC-декодування при найгіршому випадку втрати кодованих символів знаходиться нижче визначеного порога, наприклад, використовує найбільше 10% потужності CPU в кожному інтервалі 100 мілісекунд. У деяких додатках потокової передачі, коли приймач приєднується до потоку в середині вихідного блока, час на перемикання вмісту може бути так само малим, як тривалість вихідного блока плюс час затримки на декодування, коли немає втрати вихідних символів з того першого часткового вихідного блока, доки первинний порядок відправки і швидкість доставки вихідних пакетів зберігаються на початковому рівні передавачем. В інших додатках потокової передачі відеопередавач завжди починає відправку потоку в приймач з початку GOP, причому переважно початок вихідного блока поєднується з початком GOP. Таким чином, щоб мінімізувати затримку перемикання вмісту, бажано, щоб передавач зберігав первин 94811 22 ний порядок відправки вихідних символів для початкових вихідних блоків. Рішення по потоковій передачі FEC також може використовуватися для того, щоб мінімізувати крізний час затримки на FEC, який для додатку прямої потокової передачі становить повний час затримки для сценарію найгіршого випадку, що вводиться за рахунок використання FEC, між моментом, коли вихідний пакет готовий до потокової передачі в передавачі до застосування FECкодування, і моментом, коли він доступний для відтворення в приймачі, після застосування FECдекодування. Для інших типів додатків потокової передачі, таких як потокова передача по запиту або потокова передача вмісту по списку відтворення, крізний час затримки на FEC не є основною проблемою. У додатках потокової передачі всіх типів, важливо мінімізувати час на перемикання вмісту і час на зміну вмісту. Разом з тим важливо мінімізувати швидкість відправки потоку, тобто обмежувати швидкість відправки так, щоб вона завжди трохи перевищувала швидкість потокової передачі вмісту, в тому числі під час перемикання вмісту і змін вмісту. Рішення по потоковій передачі FEC також може використовуватися для того, щоб мінімізувати коливання швидкості відправки при використанні FEC. Одна перевага цього полягає в тому, що в пакетних мережах потоки з коливною швидкістю відправки більш схильні до втрати пакетів внаслідок перевантаження або переповнення буфера, коли піки швидкості відправки потоку співпадають з піками іншого трафіку в точках мережі з обмеженою пропускною здатністю. Як мінімум, коливання швидкості FEC-кодованого потоку повинні бути не гірше коливань швидкості первинного вихідного потоку, і переважно, чим більший захист FEC застосовується до первинного вихідного потоку, тим коливання швидкості FEC-кодованого потоку стають меншими. Як окремий випадок, якщо первинний потік відправляється на постійній швидкості, переважно, щоб FEC-кодований потік відправлявся на швидкості, яка максимально можливо близька до постійної. Властивість, яка полягає в тому, що час, коли останній кодований символ для кожного подальшого вихідного блока приймається, розподіляється у часі максимально можливо рівномірно, є бажаною властивістю. Час, коли останній кодований символ приймається для вихідного блока, є часом, коли вся інформація для декодування вихідного блока доступна FEC-декодеру, і типово є часом в умовах втрат по сценарію найгіршого випадку, який FEC-декодер повинен працювати з найбільшою інтенсивністю, щоб завершувати декодування в рамках заданого бюджету часу затримки на декодування. Таким чином, рівномірний розподіл прийому останнього кодованого символу для вихідних блоків дає можливість більш плавного використання CPU для FEC-декодування. Рішення по потоковій передачі FEC повинно надавати максимально просту логіку в FECприймачі. Це важливо в багатьох контекстах, оскільки FEC-приймач може бути вбудований в при 23 стрій з обмеженими обчислювальними характеристиками, характеристиками по пам'яті та іншими ресурсами. Крім того, в деяких випадках може бути значна втрата або пошкодження символів при передачі, і, таким чином, FEC-приймачу, ймовірно, доведеться відновлюватися після сценаріїв фатальної втрати або пошкоджень, при цьому, коли умови поліпшуються, є невеликий або взагалі відсутній контекст, щоб розуміти, з якого моменту в потоці продовжується прийом. Таким чином, чим простіша і більш відмовостійка логіка в FECприймачі, тим швидше і надійніше FEC-приймач зможе починати відновлення і завдання знов доступними вихідних символів вихідного потоку з прийому FEC-кодованого потоку. Виправляючі пакети для вихідного блока можуть відправлятися до, після або змішаними з вихідними пакетами для вихідного блока, і, як пояснюється в даному документі, різні стратегії мають свої переваги. Деякі з усіх бажаних ознак рішення по потоковій передачі FEC включають в себе: 1. Невеликий час на перемикання вмісту. 2. Невеликий час на зміну вмісту. 3. Швидкість відправки потоків завжди повинна бути обмежена, тобто трохи перевищувати швидкість передачі потоку вмісту. 4. Швидкість відправки потоків повинна бути плавною і повинна бути щонайменше настільки плавною, що і швидкість передачі потоку вмісту. 5. Коли FEC-кодування використовується, формування вихідних блоків і FEC-кодування можуть виконуватися для потоку, і ідентичний кодований потік може відправлятися в можливо різні моменти часу у множину приймачів. 6. Коли FEC-кодування використовується, захист від втрати пакетів повинен інтенсивно використовувати невелику тривалість вихідного блока з мінімальними необхідними величинами захисту, зокрема, коли втрати є трохи пульсуючими за характером. 7. Коли FEC-кодування використовується, вихідні блоки повинні містити суміжні частини потоку. 8. При FEC-кодуванні для додатків прямої потокової передачі, крізний час затримки на FEC повинен бути невеликим. 9. Коли FEC-кодування використовується, FEC-декодування повинне плавно розподіляти використання CPU. Основна відправка FEC-кодованого потоку У цьому розділі описуються основні способи та процеси для передавача, щоб розподіляти за часом відправку пакетів потоку, який може бути FECкодований. Нехай k - кількість вихідних символів у вихідному блоці, Т - тривалість вихідного блока для вихідного блока, р - величина захисту, що виражається як частка, і, таким чином, р*к виправляючих символів повинно відправлятися для вихідного блока. Значення k, T та р можуть визначатися динамічно, в міру того як кожний вихідний блок формується, і, таким чином, значення k та Т для вихідного блока можуть бути відомі процесу формування вихідних блоків, тільки коли більшість або всі вихідні символи для того вихідного блока надійшли в процес, і значення р може 94811 24 бути визначене після того, як всі вихідні символи для вихідного блока надійшли в процес формування вихідних блоків, або за допомогою окремого процесу. Крім того, процес формування вихідних блоків може варіювати розмір символу для різних вихідних блоків. Таким чином, багато які або всі ці параметри для конкретного вихідного блока можуть бути добре відомі процесу формування вихідних блоків при прийомі даних для цього вихідного блока. Наступний процес описує основний передавач, який не використовує перемежовування. Для простоти для цього основного передавача припускається, що процес формування вихідних блоків вже застосовувався до потоку, і що він секціонований на послідовні вихідні блоки, при цьому кожний такий вихідний блок містить k вихідних символів і з тривалістю вихідного блока в Т секунд, і що для кожного такого вихідного блока р*к виправляючих символів вже сформовані. Коли приймач запитує потік, що починається в конкретному вихідному блоці (або потік проактивно відправляється з явним запитом на початок від приймача), основний передавач починає відправку (1+р)*к кодованих символів для вихідного блока, що запитується, за період в Т секунд і після цього відправляє кодовані символи для наступного вихідного блока після вихідного блока, що запитується, тощо. Основний передавач має наступні властивості: 1. Період захисту дорівнює Т, що дорівнює тривалості вихідного блока. 2. Символи, що відправляються для вихідного блока, розподіляються рівномірно за період Т секунд. Це має на увазі, що рівень захисту, який надається проти втрат, коли є перебій в передачі пакета фіксованої тривалості, не залежить від того, коли перебій виникає під час передачі символів, що бажано. 3. Передавач не вводить коливання в загальну швидкість відправки символів. Зокрема, якщо первинна швидкість відправки вихідних символів є постійною, то швидкість відправки всіх символів як і раніше є постійною, а якщо первинна швидкість надходження вихідних символів в передавачі є змінною, то щонайменше постійна швидкість відправки символів на вихідний блок гасить коливання. Це є бажаною властивістю. 4. Час на перемикання вмісту може становити всього Т. Це має на увазі мінімальну буферизацію (1+р)*к символів (за умови, що всі вихідні блоки містять k вихідних символів), що є мінімально можливим протягом даного періоду захисту і таким чином бажане. Одна властивість, яка має основний передавач, полягає в тому, що час на перемикання вмісту становить щонайменше час протягом періоду захисту, і період захисту напряму зв'язаний з якістю захисту від втрат при передачі пакетів. Таким чином, іноді повинен бути компроміс між періодом захисту і часом на перемикання вмісту. Наприклад, бажано мати час на перемикання вмісту менше однієї секунди, при цьому також бажано мати періоди захисту, які охоплюють декілька секунд, щоб надавати кращий захист від тимчасових пе 25 ребоїв у роботі мережі або інших типів проблем нестійкості мережі, які викликають втрату при передачі пакетів, яка може тривати порядку десятків або сотень мілісекунд, а в деяких випадках і цілих секунд, при цьому одночасно використовуючи досить невелику величину захисту, наприклад, 10%. Повинне бути бажаним мати можливість визначати період захисту, який набагато більше, ніж час на перемикання вмісту, і це одна з багатьох переваг, які надають способи перемежовування, описані в наступному розділі. Перемежовування потоків Цей розділ описує нові способи та процеси обробки потоку даних і застосування різних часових затримок до різних частин потоку даних таким чином, щоб деякі частини затримувалися більше в процесі відправки, ніж інші частини. Одним з більш важливих аспектів цих способів та процесів є засіб для динамічного регулювання величин затримки, що викликається в різних частинах потоку по мірі того, як потік даних відправляється. Часто переважно суміщати вихідні блоки із структурою групи зображень (GOP) або іншою структурою кадру відеопотоку, щоб мінімізувати час на перемикання вмісту і надавати кращий захист потоку. У деяких додатках бажано, щоб процес перемежовування міг здійснюватися незалежно від процесу формування вихідних блоків, можливо, що виконується в інший час або можливо виконується в іншому місці. У деяких випадках, можливо, бажаний процес перемежовування, наприклад, щоб розподіляти помилки пакетної передачі більш рівномірно по потоку, навіть якщо процес формування вихідних блоків не використовується, наприклад, оскільки не використовується FEC-кодування. Способи, описані в даному документі, застосовуються, навіть коли формування вихідних блоків і FEC-кодування не використовується, як повинні визнавати фахівці в даній галузі техніки. У деяких випадках можуть бути переваги надання можливості передавачу перемежовувати відправку символів з різних вихідних блоків так, щоб символи для кожного вихідного блока могли розподілятися по більш тривалому періоду захисту, ніж тривалість вихідного блока. Одна причина для цього полягає в тому, що надається кращий захист від втрат з часовою залежністю (наприклад, втрат пакетів), тобто менша величина захисту потрібна для того, щоб надавати захист від втрат пакетів фіксованої тривалості, оскільки період захисту для вихідного блока зростає. Хоча тривалість вихідного блока може складати t секунд, необхідний період захисту для вихідного блока може становити р секунд, де p»t. Інші бажані властивості передавача, який використовує перемежовування, включають в себе (1) вихідні пакети відправляються в своєму первинному порядку в рамках вихідного блока, і (2) час, коли останній кодований символ для кожного подальшого вихідного блока приймається, розподіляється у часі максимально можливо рівномірно. При використанні FEC-кодування вводяться способи, які статично перемежовують відправку кодованих символів для вихідних блоків, і вво 94811 26 дяться способи, які динамічно регулюють величину перемежовування по мірі того, як потік відправляється, типово з невеликим перемежовуванням або без перемежовування на початку відправки потоку і тим самим з періодами захисту, приблизно рівними тривалості вихідного блока, і плавно ввівши все більшу величину перемежовування по мірі того, як продовжується відправка потоку, і тим самим періоди захисту зростають так, щоб бути набагато більш тривалими, ніж тривалість вихідного блока. Це дає можливість мінімізації часу на перемикання вмісту в приймачі, при цьому в той самий час все більше захисту від втрат пакетів або пошкодження досягається по мірі того, як продовжується відправка. Інша перевага описаних способів полягає в можливості поступово захищати від постійно зростаючого порушення синхронізації в мережі по мірі того, як продовжується відправка потоку. Щоб спрощувати нижченаведений опис, припускається, що процеси формування вихідних блоків і FEC-кодування здійснюються до відправки потоку. Це не обмеження способів, оскільки фахівці в даній галузі техніки повинні визнавати, що процеси формування вихідних блоків і виконання FEC-кодування для цих вихідних блоків і відправки потоків, описані нижче, можуть виконуватися одночасно, і в деяких випадках це є переважним. Крім того, для деяких додатків, формування вихідних блоків, процес FEC-кодування і способи, описані нижче для відправки потоків, що перемежовується, можуть бути динамічно взаємозалежними, тобто те, як вихідні блоки формуються і FECкодуються, може залежати в деяких випадках від стратегії відправки потоку. Стрічковий спосіб відправки потоку Щоб описувати нові способи перемежовування, корисно вводити наступний стрічковий спосіб відправки потоку. Фіг. 4 - це ілюстративне креслення потоку вмісту, для якого вже визначена структура вихідних блоків. Для кожного вихідного блока 405(1), 405(2), ..., ширина 410(1), 410(2), ..., показує тривалість відтворення вмісту цього вихідного блока, а висота кожного вихідного блока 415(1), 415(2), показує середню швидкість відтворення кожного вихідного блока потоку вмісту, причому в цьому прикладі різні вихідні блоки мають різні швидкості відтворення. Фіг. 5 показує відповідну структуру кодованих блоків, яка відповідає фіг. 4, тобто FEC-кодування застосоване до кожного вихідного блока, щоб формувати додаткові виправляючі дані 510(1), 510(2), ..., для кожного вихідного блока, щоб формувати кодовані блоки. Висота 515(1), 515(2), ..., для 510(1), 510(2), ..., вказує обсяг додаткових виправляючих даних, що формуються для кожного вихідного блока в кожному кодованому блоці, тобто якщо кодований блок відправляється протягом такої самої тривалості, як відповідний вихідний блок, то висота вказує середню швидкість відправки кодованого вихідного блока. Це креслення є тільки ілюстративним, а не обмежуючим, оскільки, наприклад, величина виправляючих даних, сформованих для кожного кодованого блока, може значно перевищувати величину, що відправляється 27 для кожного кодованого блока, і величина, що відправляється для кожного кодованого блока, може варіюватися від приймача до приймача. Крім того, фіг. 5 не має наміру пропонувати представлення упорядкування вихідних і виправляючих символів в рамках кодованого вихідного блока. Фіг. 6 - це ілюстративне креслення, що показує час на перемикання вмісту, що зазнається на приймачі, відповідного базовому способу відправки. Деякі з компонентів часу 605 на перемикання вмісту містять час 610, який у приймача вимагає прийом достатніх даних з першого кодованого блока потоку для того, щоб декодувати перший вихідний блок, час, який у приймача вимагає декодування першого вихідного блока з частин першого кодованого блока 620, що приймаються, і час 630 буфера резервування, зарезервованого для поглинання порушення синхронізації в мережі, змін тривалості вихідного блока і часу декодування вихідних блоків з частин кодованих блоків, що приймаються, під час прийому потоку. Описаний стрічковий спосіб відправки потоків, але фахівцям в даній галузі техніки повинне бути зрозуміло, що є багато еквівалентних описів, які формують аналогічні способи, і різновидів цього опису, які формують різновиди способів, описаних тут. Фіг. 7 показує приклад стрічкового способу, що відповідає структурі кодованих блоків, показаній на фіг. 5. У стрічковому способі відправка потоку даних вказується за допомогою представлення потоку, який повинен відправлятися, як стрічка 705, де кожна позиція 710 вздовж Х-осі стрічки відповідає різній точці у часі в структурі кодованих блоків, і де висота стрічки завжди незмінна, наприклад, номінально висотою в одиницю незалежно від швидкості кодованого вихідного блока в цій точці часу в стрічці. Відправка потоку, що представляється за допомогою стрічки, може вказуватися за допомогою лінії 720(1), 720(2), що переміщається, яка йде зверху стрічки 725 до низу стрічки 730. В одному представленні, переміщення лінії 720(1), 720(2) у часі представляє порядок відправки даних з кодованих блоків потоку. Кожна точка в стрічці 740(1), 740(2),..., представляє фрагмент потокових даних, який повинен відправлятися, наприклад, кожна точка може представляти пакет кодованих символів для кодованого блока, або кожна точка може представляти окремий кодований символ для кодованого блока. Точки, які знаходяться всередині ділянки, яка відповідає кодованому блока 750(1), 750(2), ..., представляють дані, які асоційовані з цим кодованим блоком. Процес відправки згідно із стрічковим способом відправки потоків представляється за допомогою переміщення лінії 720(1), 720(2) через стрічку у часі по мірі того, як потік відправляється, і кожний раз, коли лінія проходить через точку, дані потоку, які відповідають цій точці, відправляються. Фіг. 7 показує лінію в два різних моменти часу в процесі відправки, де лінія 720(1) є своєю конфігурацією в перший момент часу, коли і лінія 720(2) є своєю конфігурацією у другий момент часу. Таким чином, процес відправки відправляє всі дані, асоційовані з точками всередині ділянки, обмеженої за допомогою 720(1), 720(2), 725 та 730, протягом 94811 28 інтервалу часу між першим моментом часу і другим моментом часу. Розподіл точок в рамках кожного кодованого блока переважно рівномірно розподіляється в рамках стрічкової ділянки для цього кодованого блока згідно з їх ваговим коефіцієнтом, наприклад, розподіляється довільно або розподіляється псевдовипадково, або розподіляється детерміновано за допомогою процесу, який забезпечує те, що точки розподіляються рівномірно згідно з ваговим коефіцієнтом кожної точки, де ваговий коефіцієнт точки - це обсяг даних, що представляється за допомогою цієї точки. Як описано вище, лінія 720 є прямою, але фахівцям в даній галузі техніки повинне бути зрозуміло, що є багато варіантів, наприклад, лінія може бути зігненою або містити послідовність послідовних лінійних сегментів, і лінія може змінювати свою форму по мірі того, як вона переміщається під час процесу відправки. Також є інші варіанти способу стрічкової відправки, в тому числі представлення стрічки так, що стрічка не має однакову висоту, а замість цього її висота варіюється згідно із швидкістю потоку в цій позиції 710 стрічки. Передбачені різні способи завдання переміщення лінії по стрічці під час процесу відправки, як детальніше описано нижче. Способи статичного перемежовування Стрічковий спосіб відправки потоків може використовуватися для того, щоб досягати статичного перемежовування будь-якої глибини для будьякого типу потоку вмісту або потоку кодованого вмісту незалежно від того, використовується чи ні FEC-кодування, і використовується чи ні структура вихідних блоків. Як ілюстрація, припускається, що структура вихідних блоків вже задана, і що використовується FEC-кодування. Один спосіб досягнення статичного перемежовування даної величини з використанням стрічкового способу відправки потоків описується як приклад з посиланням на фіг. 7. У цьому прикладі кожний кодований блок перемежовується на кількість часу D з іншими сусідніми кодованими блоками, тобто глибина перемежовування дорівнює D. В цьому прикладі, при запиті потоку приймач передає позицію X і значення для D. Потім, процес відправки в передавачі описується за допомогою конфігурування лінії 720 так, що спочатку лінія 720 перетинає нижню частину стрічки 730 в позиції XD, спочатку лінія 720 перетинає верхню частину стрічки 725 в позиції X, і потім процес відправки переміщує лінію 720 уперед у часі на такій самій швидкості, як швидкість відтворення потоку, тобто у час t після початку процесу відправки лінія 720 перемістилася таким чином, що вона перетинає нижню частину стрічки 730 в позиції X-D+t, і лінія 720 перетинає верхню частину стрічки 725 в позиції X+t. У цьому описі способу статичного перемежовування, якщо спосіб використовується для відправки нового потоку, що запитується в приймач, то є переважним, щоб X знаходилося в позиції в потоці, де відтворення повинно починатися в приймачі, наприклад, X - це позиція початку кодованого блока, або X - це позиція початку GOP у відеопотоці, і початок кодованого блока суміщений з поча 29 тком GOP. Крім того, в цих випадках для передавача переважно взагалі не відправляти дані до позиції X вздовж стрічки в приймач, оскільки, загалом, приймач повинен приймати тільки частину кодованих блоків і найбільш ймовірно недостатньо повністю декодувати кодовані блоки, що частково приймаються. Фіг. 8 - це ілюстративне креслення, яке ілюструє форму потоку, що відправляється, коли передавач використовує вищеописаний спосіб статичного перемежовування. У цьому випадку спосіб статичного перемежовування застосовується до стрічки, показаної на фіг. 7, яка відповідає кодованому потоку, показаному на фіг. 5. У цьому прикладі приймач вказує значення X як позицію початку першого кодованого блока 750(1) на фіг. 7, і, таким чином, в цьому прикладі немає даних, які повинні відправлятися, тобто вздовж стрічки до позиції X. В цьому прикладі приймач також вказує значення для D, яке може бути таким значенням, як 10 секунд. Результуючий потік, який відправляється за допомогою передавача згідно з цим процесом, виглядає так, як показано на фіг. 8, де ділянка 850(1), 850(2),..., є такою самою, як ділянка 405(1) плюс 510(1), 405(2) плюс 510(2), ..., за фіг. 5, відповідно. Зазначимо, що швидкість відправки, як показано на фіг. 8, є згладженою версією швидкості вихідного вмісту, як показано на фіг. 5. Фіг. 9 - це ілюстративне креслення, яке показує час на перемикання вмісту, що зазнається приймачем, відповідно до способу статичного перемежовування, описаного вище. Деякі з компонентів часу 905 на перемикання вмісту містять час 910, який приймачу потрібний, щоб приймати достатньо з першого кодованого блока потоку для декодування першого вихідного блока, який є сумою тривалості вихідного блока і глибини перемежовування D, час, який потрібний приймачу, щоб декодувати перший вихідний блок з частин першого кодованого блока 920, що приймаються, і час 930 буфера резервування, зарезервованого для очікуваної затримки через порушення синхронізації в мережі, змін тривалості вихідного блока і часу декодування вихідних блоків з частин кодованих блоків, що приймаються, під час прийому потоку. Зазначимо, що, оскільки період захисту, який в цьому випадку складає тривалість вихідного блока плюс глибина перемежовування D, може бути набагато більшим, ніж тривалість вихідного блока, час 905 на перемикання вмісту може бути набагато більшим, ніж тривалість вихідного блока, при використанні цього описаного способу. Способи динамічного перемежовування Стрічковий спосіб відправки потоків може використовуватися для того, щоб досягати динамічного перемежовування в будь-якому темпі будьякої глибини перемежовування для будь-якого типу потоку вмісту або потоку кодованого вмісту незалежно від того, використовується чи ні FECкодування і використовується чи ні структура вихідних блоків. Як ілюстрація, припускається, що структура вихідних блоків вже задана, і що використовується FEC-кодування. Один спосіб досягнення динамічного перемежовування, що починається при відсутності пере 94811 30 межовування і йде аж до даної глибини перемежовування з використанням стрічкового способу відправки потоків, описаний як приклад з посиланням на фіг. 7. У типовому використанні цього способу перший кодований блок відправляється з невеликим перемежовуванням, і потім поступово у часі подальші кодовані блоки плавно перемежовуються все більше доти, доки глибина перемежовування D не досягається з іншими сусідніми кодованими блоками. Інше використання цього способу також розкривається нижче, і як зрозуміло фахівцям в даній галузі техніки, також є множина інших різновидів. При цьому зразковому способі вираження параметрів для способу, при запиті потоку приймач передає початкову верхню позицію UL для лінії 720, початкову нижню позицію LI для лінії 720, кінцеву верхню позицію UF для лінії 720, кінцеву нижню позицію LF для лінії 720 і значення часу Т. Для простоти далі припускається, що UF>UI, LF>LI, UF>LF, UI>LI, T>0. Як правило, переважно мати UF>UI+T и LF>LI+T, щоб забезпечувати те, що дані в приймачі завжди доступні при необхідності. Як пояснюється в прикладах нижче, ці значення для UF, UI, LF, LI та Т можуть давати можливість плавного збільшення буфера резервування вмісту в приймачі, оскільки перемежовування динамічно регулюється. Спосіб відправки в передавачі реалізовує стрічковий спосіб з використанням параметрів LI, UI, LF, UF та Т таким чином. По-перше, лінія 720 за фіг. 7 спочатку сконфігурована під час відправки t=0 так, що спочатку лінія 720 перетинає нижню частину стрічки 730 в позиції LI, і спочатку лінія 720 перетинає верхню частину стрічки 725 в позиції UI, потім протягом часу відправки від t=0 до t=T лінія 720 переміщається по стрічці так, що у час t лінія 720 перетинає нижню частину стрічки 730 в позиції t*(LF-LI)/T+LI, і у час t лінія 720 перетинає верхню частину стрічки 725 в позиції t*(UFUI)/T+UI. Потім, для всіх часів відправки t>T, лінія 720 переміщається через стрічку так, що у час t лінія 720 перетинає нижню частину стрічки 730 в позиції t-T+LF, і у час t лінія 720 перетинає верхню частину стрічки 725 в позиції t-T+UF, тобто для t>T перемежовування є статичним, причому використовується глибина перемежовування D=UF-LF. Способи динамічного перемежовування для нових потоків, що запитуються Одне зразкове застосування способу динамічного перемежовування полягає в тому, щоб відправляти новий потік, що запитується, в приймач. Як приклад, як показано на фіг. 10, всі вихідні значення можуть бути задані рівними однаковому значенню I=UI=LI, тобто спочатку немає перемежовування, і для позиції S, в якій приймач повинен починати відтворення потоку вмісту, задовольняється S=I. Це забезпечує те, що приймач відправив всю стрічку вмісту з позиції S і далі. Як показано на фіг. 10, переважно S=UI=LI, де S - це позиція в потоці вмісту, в якій він може відтворюватися, наприклад, S - це початок кодованого блока, початок якого суміщений з початком GOP. Крім того, переважно, що T
ДивитисяДодаткова інформація
Назва патенту англійськоюDynamically interleaving steams and delivery based on subprotocols
Автори англійськоюLuby, Michael, Pakzad, Payam, Watson, Mark, Vicisano, Lorenzo, Clish, Jourdan, J.
Назва патенту російськоюДинамическое перемежевание потоков и доставка на основе подпотоков
Автори російськоюЛуби Майкл, Пакзад Паям, Уотсон Марк, Вичизано Лоренцо, Клиш Джордан Дж.
МПК / Мітки
МПК: H03M 7/00, H03M 13/27
Мітки: підпотоків, перемежовування, потоків, основі, доставка, динамічне
Код посилання
<a href="https://ua.patents.su/26-94811-dinamichne-peremezhovuvannya-potokiv-i-dostavka-na-osnovi-pidpotokiv.html" target="_blank" rel="follow" title="База патентів України">Динамічне перемежовування потоків і доставка на основі підпотоків</a>
Попередній патент: Спосіб електричної очистки діелектричних рідин
Наступний патент: Спосіб доклінічної діагностики запальної реакції у породіль після повторного кесаревого розтину
Випадковий патент: Напівпровідниковий резонатор нвч з електронним керуванням