УРОВЕНЬ ТЕХНИКИ
Носители на цифровых многофункциональных дисках высокого разрешения и соответствующие проигрыватели становятся все более популярными и широко используются. Так как все больше производителей выходят на этот рынок, конкуренция возрастает, вызывая тенденцию к снижению роста цен. В этой среде ценообразования программное обеспечение, исполняемое в HD-DVD проигрывателях, обычно исполняется на относительно недорогой потребительской аппаратуре.
Преобразование HD-DVD контента и стилевой разметки в осязаемую форму для визуализации является дорогостоящим. Обычно приемлемой целью для скорости воспроизведения для HD-DVD разметки является примерно 24 кадра в секунду для приемлемого пользовательского восприятия. Обычные способы преобразования и визуализации HD-DVD разметки могут столкнуться с трудностями при попытке достижения этой скорости воспроизведения при выполнении задач, требующих большого объема вычислений, на дешевой потребительской аппаратуре.
РАСКРЫТИЕ ИЗОБРЕТЕНИЯ
В настоящем документе описаны системы, способы и/или технические средства («инструменты») для оптимизации выполнения временной разметки цифрового многофункционального диска высокого разрешения (HD-DVD). Инструменты могут принимать временную разметку, считанную с HD-DVD диска, и оптимизировать обработку временной разметки, используя одну или более стратегий оптимизации, описанных в настоящем документе.
Настоящее раскрытие изобретения направлено на то, чтобы ввести в упрощенной форме набор понятий, которые далее будут описаны ниже в подробном описании. Настоящее раскрытие изобретения не предназначено для того, чтобы определять ключевые или существенные признаки заявленного объекта, и не предназначено, чтобы использоваться в качестве основания при определении объема заявленного объекта изобретения. Термин «инструменты», например, может относиться к системе(ам), способу(ам), машиночитаемым командам и/или техническим средствам, как допускается вышеуказанным контекстом и на протяжении всего документа.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Инструменты, относящиеся к оптимизации выполнения временной разметки HD-DVD, описаны в связи со следующими чертежами. Одни и те же ссылочные позиции используются во всем описании и на всех чертежах для обозначения одинаковых компонентов и признаков. Первая цифра в ссылочной позиции указывает на чертеж, на котором эта ссылочная позиция указана впервые.
Фиг.1 представляет блок-схему операционных сред для оптимизации выполнения временной разметки HD-DVD.
Фиг.2 представляет блок-схему дополнительных аспектов механизма представления и временной разметки.
Фиг.3 представляет блок-схему аспектов администратора ХРАТН выражений и стратегий для оптимизации обработки временной разметки.
Фиг.4 представляет блок-схему потоков данных и процессов для обработки временной разметки.
Фиг.5 представляет блок-схему дополнительных аспектов потоков данных и процессов, показанных на Фиг.4.
Фиг.6 представляет блок-схему компонентов и потоков процессов, относящихся к стратегиям оптимизации, включающим в себя предварительный анализ и предварительные вычисления некоторых ХРАТН выражений.
Фиг.7 представляет блок-схему компонентов и потоков, относящихся к оптимизации событийно-управляемых выражений.
Фиг.8 представляет блок-схему потоков процесса для оптимизации обработки событийно-зависимых выражений.
Фиг.9 представляет блок-схему способов оптимизации, использующих конечные автоматы.
Фиг.10 представляет блок-схему компонентов и потоков, относящихся к оптимизации обработки временной разметки с использованием совместно используемого пула памяти.
Фиг.11 представляет блок-схему способов оптимизации, связанных с использованием планировщиков для уменьшения временных обходов дерева.
Детальное описание
Общий обзор
Ниже описаны инструменты, способные выполнять и/или поддерживать многие способы и процессы. Нижеследующее описание описывает примерные пути, которыми инструменты могут оптимизировать выполнение временной разметки HD-DVD. Это описание также описывает другие способы и/или процессы, которые могут выполнять инструменты.
Фиг.1 иллюстрирует операционные среды 100 для оптимизации выполнения временной разметки HD-DVD. Операционные среды 100 могут позволить одному или нескольким пользователям 102 проигрывать один или более HD-DVD дисков 104. Эти HD-DVD диски 104 могут включать в себя один или более машиночитаемых компонентов программного обеспечения. Эти компоненты могут включать в себя, например, один или более файлов 106 разметки. Файлы 106 разметки могут быть выполнены как описательный язык на основании XML и могут включать в себя разные словари или компоненты разметки.
Примеры файлов разметки могут содержать, по меньшей мере, разметку 108 контента, стилевую разметку 110 и временную разметку 112. Разметка 108 контента содержится внутри <тела> раздела данного размеченного документа и описывает общий план структуры объектов или элементов, определенных внутри разметки. Таблица 1, представленная ниже, иллюстрирует древовидную структуру примера элементов разметки контента HD-DVD.
Таблица 1
Стилевая разметка 110 представляет собой словарь, который описывает, как объекты или элементы могут быть отформатированы. Часть 110 стилевой разметки может включать в себя XML словарь, который описывает как элементы, которые включены в состав части 108 разметки контента, должны появляться, чтобы быть представленными пользователю. Размещенная раздельно часть разметки контента может точно устанавливать, какие элементы визуализированы пользователю; часть стилевой разметки может точно устанавливать, как эти элементы визуализированы пользователю.
Временная разметка 112 представляет собой словарь, который описывает, как контент может быть изменен во времени и через взаимодействие с пользователем. HD-DVD временная разметка, как описано в настоящем документе, представляет собой подмножество SMIL языка промышленного стандарта, но добавляет расширения, которые позволяют SMIL языку быть включенным вне раздела <тело> размеченного документа. Например, временная разметка, описанная в настоящем документе, дополняет специальный временной контейнер, называемый «сигнал», не определяемый SMIL, который определяет элементы в размеченном документе, к которым применяется свойство анимации.
Часть разметки контента, часть стилевой разметки и часть временной разметки могут быть осуществлены на декларативном языке программирования. Однако часть 113 скрипта может быть реализована в императивном словаре программирования, который вызывает недетерминистические изменения в стилевой разметке во времени.
Взятые в целом, разметка 108 контента, стилевая разметка 110 и временная разметка 112 определяют объектную модель документа (DOM) 115. DOM 115 может быть реализована как древовидная структура данных с использованием XML словаря. DOM может включать в себя множество отдельных элементов разметки, указанных в общем виде на Фиг.2 в 117. Таблица 1 выше описывает наборы допустимых комбинаций родительско-дочерних элементов, обеспечивающих конкретные примеры DOM состояний 115.
Фиг.1 показывает два примера элементов разметки на 117а и 117n. Однако реализации DOM могут включать в себя произвольное число элементов 204, и DOM дерево может принимать любую подходящую форму. Скрипт 113 может быть императивным языком программирования, который изменяет DOM недетерминистически.
HD-DVD включает интерактивный слой, который определяет, среди прочих вещей, путь, по которому HD-DVD расширенные приложения могут взаимодействовать с пользователем и аудио/видеопроигрывающей системой. Пример такого интерактивного слоя предлагается Microsoft Corporation под товарным знаком HDi™. HDi™ интерактивный слой закодирован как собрание форматов данных, определенных как контент Расширенного Приложения. Эти форматы обеспечивают декларативное описание контента и могут быть выведены их XML.
Операционные среды 100 могут позволить пользователю 102 вставить HD-DVD диски 104 в HD-DVD проигрыватель 114 для проигрывания, как показано пунктирной линией 116. HD-DVD проигрыватель 114 может быть системой на компьютерной основе, которая включает один или более процессоров, обозначенных на 118. Эти процессоры 118 могут также быть разделены на категории или охарактеризованы как имеющие данный тип или архитектуру, но могут иметь или могут не иметь одинаковый тип или архитектуру. В возможных вариантах осуществления процессоры могут включать в себя один или более интерактивных командных процессоров (IPC).
HD-DVD проигрыватель может также включать в себя один или более вариантов машиночитаемого носителя памяти, обозначенного в общем как 120. Машиночитаемый носитель 120 может содержать команды, которые при исполнении процессором 118 выполняют любые инструменты или функции, которые описаны в настоящем документе, как выполняемые любым компонентом внутри HD-DVD проигрывателя. Процессор может осуществлять доступ и/или выполнять команды, встроенные или закодированные в машиночитаемом носителе, и/или может осуществлять доступ к данным, хранящимся в машиночитаемом носителе.
Машиночитаемый носитель 120 может включать в себя один или более вариантов механизма 122 представления HD-DVD. Механизм 122 представления HD-DVD может включать в себя, например, один или более модулей программного обеспечения, которые при загрузке в процессор и выполнении побуждают HD-DVD проигрыватель загрузить разметку и другие элементы с HD-DVD диска 104, включающую в себя временную разметку 106. Механизм 122 представления может форматировать и преобразовывать разметку, считанную с HD-DVD диска, в визуализированный контент, подходящий для визуального представления пользователю. Фиг.1 указывает этот визуализированный контент в общем виде на 124.
Как показано на Фиг.1, HD-DVD проигрыватель 114 может обеспечить пользовательский интерфейс 126, через который пользователь 102 может взаимодействовать с HD-DVD проигрывателем. Пользовательский интерфейс 126 может включать в себя аппаратное обеспечение, предусмотренное HD-DVD проигрывателем, или может включать в себя аппаратное обеспечение, предусмотренное любым другим устройством, например телевизионной приставкой или дисплейным экраном, с которым HD-DVD проигрыватель связан или соединен. Обычно пользовательский интерфейс 126 может представлять любые компоненты аппаратного и/или программного обеспечения, позволяющие пользователю взаимодействовать с HD-DVD проигрывателем. Фиг.1 в общем виде представляет взаимодействия между пользователем 102 и HD-DVD проигрывателем 108 на 128.
Визуализированный контент 124 может включать в себя меню, подсказки или другие элементы, которые генерируются механизмом 122 представления, чтобы извлечь ответ или получить пользовательский ввод. Этот ответ или пользовательский ввод может включать в себя, например, вербальные или речевые команды; команды, введенные через устройство (например, пульт дистанционного управления, связанный с пользовательским интерфейсом 126 и/или HD-DVD проигрывателем 114); команды, введенные кнопками HD-DVD проигрывателя или в любой другой подходящей форме.
Машиночитаемый носитель 120 может включать в себя механизм 130 временной оптимизации, который взаимодействует с механизмом 122 представления, чтобы оптимизировать обработку временной разметки 112. Как описано в настоящем документе, механизм 130 временной оптимизации может выполнять одну или более стратегий, чтобы позволить механизму 122 представления визуализировать контент от HD-DVD пользователю при удовлетворительной частоте кадров, чтобы обеспечить подходящее пользовательское восприятие.
После описания операционных сред 100 на Фиг.1 далее приводится более подробное описание механизма 122 представления и временной разметки 112, представленных на Фиг.2.
Фиг.2 иллюстрирует дополнительные аспекты 200 механизма 122 представления и временной разметки 112. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на Фиг.2 и обозначены идентичными ссылочными позициями.
Механизм 122 представления может работать при частоте кадров, обозначенной в общем виде на 202. Эта частота кадров 202 может быть установлена проектировщиком HD-DVD 104. Более конкретно, проектировщик может точно установить заданную частоту кадров в разметке. Например, проектировщик может заявить желаемую частоту кадров в файле, называемом «плейлист». В другом примере проектировщик может заявить делитель синхроимпульсов на основе по каждому временному разделу. Однако HD-DVD спецификация не гарантирует, что эти заданные частоты кадров будут достигнуты, когда обрабатывается временная разметка. Проектировщик может заявить заданную частоту кадров в 60 кадров в секунду, но детали осуществления HD-DVD программного обеспечения, объединенные с аппаратной платформой, на которой запущена система, определяют, может ли быть достигнута заданная частота кадров. Следовательно, оптимизации, описанные в настоящем документе, для обработки временной разметки могут повышать вероятность достижения заданной частоты кадров.
Механизм 116 представления может принимать временные синхроимпульсы или такты, обозначенные в целом 204, которые регулируют или синхронизируют обработку, форматирование и визуализацию разметки, считанной с HD-DVD. HD-DVD проигрыватель 108 может генерировать такты 204, используя любую подходящую технологию, при условии, что такты генерируются, чтобы соответствовать временной модели HD-DVD.
Вернемся более подробно к временной разметке 106, как считанной с HD-DVD диска 104, эта разметка может определять один или более вариантов временных контейнеров 206. Фиг.2 предусматривает два примера временных контейнеров, обозначенных 206а и 206n. Однако заметим, что варианты временной разметки 106 могут определять произвольное число временных контейнеров 206
Временные контейнеры 206 могут принимать разные виды и формы. В примере, показанном на фиг.2, временные контейнеры могут включать в себя последовательные временные контейнеры 208 или <seqs> для краткости. Временные контейнеры могут включать в себя параллельные временные контейнеры 210 или <pars> для краткости. Временные контейнеры могут включать в себя сигнальные временные контейнеры 212 или <cues> для краткости.
<Par> и <Seq> временные контейнеры могут содержать один или более вариантов дочерних временных контейнеров (т.е. <seqs> 208а, <pars> 210а и <cues> 212а). <Par> и <Seq> временные контейнеры управляют тем, когда и как оцениваются их соответствующие дочерние контейнеры. Дочерние контейнеры <par> временного контейнера обрабатываются параллельно, в то время как дочерние контейнеры <seq> временного контейнера обрабатываются последовательно. <Cues> не содержат других временных контейнеров, но могут содержать одно или более свойств 214, которые относятся к контенту разметки, или могут содержать ноль или более событий 216, которые могут быть сообщены слушателю 218. Слушатель 218 может быть реализован как JavaScript код, который записан проектировщиком HD-DVD приложения.
<Cue> временные контейнеры 212а могут содержать конкретные события 216. Более определенно, временные контейнеры могут содержать один или более атрибутов, которые определяют, когда временные контейнеры становятся активными и неактивными, и какие особенные узлы применяются для конкретных анимационных действий. Примеры анимационных действий включают в себя <animate>, <set> и <event>. Фиг.2 показывает три примера атрибутов, касающихся времени, обозначенных как начальный временной атрибут 220, конечный временной атрибут 222 и атрибут длительности 224.
Обращаясь к этим атрибутам более подробно, начальный временной атрибут 220 может определять, когда начинается конкретный временной интервал, а конечный временной атрибут 222 может определять, когда конкретный временной интервал заканчивается. Атрибут 224 длительности может быть выведен из начального временного атрибута 220 и конечного временного атрибута 222 или может быть определен отдельно для атрибутов 220 и 222.
Ссылаясь на вышеприведенное описание, временные контейнеры могут быть <par>, <seq> или <cue>. Временные контейнеры включают в себя атрибуты, которые определяют, когда контейнеры неактивны или неактивны (например, начало, конец, длительность). <Cue> может также включать в себя атрибут «выбор», который определяет узлы в DOM, к которым применяются данные действия анимации. Атрибуты «начало», «конец» и «выбор» могут использовать временное выражение. Временное выражение может включать в себя определенный интервал времени или ХРАТН выражение (например, “id('myButton')[state:focused()=()”]).
Что касается атрибута длительности, временной контейнер может в некоторых вариантах определять атрибут длительности в границах особых временных смещений. В этих вариантах интервал, определенный такими особыми временными смещениями, может рассматриваться как «определенный» интервал, как представлено на 226 на Фиг.2. Примеры определенных интервалов могут включать в себя определенные длительности, такие как 10 секунд, 20 миллисекунд или тому подобные.
Взаимодействие пользователя и другие изменения DOM могут влиять на длительность временного интервала. Например, атрибут «конец» любого временного контейнера может быть определен как ХРАТН выражение. ХРАТН выражение может запрашивать DOM об определенных изменениях одного или более свойств, которые изменяются из-за пользовательского ввода или из-за изменений, сделанных проектировщиком в скрипте (например, 113). В свою очередь эти изменения могут влиять на длительность временного контейнера. В этих вариантах интервал, определенный такими особыми временными смещениями, может быть рассмотрен как «неопределенный» интервал, как представлено на 228 на фиг.2. В некоторых вариантах осуществления временные контейнеры могут точно устанавливать эти неопределенные интервалы в границах XML PATH выражений или ХРАТН выражений. Фиг.2 предусматривает два примера ХРАТН выражений, обозначенных на 230а и 230n (в общем виде 230). Однако выполнения временных контейнеров могут включать в себя любое подходящее число ХРАТН выражений 230.
Ниже представлен пример временной разметки:
Вышеприведенный пример определяет единственный параллельный временной контейнер (например, 210), длительность которого представляет собой определенный интервал в 2 секунды, и соответствующий набор узлов контента которого представляет собой элемент, имеющий идентификатор id='mybutton'. Этот параллельный временной контейнер содержит единственный последовательный временной контейнер (например, 208), который наследует длительность в 2 секунды от своего родительского параллельного контейнера.
Параллельный временной контейнер содержит два сигнальных временных контейнера. Первый сигнальный временной контейнер выполняется за 1 секунду и устанавливает фоновый цвет элемента разметки 'mybutton' в красный. Установка фонового цвета первым сигналом является примером свойства (например, 214), которое может удерживать значение представления. Первый сигнал также инициирует событие (например, 216), названное “myevent”, когда первый сигнал становится активным.
Второй сигнал активируется после того, как первый сигнал завершен, поскольку родительский контейнер первого и второго сигнала является последовательностью. Второй сигнал исполняется за одну секунду. Пока второй сигнал активен, он анимирует х позицию элемента разметки 'mybutton' от 0 до 100 пикселей, и также изменяет фоновый цвет элемента разметки 'mybutton' на синий. Если эти сигналы становятся неактивными, то исходные значения свойств фонового цвета восстанавливаются.
В некоторых вариантах осуществления временных контейнеров одно ХРАТН выражение может быть вложено в другое ХРАТН выражение. В других выполнениях два или более интервала, как определенные ХРАТН выражениями, могут быть упорядочены в родительско-дочерние отношения. В некоторых таких случаях временные интервалы могут быть «удержаны», означая, что дочерний интервал поддерживает свой последний набор вычисленных значений свойств для длительности родительского или другого предшествующего интервала.
После описания механизма представления и временной разметки более подробно со ссылкой на фиг.2 далее описан администратор ХРАТН выражения и стратегии для оптимизации обработки временной разметки, представленные на Фиг.3.
Фиг.3 иллюстрирует аспекты 300 администратора ХРАТН выражения и стратегий для оптимизации обработки временной разметки. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на Фиг.3 и обозначены идентичными ссылочными позициями.
Так как механизм 122 представления обрабатывает элементы, считанные с HD-DVD 104 в ответ на такты 204, он может сосчитать одно или более ХРАТН выражений 218а во временной разметке 112. Если механизм представления локализует ХРАТН выражения в разметке, то механизм представления может направить эти ХРАТН выражения компоненту 302 администратора ХРАТН выражения для обработки и оценки. Фиг.3 обозначает на 218b ХРАТН выражения, как отправленные администратору ХРАТН выражения.
Дополнительно, администратор ХРАТН выражений может принимать данные, отражающие изменения стиля и состояния, которые встречаются, как только обработана временная разметка 112. Фиг.3 обозначает эти изменения стиля и состояния на 303. Если временной интервал становится активным, он содержит список одного или более анимационных действий, которые должны быть применены, пока интервал активен, и особый заданный набор узлов, для которого эти анимационные действия должны быть применены. Анимационные действия включают в себя, например, <set>, <animate>, <event> и <link>. Следующий пример представлен для облегчения описания, но не для ограничения возможных выполнений:
Вышеприведенный пример показывает как временной раздел, так и раздел тела примерного файла разметки. Временной раздел включает в себя два временных контейнера: <par> и <cue>. <Par> не определен, но содержит <cue>, который анимирует набор узлов, связанных атрибутом «выбор». Атрибут «выбор» определен как постоянное ХРАТН выражение =id('div2') и означает элемент, чей id=div2. Атрибут «начало» этого <cue> определен как неопределенное ХРАТН выражение и означает, что <cue> становится активным, когда активированное состояние элемента, чей id='animate1', становится истинным. Как только это условие возникло, временной интервал (в этом случае <cue>) становится активным, и временной интервал применяет анимационные действия, которые он содержит. В этом примере анимационные действия включают в себя:
1) <animate>: интерполирует style:х положение для заданного набора узлов (в этом случае 'div2') во всем диапазоне значений для длительности интервала;
2) <set>: применяет значение 'blue' к style:backgroundColor свойству для набора узлов 'div2';
3) <event>: инициирует событие, чье имя 'myEvent' для заданного набора узлов 'div2' только в точке, в которой интервал активен. Функция слушателя (например, 218), определенная в скрипте проектировщиком, может принимать это уведомление и может вызывать любое число операций в скрипте при приеме этого уведомления.
Компонент администратора ХРАТН выражения может включать в себя один или более модулей программного обеспечения, содержащих команды для оценки ХРАТН выражений. Дополнительно, администратор 302 ХРАТН выражения может передавать ХРАТН выражения 218 механизму 130 оптимизации, чтобы определить, может ли быть оптимизирована обработка ХРАТН выражений 218. Фиг.3 обозначает на 218с ХРАТН выражения как направленные к механизму оптимизации.
В некоторых случаях механизм оптимизации может быть способен оптимизировать ХРАТН выражения, используя одну или более стратегий, описанных в настоящем документе. В этих случаях механизм оптимизации может возвращать результаты 304, которые являются результатом оптимизации оценки ХРАТН выражений. Фиг.3 показывает пример, в котором механизм оптимизации возвращает эти результаты 304 администратору 302 ХРАТН выражений или через администратора 302 ХРАТН выражений.
В некоторых вариантах ХРАТН выражения 218 могут не подвергаться оптимизированной обработке с использованием одной из стратегий, описанных в настоящем документе. В этих вариантах администратор 302 ХРАТН выражений может оценивать самостоятельно эти ХРАТН выражения, возвращая значения 306 механизму представления. Значения 306 представляют результаты неоптимизированных оценок.
Механизм 124 оптимизации может включать в себя модули программного обеспечения, осуществляющие одну или более стратегий для оптимизации обработки временной разметки 106. Фиг.3 показывает эти стратегии в форме блоков и последующие чертежи, которые детализируют эти стратегии далее.
Как представлено в блоке 308, одна стратегия может включать в себя предварительный анализ и предварительное вычисление, по меньше мере, некоторых ХРАТН выражений, которые определены в разметке, считанной с HD-DVD. Стратегия, представленная блоком 310, может включать в себя оптимизацию обработки выражений, которые зависят от состояния фокуса. Стратегия, представленная блоком 312, может включать в себя оптимизацию обработки с использованием конечного автомата. Стратегия, представленная блоком 314, может включать в себя оптимизацию обработки временных контейнеров путем распознавания и оценки дополнительных выражений. Стратегия, представленная блоком 316, может включать в себя оптимизацию обработки временных контейнеров с использованием совместно используемого пула памяти, чтобы сохранить структуры данных, касающиеся времени. Стратегия, представленная блоком 318, может включать в себя оптимизацию обработки с использованием планировщика.
В нижеприведенном более подробном описании этих различных стратегий 308-318 будет видно, что представленные варианты осуществления могут включать в себя одну, несколько или все эти стратегии в комбинации. Также эти стратегии могут быть осуществлены в различных модулях программного обеспечения или могут быть встроены в один или более общих модулей. Соответственно, следует отметить, что фиг.3 показывает эти стратегии в отдельных блоках только для облегчения описания и ссылок, но не для ограничений этих возможных вариантов осуществления.
Механизм 130 оптимизации может объединяться с механизмом 320 ХРАТН оценки, чтобы переоценить любые ХРАТН выражения, которые не оптимизированы с использованием любой из стратегий 308-318. Механизм 320 ХРАТН оценки может быть совместим с HD-DVD ХРАТН синтаксисом, который представляет собой производную W3C XPATH 2.0. Администратор 302 ХРАТН выражения может прямо вызывать механизм 320 ХРАТН оценки, чтобы переоценить данное ХРАТН выражение. Пунктирная линия 218d на Фиг.3 представляет этот вызов и ХРАТН выражение, полученное как входной сигнал для механизма 320 ХРАТН оценки. В свою очередь механизм 320 ХРАТН оценки может генерировать результаты 322 оценки и предоставить эти результаты механизму оптимизации.
После описания администратора ХРАТН выражений и нескольких стратегий для оптимизации обработки временной разметки на Фиг.3 ниже описаны потоки данных и процессов для обработки временной разметки, представленных на Фиг.4.
Фиг.4 иллюстрирует потоки 400 данных и процессов для обработки временной разметки. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на фиг.4 и обозначены идентичными ссылочными позициями. Дополнительно фиг.4 показывает некоторые аспекты потоков 400 данных и процессов, как выполняемых некоторыми компонентами, для облегчения описания, но не для ограничения.
Блок 402 представляет генерирование кортежа синхроимпульсов в ответ на прием синхроимпульса или такта (например, 204). Кортеж синхроимпульсов может содержать синхроимпульс заголовков, синхроимпульс страниц и значения синхроимпульсов приложений. При появлении тактов блок 402 генерирует соответствующие кортежи синхроимпульсов. Эти кортежи синхроимпульсов синхронизируются на одной и той же базе синхроимпульсов. Как показано на фиг.4, процессор (например, ICP 112) может представлять блок 402. В некоторых вариантах осуществления осциллятор или подобный времязадающий элемент, который встроен в процессор, может выполнять блок 402. В других вариантах осуществления осциллятор или времязадающий элемент может быть внешним относительно процессора.
Блок 404 представляет создание и отправку по-тактового сообщения в ответ на синхроимпульс. Это по-тактовое сообщение обеспечивает механизм уведомления для остальных элементов процесса, показанного на Фиг.4, указывая появление синхроимпульса.
Блок 406 представляет отправку кортежа синхроимпульсов, созданного в блоке 402, например, механизму представления (например, 116). Фиг.4 указывает кортеж синхроимпульсов в качестве отправленного механизму представления на 408. Кортеж 408 синхроимпульсов может включать в себя по-тактовое сообщение, которое обозначено на 410. По-тактовое сообщение 410 может включать в себя, например, одно или более из значения 412 синхроимпульса текущей страницы, значения 414 синхроимпульса заголовка и значения 416 синхроимпульса приложения.
В механизме представления блок 418 представляет прием кортежа 408 синхроимпульсов. Блок 420 отражает выполнение временного разрешения для такта, представленного в кортеже синхроимпульсов входного сигнала. При выполнении блока 420 механизм представления может запрашивать структуру данных, такую как объектная модель документа (DOM) 422. DOM 422 может содержать, например, разметку контента, стилевую разметку, скрипт и временную разметку 106, как закодированные на HD-DVD диске или считываемые с HD-DVD диска (например, 104). DOM может быть осуществлена как древовидная структура данных, использующая XML словарь.
DOM 422 может сохранять одно или более ХРАТН выражений (например, 218), которые становятся существенными для обработки, как только встретятся такты 204. DOM может сформировать эти ХРАТН выражения 218 в ответ на запросы от механизма представления, как указано прерывистой линией, соединяющей блоки 422 и 420 на Фиг.4.
Блок 424 отражает обновления списка активной анимации в ответ на кортеж синхроимпульсов. Более конкретно, блок 424 может включать в себя обновление списка активных интервалов для нового кортежа синхроимпульсов. Чтобы уменьшить полную обработку служебных сигналов, предыдущие результаты могут быть кэшированы, и только изменения, проистекающие из нового кортежа синхроимпульсов, отражаются в списке активных интервалов. Как только временные интервалы становятся активными, они добавляются к списку активных интервалов; и наоборот, если временные интервалы становятся неактивными, они удаляются из списка активных интервалов.
Список активных интервалов указывает, какие интервалы активны. Размещенный отдельно блок 424 может включать в себя определение, какие временные интервалы, точно установленные в ХРАТН выражениях, активны или становятся активными при данном такте. Временные интервалы, которые активны в данный момент времени, отнесены к «активным интервалам».
Блок 426 представляет выполнение анимационной обработки, который может включать в себя оценку активных интервалов и вычисление новых значений представления для активных интервалов. Значения этих интервалов могут быть разделены на слои таким образом, что слои могут быть объединены или скрыты различными путями. Термин «значения представления» относится к действительному или эффективному значению для данной точки во времени. Значение представления сделано явным для пользователя в течение данного интервала, хотя другие значения, которые могут быть связаны с этим интервалом, скрыты при разделении на слои и/или объединены, чтобы внести свой вклад в это полное значение представления. Блок 426 может включать в себя вычисление этих новых значений представления, основанных на трехслойной модели, как указано в общем виде на 428. Трехслойная модель может точно устанавливать значения представления для данных тактов и может точно устанавливать динамические свойства, связанные с соответствующими узлами на плане раздела DOM.
Блок 430 представляет выполнение форматирования и операции планирования для значений представления, происходящих из блока 426. Блок 430 может включать в себя точное определение форматирования и планирования, использующих расширяемый язык стилей (XML).
После описания данных и последовательности операций для обработки временной разметки на фиг.4 далее приводится описание дополнительных деталей, относящихся к некоторым аспектам этих потоков данных и процессов, представленных на фиг.5.
Фиг.5 иллюстрирует дополнительные аспекты 500 потока данных и процесса, показанных на фиг.4. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на фиг.5 и обозначены идентичными ссылочными позициями.
Как показано на фиг.5, DOM 422 может включать в себя множество отдельных элементов разметки, обозначенных в общем виде на фиг.5 на 502. Фиг.5 показывает три примера элементов разметки на 502а, 502b и 502n. Однако варианты осуществления DOM могут включать в себя произвольное число элементов 502, и DOM
дерево может принимать любую подходящую форму. Эти элементы разметки могут определять описание сцены для того, что воспроизводится на экране пользователю.
Как описано на фиг.4, блок 424 отражает генерирование списка активной анимации, который может включать в себя множество временных контейнеров. Блок 424 включает в себя сортировку временных контейнеров в списке активной анимации с помощью начальных временных атрибутов (например, 208 на фиг.2), как показано блоком 504. Блок 424 может также включать в себя лексическую сортировку временных контейнеров в списке активной анимации, как представлено блоком 506.
Сортировка или упорядочение временных интервалов может быть сделана «на месте» с использованием подходящих структур данных. Используя описанные в настоящем документе способы, все активные временные интервалы не нужно заново сортировать или заново учитывать по каждому новому временному такту. Например, структуры данных могут отслеживать последнее время и временной интервал, который был добавлен к списку активных интервалов. Структуры данных могут содержать статистические данные, которые запустили процессы 400 и 500, по умолчанию, добавляя последний временной интервал к концу списка активных интервалов. Только в исключительных случаях процессы могут возвращаться к просмотру списка активных интервалов, чтобы найти подходящую точку вставки для нового временного интервала. Обычно подходящая точка вставки находится наиболее близко к последнему недавно добавленному интервалу. Однако локализация этой точки вставки может быть основана на предыдущем статистическом анализе тела HD-DVD временной разметки.
Блок 426 может далее представлять обработку активных интервалов, включенных в список активной анимации, как представлено в блоке 508. Блок 426 может также включать в себя вычисление новых значений представления для текущего импульса сигнала времени, как представлено блоком 510. Блок 426 может включать в себя генерирование особых событий разметки, как представлено блоком 512. В заключение блок 428 может включать в себя восстановление любых активных временных интервалов, как представлено блоком 514.
Используя инструменты и способы, показанные в настоящем документе, процессы 400 и 500 могут оптимизировать обработку ХРАТН выражений. Оптимизация обработки ХРАТН выражений, как описано в настоящем документе, может реализовывать самую высокую частоту кадров и обеспечивать лучшее восприятие пользователем или наблюдателем при взаимодействии с HD-DVD контентом.
После описания дополнительных аспектов этих потоков данных и процессов по фиг.5 далее описываются более подробно характеристики стратегий оптимизации, начиная с фиг.6.
Фиг.6 иллюстрирует компоненты и потоки 600 процессов, относящихся к стратегиям оптимизации, включающим предварительный анализ и предварительное вычисление некоторых ХРАТН выражений. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на фиг.6 и обозначены идентичными ссылочными позициями.
Как показано на фиг.6, механизм оптимизации (например, 124) может включать в себя компоненты программного обеспечения, подходящие для предварительного анализа и предварительного вычисления некоторых ХРАТН выражений. Фиг.3 обозначает примеры таких компонентов программного обеспечения, как 308 на фиг.3, и блок 308 перенесен на фиг.6. Механизм оптимизации может взаимодействовать с администратором ХРАТН выражений (например, 302).
Фиг.6 показывает потоки 600 процесса для оптимизации обработки ХРАТН выражения посредством предварительного анализа и предварительного вычисления. Блок 602 представляет анализ входящего ХРАТН выражения, как принято администратором ХРАТН выражений. Фиг.6 переносит пример ХРАТН выражения на 218.
Блок 604 представляет идентификацию одного или более промежуточных ХРАТН выражений, встречающихся во входном ХРАТН выражении 218. Фиг.6 показывает два примера этих промежуточных выражений 606а и 606n. Однако может встречаться любое количество промежуточных выражений 606 в данном ХРАТН выражении 218.
Блок 608 представляет кэширование промежуточных выражений 606 и увязку их с соответствующими элементами или узлами внутри DOM дерева. DOM дерево 422 и соответствующие узлы 502 перенесены на фиг.6. Кэш 610 может сохранять DOM дерево и соответствующие узлы.
Блок 612 представляет вычисление результата для полного ХРАТН выражения, как отличного от вычисленных результатов для промежуточных выражений, которые могут составлять полное ХРАТН выражение. Как коротко описано более подробно, при поступлении некоторых временных тактов ни одно из промежуточных ХРАТН выражений не может изменить значения, так что значение полного ХРАТН выражения остается постоянным.
Блок 614 представляет кэширование значения для полного ХРАТН выражения. В вариантах, если значение полного ХРАТН выражения остается постоянным после данного такта, то предыдущее значение полного ХРАТН выражения может быть затем восстановлено из кэша.
Следует отметить, что блоки 602-608 могут быть выполнены параллельно с блоками 612-614. Таким образом, полные ХРАТН выражения могут быть проанализированы в промежуточных выражениях (например, 606а и 606n), а значения вычислены и кэшированы для различных промежуточных выражений. Между тем значения для полных ХРАТН выражений могут быть вычислены и кэшированы, как представлено блоком 616.
Блок 618 представляет прием такта или другого временного события. В ответ на такт блок 620 представляет оценку предварительно проанализированных и предварительно вычисленных промежуточных выражений (например, 606) как сохраненных в кэше. Блок 620 может также включать в себя оценку предварительно вычисленных полных выражений (например, 616) как сохраненных в кэше. Блок 622 представляет возвращение значений, вытекающих из оценки, выполненной в блоке 620. Впоследствии последовательность 600 операций может возвращаться в блок 618, чтобы ожидать следующего такта.
В способах, показанных на фиг.6, промежуточные выражения полностью преобразовывают каждую ХРАТН координату в каноническую форму, которая может включать в себя бинарное представление набора узлов, бинарный список операторов и бинарное представление предикативного фильтра. Как только предикативный фильтр может быть полностью решен, означая, что промежуточное выражение было полностью проанализировано, координатные наборы узлов отсылают структуру ссылочных данных, представляющую список DOM узлов на координаты и предикативные фильтры преобразовали исходные данные строки в своей декларативной форме в простую бинарную форму, которая может быть эффективно оценена без требования повторной интерпретации.
Кэширование этих выражений может быть выполнено различными механизмами, включающими в себя хранение отсылки к проанализированному выражению на структуру данных/объект, которые инкапсулируют узел временного интервала. ХРАТН выражения могут быть проанализированы, предварительно вычислены и преобразованы в бинарную каноническую форму во время загрузки или в любой точке перед постоянной по-тактовой/запланированной операцией. Заметим, что эта операция выполняется только один раз для данной DOM и выполняется заново, только если DOM изменяется. Если один раз ХРАТН выражение проанализировано и, по меньшей мере, частично решено (в некоторых случаях полностью решено), администратор выражения может оценить выражение только на предикативном фильтре, который также был упрощен.
Рассмотрим следующий пример:
<cue begin=”//button[style:backgroundColor()='red']”=”500ms”…>
ХРАТН выражение '//button [style:backgroundColor()='red']' означает запрос всех элементов в XML DOM, чье элементное имя - “button”, и из этого набора возврат любого, чье текущее вычисленное значение style:backgroundColor свойства равно значению 'red'.
В обычной среде это выражение может сначала быть проанализировано, а затем оценено. Фаза анализа преобразует исходную строку в серию из одного или более маркеров и сохраняет их в ссылочной структуре данных, которая описывает более простую и эффективную форму исходного выражения строки. Обычно может быть использован алгоритм рекурсивного нисходящего синтаксического анализа для анализа выражения. Однако могут быть использованы другие алгоритмы анализа и приближения.
Один процесс, который может быть выполнен во время фазы анализа, - это координатное решение. Координатное решение относится к процессу создания одного или более наборов узлов, на которых нуль или больше предикативных фильтров будут работать. Так как каждый временной интервал анализирует свое неопределенное ХРАТН выражение, то интервал поддерживает отсылку к проанализированному или частично решенному выражению. Обычно эта оценка исключает всякую необходимость выполнять эту фазу анализа опять, пока базовая DOM изменяется (что обычно случается редко в HD-DVD приложениях).
Как только фаза анализа завершена, упрощенная и более эффективная бинарная структура данных используется для второй фазы, которая представляет собой оценку выражения. Оценка выражения выполняется на упрощенной структуре данных и включает только решение и получение результатов, основанных на нуле или нескольких предикативных фильтрах. Предикативные фильтры также представлены в бинарной канонической форме, таким образом, уменьшая обработку служебных сигналов, относящихся к оценке выражения.
На схеме, показанной на фиг.6, трудоемкая и интенсивная по обработке задача анализа XPATH выражений выполняется только однократно, и промежуточное выражение частично (или в некоторых случаях полностью) разрешается. Эти оптимизации могут значительно снизить обработку служебных сигналов, связанных с обработкой или оценкой ХРАТН выражений.
После описания стратегий оптимизации, включающих в себя предварительно вычисленные выражения на фиг.6, далее приводится более подробное описание стратегий оптимизации, включающих в себя событийно-управляемые выражения.
Возвращаясь к стратегиям оптимизации, включающим в себя событийно-управляемые выражения более подробно, фиг.3 иллюстрирует стратегии оптимизации, включающие в себя событийно-управляемые выражения на 310, которые могут быть обеспечены механизмом 124 оптимизации. Эти стратегии оптимизации могут включать в себя отделение неопределенных выражений в выражения, которые могут запускаться с помощью или в зависимости от наступления события, в отличие от выражений, чьи базовые значения могут быть определены путем последовательного опроса (поллинга). Например, временные контейнеры (например, последовательные, параллельные и сигнальные) могут использовать HD-DVD состояние пространства имен, чтобы определить, когда их соответствующие интервалы становятся активными или неактивными. Неактивные состояния (например, state:foreground, state:focused, state:pointer, state:actioned, state:value и state:enabled) могут быть запущены первоначально из событий, которые пользователь создает через контроллер. Эти событийно-управляемые события могут обрабатываться вне полосы относительно обработки временной разметки. Эти события или состояния переходов могут быть использованы, чтобы запустить событийно-управляемый механизм или уменьшить число оценок выражений, которые выполняются на каждый такт.
HD-DVD спецификация определяет модель для того, каким образом управляющие события или «жесты» передаются механизму представления. Эти события могут быть посланы вне полосы из «тактовой» обработки и могут влиять на пространство имен «состояния» DOM модели. HD-DVD спецификация определяет пространство имен «состояние» отлично от пространства имен «стиль» с точки зрения трехслойной модели, в которой изменения в «состоянии» немедленно изменяют базовый атрибут в DOM.
Поскольку значения состояний берутся с дорожки, начиная с такта и распланированной обработки, процесс обработки событий жестов может быть отнесен к структурам данных, управляющих списком анимации, который последовательно обрабатывается в течение он-тактовой обработки. Так как значение состояния изменяется, оно может быть напрямую связано с любыми ХРАТН выражениями, которые ожидают решения этого изменения состояния.
Обсудим следующий сигнальный временной контейнер (cue), который содержит ХРАТН выражение begin:
<cue begin=”id('myButton1')[state:focused()=1]”…>
Этот cue задает, что он должен начинаться, когда атрибут state:focused установлен на «один» для элемента, чье уникальное имя 'myButton1'. Логика обработки жеста внутри механизма представления может управлять входным сигналом пользователя и управлением последующего состояния. Вместо непрерывного последовательного опрашивания ХРАТН механизма, когда это выражение становится истинным, логика обработки жеста может иметь заранее установленные знания, которые позволяют ей решать ХРАТН выражение без оценки ХРАТН выражения, таким образом, избегая непроизводительных затрат на оценку ХРАТН выражения.
После описания предварительной обработки, относящейся к оптимизации событийно-управляемых выражений, ниже описана обработка, которая может быть выполнена при появлении событий, как представлено на Фиг.7.
Фиг.7 иллюстрирует компоненты и потоки 700, относящиеся к оптимизации событийно-управляемых выражений. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на Фиг.7 и обозначены идентичными ссылочными позициями.
Термины «событие» или «события» в контексте настоящего документа могут относиться к изменениям стиля и состояния, являющимся результатом пользовательского ввода, как и изменения стиля и состояния, которые являются результатом анимации и/или скрипта. Более конкретно, администратор ХРАТН выражения (например, 302) устанавливает отношение с механизмом представления (например, 122), при котором администратор ХРАТН выражения принимает изменения для свойств стиля и состояния, проистекающих из кода скрипта, определенного проектировщиком, пользовательского ввода или анимации, как описано выше. Другими словами, код скрипта может изменить ноль или более значений свойств (как стиля, так и состояния), пользовательский ввод может изменить состояние любого интерактивного элемента, и анимация (т.е. обработка временных элементов) может привести к изменению состояния и стиля элементов. Администратор ХРАТН выражения принимает эти входные сигналы и управляет и обновляет соответственно свой внутренний кэш ХРАТН выражений.
Как описано ранее, пользователь (например, 102) может обеспечить ввод в HD-DVD проигрыватель (например, 108 на Фиг.1). Например, пользователь может ввести команды или отреагировать на приглашения или меню, визуально представленные механизмом представления (например, 116). Фиг.7 в общем виде представляет такой пользовательский ввод на 702 и может включать в себя речевые команды, команды, введенные через пульт дистанционного управления или через кнопки на HD-DVD проигрывателе, или тому подобные. Механизм представления может включать в себя или взаимодействовать с логикой 704 обработки жестов, которая принимает и обрабатывает пользовательский ввод 702.
Логика 704 обработки жестов может распознавать конкретные события, которые происходят в ответ на пользовательский ввод 702, и может запрашивать кэш 706 с идентификаторами, соответствующими этим событиям. Фиг.7 обеспечивает примеры таких идентификаторов на 708. На фиг.7 эти запросы обозначены на 710. В свою очередь, кэш 706 может возвращать любые поля, согласующиеся с идентификаторами 708 событий ввода. Если идентификаторы событий ввода отмечают любые поля или записи в кэше, то кэш может возвратить любые оцененные выражения 712, связанные с согласующимися полями или записями. Выражения 712 включают в себя те выражения, значение которых может изменяться в ответ на события, происходящие вследствие пользовательского ввода 702.
Возвращаясь к механизму представления, при появлении тактов 204 механизм 116 представления может принимать ХРАТН выражения 218 от DOM 422 в ответ на эти такты. Механизм 116 представления может сравнивать ХРАТН выражения 218 с любыми событийно-управляемыми или событийно-зависимыми выражениями 712, которые были возвращены из кэша 706. Это сравнение идентифицирует те ХРАТН выражения, оценки которых не зависят от событий, являющихся результатом пользовательского ввода 702, а также идентифицирует те ХРАТН выражения, оценки которых могут изменяться из-за таких событий. Первые могут быть определены как событийно-независимые выражения и обозначены на 218а. Последние могут быть определены как событийно-управляемые или событийно-зависимые выражения и обозначены на 218b.
Вернемся теперь к событийно-независимым выражениям 218а, значения или оценки этих выражений не изменяются из-за пользовательского(их) события(й). Таким образом, если предыдущие значения таких выражений были кэшированы предварительно (например, в кэше 714), то эти предыдущие значения останутся неизменными, текущими и правильными. Соответственно, механизм 116 представления может направлять эти событийно-независимые выражения 218а в реализацию администратора ХРАТН выражений, обозначенного на 302а. Администратор 302а ХРАТН выражений может извлекать предыдущие значения этих событийно-независимых выражений из кэша 714. Администратор 302а ХРАТН выражений может затем направлять значения для этих оцененных выражений (обозначенных на 716) в механизм представления для использования.
Вернемся теперь к событийно-зависимым ХРАТН выражениям 218b, эти выражения могут изменять значения или оценки из-за пользовательского ввода 702. В этих случаях механизм 116 представления может направлять любые событийно-зависимые выражения 218b в реализацию администратора ХРАТН выражений, обозначенного 302b, который повторно оценивает событийно-зависимые выражения 218b и возвращает обновленные значения для этих повторно оцененных выражений, обозначенных на 718.
Фиг.7 показывает разные варианты администраторов ХРАТН выражений только для простоты иллюстрации и ссылки, но не для ограничения возможных вариантов осуществления. Более конкретно, в некоторых вариантах осуществления один администратор 302 ХРАТН выражений может обрабатывать как событийно-независимые выражения 218а, так и событийно-зависимые выражения 218b.
Фиг.8 иллюстрирует потоки 800 процесса для оптимизации обработки событийно-зависимых и событийно-независимых выражений. Фиг.8 показывает в форме блок-схемы обработку, иллюстрируемую и описанную в связи с Фиг.7. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на Фиг.8 и обозначены идентичными ссылочными позициями.
Дополнительно, для облегчения описания, но не для ограничения, Фиг.8 объединяет некоторые элементы обработки в столбцы, соответствующие механизму представления (например, 116) и механизму оптимизации (например, 124). Механизм оптимизации может включать в себя компоненты программного обеспечения, связанные с оптимизацией обработки событийно-зависимых выражений (например, 310).
Блок 802 представляет прием пользовательского ввода. Фиг.7 показывает пример пользователя на 102 и обеспечивает пример ввода, принятого от пользователя на 802.
Блок 804 представляет идентификацию любых изменений состояния или событий, которые являются результатом пользовательского ввода, принятого в блоке 802. Блок 804 может включать в себя указание любых событий, которые могут соответствовать предварительно определенным идентификаторам событий (например, 708 на фиг.7). Эти предварительно определенные идентификаторы событий могут обеспечивать идентификацию любых ХРАТН выражений, значения которых могут изменяться в результате этих событий.
Блок 806 представляет определения событийно-зависимых и событийно-независимых выражений. Блок 806 может включать в себя запрашивание кэша идентификаторов событий, которые относятся к соответствующим ХРАТН выражениям, значения которых могут изменяться, если возникает одно или более базовых событий. Фиг.7 показывает примеры такого кэша на 706 наряду с идентификаторами событий 708 и событийно-зависимыми выражениями 712.
Блок 808 представляет прием идентификации того, что наступил такт или получен другой временной ввод. Фиг.7 и другие чертежи показывают примеры тактов на 204.
Блок 810 представляет прием одного или более ХРАТН выражений в ответ на такт, принятый в блоке 808. Фиг.7 и другие чертежи показывают примеры ХРАТН выражений на 218, и блок 810 может включать в себя прием этих ХРАТН выражений от DOM (например, 422 на Фиг.7).
Заметим, что обработка, представленная в блоках 802-806, может продолжаться параллельно с обработкой, представленной в блоках 808 и 810. Таким образом, потоки 800 процесса могут обрабатывать входящие пользовательские события, в то же время также обрабатывая входные временные такты.
Блок 812 представляет оценку того, зависят ли ХРАТН выражения, принятые в блоке 810, от каких-либо событий, являющихся результатом пользовательского ввода, принятого в блоке 812. Если ХРАТН выражения являются событийно-управляемыми или событийно-зависимыми, то тогда значения этих выражений, возможно, были изменены из-за событий, относящихся к пользовательскому вводу, принятому в блоке 802. Соответственно потоки 800 процесса могут продолжаться по ветви «ДА» 814 к блоку 816, который представляет запрашивание, чтобы любые событийно-запускаемые ХРАТН выражения были повторно оценены в свете наступления пользовательских событий. Блок 816 может включать в себя запрашивание, чтобы администратор (например, 302) ХРАТН выражения повторно оценил выражение. Фиг.8 представляет этот запрос на 818.
Возвращаясь к администратору 302 ХРАТН выражений, блок 820 представляет прием запроса на оценку ХРАТН выражения. Блок 820 может включать в себя прием запроса на переоценку ХРАТН выражения, которое является событийно-зависимым или событийно-управляемым.
Блок 822 отражает оценивание одного или более ХРАТН выражений в ответ на запрос 818. Блок 822 может включать в себя переоценку одного или более событийно-управляемых ХРАТН выражений в ответ на наступление одного или более событий.
Блок 824 представляет отправку значений, которые получаются из переоценки выражения в блоке 822. Иными словами, блок 824 представляет обновление значений выражений для учета наступления любых событий, от которых зависят эти выражения. Фиг.8 показывает эти результаты переоценки выражений на 826.
Блок 828 отражает прием результатов переоценки выражений в блоке 824. В примере, показанном на фиг.8, механизм представления может выполнять блок 828.
Возвращаясь к блоку оценки 812, если входящее ХРАТН выражение не зависит от события пользователя, то потоки 800 процесса могут продолжаться по ветви «НЕТ» 830 к блоку 832, который представляет извлечение предыдущего значения выражения. Например, блок 832 может включать в себя извлечение результатов предыдущей оценки выражения, как сохраненного в кэше (например, 714). Таким образом, поток 800 процесса может избежать обработки, представленной в блоках 816-828 для любых ХРАТН выражений, значения которых не зависят от наступления базовых пользовательских событий.
После описания потоков 800 процесса на фиг.8 для оптимизации обработки событийно-управляемых выражений далее описаны способы оптимизации с использованием конечных автоматов, представленные на Фиг.9.
Фиг.9 иллюстрирует способы 900 оптимизации с использованием конечных автоматов. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на фиг.9 и обозначены идентичными ссылочными позициями.
Фиг.9 иллюстрирует дальнейшее описание обработки, относящееся к способам оптимизации, включая в себя конечные автоматы, отраженные в общем виде на 312. Механизм 124 оптимизации может выполнить эти способы оптимизации.
Конечный автомат такого типа, как тот, что описан в настоящем документе, обеспечивает механизм, который может быть выполнен в механизме анимации, чтобы эффективно обрабатывать различные временные интервалы и их соответствующие предшественники. Базовые состояния являются неактивными, активными и удерживаемыми. Переменные значения промежуточного состояния внутри данного временного интервала могут включать в себя повторно запускаемые, промежуточные и разрешенные. Переменные значения состояния могут также включать в себя любые указанные атрибуты начала, конца и длительности (если подходят). Фиг.2 показывает примеры таких атрибутов на 220, 222 и 224.
Применение этого механизма конечного автомата в механизме анимации позволяет эффективно обрабатывать временные интервалы в конкретной временной диаграмме, потому что он облегчает обход полных суб-деревьев временных интервалов. Без ограничения возможных реализаций термин «временная диаграмма» в контексте настоящего документа может относиться к контейнеру временных элементов, которые все синхронизированы на одной и той же временной основе. Дополнительно, если данный родительский временной интервал становится неактивным, то тогда все его дочерние интервалы становятся неактивными и повторно запускаемыми. Конечный автомат может также отслеживать повторно запускаемое состояние данного временного интервала.
Как показано на Фиг.9, блок 902 представляет прием указания, по меньшей мере, одного такта, временного импульса или другого события, связанного с синхроимпульсом. Блок 904 представляет оценку, активен ли родительский временной контейнер внутри данного ХРАТН выражения. Если нет, блок 906 представляет пропуск обработки любых дочерних контейнеров из родительского временного контейнера. В противном случае, если родительский временной контейнер активен, то тогда блок 908 представляет выбор дочернего временного контейнера из родительского для обработки.
Блок 910 представляет оценку, истинны ли любые стартовые условия, заданные в дочернем временном контейнере. Если это так, то тогда блок 912 представляет оценку любых выражений, заданных в дочернем временном контейнере. В противном случае, блок 914 представляет оценку того, имеет ли еще родительский временной контейнер дочерние контейнеры, которые должны быть оценены. Если так, то тогда блок 916 отражает выбор следующего дочернего временного контейнера для обработки. Затем процесс 900 возвращается к предыдущему блоку 910, чтобы повторить процесс с этим следующим дочерним контейнером.
Из блока 914, если родительский временной контейнер не содержит больше дочерних контейнеров, то тогда блок 918 представляет оценку того, не осталось ли больше родительских временных контейнеров, которые должны быть оценены. Если так, то тогда блок 920 отражает выбор следующего родительского временного контейнера для обработки. Затем процесс 900 возвращается к предыдущему блоку 904 и повторяет процесс с этим следующим родительским контейнером.
Из блока 918, если в нем нет больше родительских временных контейнеров, то процесс 900 может дойти до конечного состояния 922.
Вышеупомянутый процесс 900 может быть реализован как один или более конечных автоматов, которые выполняют функции, проиллюстрированные и описанные в настоящем документе.
Другие способы оптимизации, представленные в общем виде на 314 на фиг.3, распознают дополнительные выражения, чтобы избежать оценки дублированных выражений, и фокусируются вместо этого на оценке однозначно определяемого ХРАТН выражения. «Комплементарное» выражение определяется в терминах булевой логики. Например, если выражение «А» истинно, то тогда все случаи, которые относятся к выражению «не А», ошибочны.
Проектировщики контента HD-DVD могут использовать state:value на данном «скрытом» элементе ввода, чтобы управлять поведением временных контейнеров. Если одно и то же выражение используется множество раз, но в контексте разных временных контейнеров, то только одна оценка выражения может быть достаточна. Другие ссылки на это выражение могут быть обновлены, чтобы отразить состояние одной оценки.
Аналогичным образом, выражения, которые являются комплементарными (т.е. которые используют противоположный булев оператор), а не этими выражениями, могут также быть пропущены, потому что достаточно только одной оценки, чтобы определить, истинны ли или ложны любые последующие комплементарные выражения. Рассмотрим следующие сигналы:
<cue begin=”id('myButton1')[state:value()='HELLO']”…>
<cue begin=”id('myButton1')[state:value()!='HELLO']”…>
<cue begin=”id('myButton1')[state:value()='WORLD']”…>
Допустим, что временной механизм оценивает первый сигнал и определяет, что он активен (или истинен). В этом случае, временной механизм может пропустить оценку второго сигнала, потому что второй сигнал мог бы быть противоположным результатом оценки первого сигнала. Также временной механизм может пропустить третий сигнал, потому что если первый сигнал является истинным, то третий сигнал не может также быть истинным.
Эта оптимизация может быть осуществлена, используя структуры ссылочных данных, которые могут быть модифицированы в течение загрузочного времени, чтобы связать соответствующие и дополнительные выражения. Эти структуры ссылочных данных могут также быть доступны в течение обработки такта, так что они могут обновлять разрешение выражения, как только оценка будет выполнена.
Фиг.10 иллюстрирует компоненты и операции 1000, относящиеся к оптимизации обработки временной разметки с использованием совместно используемого пула памяти. Для удобства, но не для ограничения, некоторые элементы, описанные ранее, перенесены на Фиг.10 и обозначены идентичными ссылочными позициями.
Фиг.10 представляет более подробно способы оптимизации, включающие в себя использование совместно используемой памяти, представленное в общем виде в блоке 316 на Фиг.3. Механизм оптимизации (например, 124) может осуществлять эти способы 316 оптимизации.
Кэш 1002 может быть выполнен как пул 1004 совместно используемой памяти. Пул совместно используемой памяти может хранить множество структур ссылочных данных фиксированного небольшого размера (например, на 1006а и 1006n), которые инкапсулируют информацию для эффективного прохождения DOM временного дерева (например, на 422, с временными узлами 502).
Структуры данных допускают множество ссылок для сортировки и допускают пропуск других групп временных узлов, основываясь на состояниях узлов. Фиг.10 показывает примеры таких ссылок на 1008а (связывающих структуру 1006а с узлом 502а) и на 1008n (связывающих структуру 1008n с узлом 502n).
Пул 1004 совместно используемой памяти облегчает быстрый просмотр дерева DOM, потому что память легко локально кэшируется для CPUs, которые поддерживают L1 кэш данных. Ссылочная природа структур 1006 данных поддерживает возможность пропускать множество узлов при временной разметке, основываясь на их состоянии. Дополнительно, структуры данных обеспечивают возможность быстрого просмотра полного DOM дерева, используя приращение индекса или операцию добавления указателя. Совместно с этими способами соответствующие пулы совместно используемой памяти могут быть использованы, чтобы поддерживать соотношения с ХРАТН выражениями, сортировку индексов и поиск ключей, что облегчает быстрые и пространственно-эффективные поиски временных и ХРАТН-связанных структур данных.
После описания способов оптимизации, относящихся к использованию пулов совместно используемой памяти на Фиг.10, ниже описаны способы оптимизации, относящиеся к использованию планировщиков, со ссылкой на фиг.11.
Фиг.11 иллюстрирует способы оптимизации, относящиеся к использованию планировщиков 1102, чтобы избежать выполнения полных временных обходов дерева. Планировщик 1102 перемещает временные узлы 502 из временной разметки 106 в рабочую очередь 1104. Более определенно, планировщик 1102 перемещает только те временные узлы, которые могут подойти для оценки на любом данном такте. Каждый элемент временного узла в рабочей очереди, частично обработанный планировщиком, может содержать отсылку к временному интервалу (например, 1106а и 1106n) и его связанным дочерним контейнерам (например, 1108а и 1108n).
Рабочая очередь может быть упорядочена с помощью начального момента времени и затем лексически более позднего, как только он появляется в разметке DOM. Это упорядочение повышает возможность того, что только временные интервалы, которые должны быть оценены или обработаны, были бы перемещены в рабочую очередь, таким образом, исключая любую излишнюю временную обработку дерева. Дополнительно, этот механизм может также позволить лучшее последовательное упорядочение операций, которые могут потенциально происходить из группы дорожек (например, обработка жестов). Этот подход может быть использован в связи с описанным выше подходом пула памяти, чтобы допустить лучшую локальность кэша рабочих элементов и связанных данных.
ЗАКЛЮЧЕНИЕ
Хотя вышеприведенное описание представлено в контексте оптимизации обработки временной разметки HD-DVD, инструменты и способы, описанные в настоящем документе, могут быть подходящими для обработки других типов носителей или для обработки разметки других типов, кроме тех, что описаны в настоящем документе.
Хотя системы и способы были описаны в настоящем документе в терминологии, характерной для структурных признаков и/или операций способа, следует понимать, что система и способ, определенные в нижеприведенных пунктах формулы, не обязательно ограничиваются описанными конкретными признаками или операциями. Скорее, конкретные признаки и операции раскрыты как примерные формы осуществления заявленной системы и способа.
В дополнение, относительно некоторых данных и схем последовательности операций, описанных и проиллюстрированных в настоящем документе, следует заметить, что процессы и суб-процессы, описанные в настоящем документе, могут быть выполнены в ином порядке по сравнению с проиллюстрированным, без отклонения от сущности и объема описания, приведенного в настоящем документе. Также, хотя эти данные и последовательности операций описаны в настоящем документе в связи с некоторыми компонентами, заметим, что эти данные и последовательность операций могут быть выполнены с другими компонентами без отклонения от сущности и объема настоящего описания.
название | год | авторы | номер документа |
---|---|---|---|
ПОЭТАПНОЕ ОБНОВЛЕНИЕ И ФОРМАТИРОВАНИЕ РАЗМЕТКИ HD-DVD | 2007 |
|
RU2452046C2 |
ВИЗУАЛИЗАЦИЯ ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА | 2005 |
|
RU2383919C2 |
МЕТОД ПОСТРОЕНИЯ КОРПУСА ТЕКСТОВ НА ОСНОВЕ ИНТЕРНЕТ-ФОРУМОВ | 2013 |
|
RU2565473C2 |
КОНТЕЙНЕР ДАННЫХ ДЛЯ ДАННЫХ КОНТЕНТА ПОЛЬЗОВАТЕЛЬСКОГО ИНТЕРФЕЙСА | 2005 |
|
RU2363039C2 |
СПОСОБ ВОСПРОИЗВЕДЕНИЯ И УСТРОЙСТВО ДЛЯ ИНТЕРАКТИВНОГО РЕЖИМА С ИСПОЛЬЗОВАНИЕМ РАЗМЕЧЕННЫХ ДОКУМЕНТОВ | 2003 |
|
RU2340018C2 |
СПОСОБ И УСТРОЙСТВО ДЛЯ СИНХРОНИЗАЦИИ ИНТЕРАКТИВНОГО СОДЕРЖИМОГО | 2004 |
|
RU2292584C2 |
МЕХАНИЗМ ДЛЯ ПОЛУЧЕНИЯ И ПРИМЕНЕНИЯ ОГРАНИЧЕНИЙ К ЛОГИЧЕСКИМ СТРУКТУРАМ В ИНТЕРАКТИВНОЙ СРЕДЕ | 2004 |
|
RU2367999C2 |
УСТРОЙСТВО ДЛЯ ЗАПИСИ ИЛИ ВОСПРОИЗВЕДЕНИЯ МУЛЬТИМЕДИЙНЫХ ДАННЫХ С ИСПОЛЬЗОВАНИЕМ ИЕРАРХИЧЕСКОЙ ИНФОРМАЦИОННОЙ СТРУКТУРЫ И ИНФОРМАЦИОННЫЙ НОСИТЕЛЬ ДАННЫХ ДЛЯ НЕГО | 2003 |
|
RU2294568C2 |
ПРОГРАММИРУЕМОСТЬ ДЛЯ ХРАНИЛИЩА XML ДАННЫХ ДЛЯ ДОКУМЕНТОВ | 2006 |
|
RU2417420C2 |
ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС КОНТАКТОВ | 2003 |
|
RU2308076C2 |
Предложен носитель с машиночитаемыми командами и устройство для использования этого носителя. Команды носителя позволяют принимать временную разметку, считанную с цифрового многофункционального диска высокой четкости (HD-DVD), и оптимизировать обработку временной разметки. Техническим результатом является уменьшение вычислительных ресурсов на обработку временной разметки. 2 н. и 18 з.п. ф-лы, 11 ил.
1. Машиночитаемый носитель (120) памяти, содержащий машиночитаемые команды (122, 130), которые при выполнении компьютером (114) побуждают компьютер выполнять способ, содержащий этапы, на которых:
принимают временную разметку (112), считанную с цифрового многофункционального диска высокой четкости (HD-DVD) (104); и
оптимизируют (308, 310, 312, 314, 316, 318) обработку временной разметки.
2. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки временной разметки путем предварительного вычисления по меньшей мере одного ХРАТН выражения, включенного во временную разметку.
3. Машиночитаемый носитель по п.2, в котором команды для оптимизации обработки временной разметки включают в себя команды для идентификации по меньшей мере одного промежуточного выражения внутри ХРАТН выражения.
4. Машиночитаемый носитель по п.2, в котором команды для оптимизации обработки временной разметки включают в себя команды для кэширования по меньшей мере одного промежуточного выражения, идентифицированного внутри ХРАТН выражения.
5. Машиночитаемый носитель по п.2, в котором команды для оптимизации обработки временной разметки включают в себя команды для оценки по меньшей мере одного промежуточного выражения, идентифицированного внутри ХРАТН выражения.
6. Машиночитаемый носитель по п.2, в котором команды для оптимизации обработки временной разметки включают в себя команды для идентификации множества промежуточных выражений внутри ХРАТН выражения и команды для связи промежуточных выражений с соответствующими узлами в объектной модели документа.
7. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки временной разметки путем идентификации выражений во временной разметке и команды для определения того, зависят ли значения выражений от наступления предварительно определенных событий.
8. Машиночитаемый носитель по п.7, дополнительно содержащий команды для связи предварительно определенных событий с идентификаторами событий, причем события связаны с пользовательским вводом.
9. Машиночитаемый носитель по п.8, дополнительно содержащий команды для связи идентификаторов событий по меньшей мере с одним из выражений, причем по меньшей мере одно выражение зависит от наступления по меньшей мере одного из предварительно определенных событий.
10. Машиночитаемый носитель по п.1, дополнительно содержащий команды для приема указания, что наступил временной такт.
11. Машиночитаемый носитель по п.10, дополнительно содержащий команды для приема по меньшей мере одного ХРАТН выражения в ответ на прием указания такта.
12. Машиночитаемый носитель по п.11, дополнительно содержащий команды для приема указания, что произошел пользовательский ввод, и для связи пользовательского ввода по меньшей мере с одним предварительно определенным событием.
13. Машиночитаемый носитель по п.12, дополнительно содержащий команды для определения того, зависит ли ХРАТН выражение от наступления предварительно определенного события.
14. Машиночитаемый носитель по п.13, дополнительно содержащий команды для переоценки ХРАТН выражения, если оно зависит от наступления предварительно определенного события.
15. Машиночитаемый носитель по п.13, дополнительно содержащий команды для восстановления предыдущего ХРАТН выражения, если оно не зависит от наступления предварительно определенного события.
16. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки с использованием конечного автомата.
17. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки с помощью идентификации множества выражений, встречающихся во временной разметке, и для распознавания того, что по меньшей мере два выражения дополняют друг друга.
18. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки с помощью совместно используемого пула памяти.
19. Машиночитаемый носитель по п.1, в котором команды для оптимизации обработки временной разметки включают в себя команды для оптимизации обработки с помощью планировщика.
20. Устройство для проигрывания HD-DVD, включающее в себя машиночитаемый носитель памяти по п.1.
ЕР 1653466 А1, 03.05.2006 | |||
Погрузочное устройство забойного конвейера | 1990 |
|
SU1752987A1 |
Устройство для перекрытия кровотока | 1986 |
|
SU1445710A1 |
Способ обработки питьевых минеральных вод | 1988 |
|
SU1608131A1 |
ИНДЕКСНАЯ СТРУКТУРА МЕТАДАННЫХ, СПОСОБ ПРЕДОСТАВЛЕНИЯ ИНДЕКСОВ МЕТАДАННЫХ, А ТАКЖЕ СПОСОБ ПОИСКА МЕТАДАННЫХ И УСТРОЙСТВО, ИСПОЛЬЗУЮЩЕЕ ИНДЕКСЫ МЕТАДАННЫХ | 2003 |
|
RU2283509C2 |
Авторы
Даты
2012-08-27—Публикация
2007-12-26—Подача