усовершенствования воспроизведения DVD в Windows Vista

в этом разделе описаны улучшения воспроизведения DVD-дисков и навигации в Windows Vista.

Указание декодера

в более ранних версиях DirectShow было сложно указать определенный декодер MPEG-2 при создании графа воспроизведения DVD. начиная с Windows Vista, приложение может указать декодер следующим образом:

  1. Добавьте декодер в граф перед вызовом идвдграфбуилдер:: рендердвдвидеоволуме.
  2. Вызовите рендердвдвидеоволуме и установите _ флаг AM _ DVD _ не _ снимать флажок. Навигатор DVD предоставит предпочтение добавленному декодеру.

Поддержка расширенного обработчика видео

рекомендуется, чтобы приложения, написанные для Windows Vista или более поздней версии, использовали расширенный модуль подготовки видео (евр) для воспроизведения видео. Чтобы использовать Евр в приложении для воспроизведения DVD-дисков, установите _ флаг AM DVD _ Евр only ( _ только при вызове рендердвдвидеоволуме).

Чтобы настроить Евр перед построением графа, вызовите идвдграфбуилдер:: жетдвдинтерфаце и запросите интерфейс иеврфилтерконфиг или имфвидеорендерер . (Эти интерфейсы описаны в документации по Media Foundation SDK). Дополнительные сведения о настройке модуля подготовки видео в графе воспроизведения DVD см. в разделе Создание фильтра dvd Graph.

Навигатор DVD не будет использовать евр, если метод иамдекодеркапс:: жетдекодеркапс декодера не ВОЗВРАЩАЕТ _ флаг AM жетдекодеркап _ Query _ Евр _ . Этот флаг определен, чтобы обеспечить совместимость приложений с существующими декодерами. Если рендердвдвидеоволуме завершается сбоем с _ использованием _ _ флага только DVD евр, вернитесь к другому модулю подготовки видео, вызвав метод повторно без флага.

Плавное воспроизведение

Теперь Навигатор DVD может выполнять плавный обратный воспроизведение. В случае плавного воспроизведения DVD-навигатор отправляет в декодер все единицы объектов видео (Вобус), а декодер выдает кадры в обратный порядок. Эта функция требует, чтобы декодеры поддерживали плавный обратный воспроизведение.

Когда приложение устанавливает отрицательное значение скорости воспроизведения, Навигатор DVD запрашивает декодеры для свойства _ _ реверсемаксфуллдатарате Rate . Значением этого свойства является абсолютное значение максимальной скорости на обратную скорость x 10000. Например, если максимальная обратная скорость — 2,0, то значение равно 20000.

Если видеодекодер поддерживает свойство, Навигатор DVD использует плавное обратные воспроизведения. Поток звука воспроизводится в обратную, если декодер поддерживает свойство; в противном случае аудио-поток будет отключен. Если видеодекодер не поддерживает свойство или скорость воспроизведения превышает максимальную обратную частоту видеодекодера, Навигатор DVD переключается в режим сканирования. В режиме сканирования DVD-навигатор в декодер отправляет только кадры I, а все кадры B и P удаляются.

Во время плавного воспроизведения DVD-навигатор отправляет полный Вобус декодеру. Навигатор DVD отправляет Вобус в прямом порядке, но передает кадры внутри каждого ВОБУ в их нормальном порядке. В начале каждого ВОБУ в _ заметке DVD устанавливается флаг AM реверсеблоккстарт в образце. В конце ВОБУа DVD-навигатор отправляет пустой пример с _ флагом AM реверсеблоккенд. Чтобы получить эти флаги, вызовите метод IMediaSample2:: Properties в образце. Флаги задаются в элементе двтипеспеЦификфлагс структуры _ _ свойств SAMPLE2 .

Декодер кэширует данные видео до тех пор, пока не получит пример с _ флагом AM реверсеблоккенд. На этом этапе декодер доставляет декодированные кадры в обратный порядок. Например, если ВОБУ 1 содержит кадры 1 – 4, а ВОБУ 2 содержит кадры 5 – 8, то Навигатор DVD будет отсылать кадры в следующем порядке:

(Начало блока) F5 F6 F8 (конец блока) (начало блока) F1 F2 F3 F5 (конец блока)

Декодер должен обрабатывать кадры следующим образом:

  1. Декодирование ВОБУ 2.
  2. Выходные кадры: F8 F7 F6 F5
  3. Декодирование ВОБУ 1.
  4. Выходные кадры: F4 F3 F2 F1

Навигатор DVD задает метку времени для первого образца в ВОБУ (в этом примере — F1 и F5), но отметка времени содержит время презентации для начала блока, поэтому декодер должен применить этот момент к последнему примеру в блоке (F4 и F8). Время презентации увеличивается во время воспроизведения на противоположном этапе.

Как правило, ВОБУ содержит до 42 кадров и может содержать более одной группы изображений (GOP). Чтобы декодировать весь ВОБУ, декодер должен кэшировать декодированные кадры I и P. Вобус на DVD-дисках не закрываются группы GOP, поэтому кадр B в GOP может потребовать декодирования всех кадров ссылок в предыдущем GOP. Если у декодера недостаточно поверхностей для хранения всех декодированных кадров, может потребоваться повторное декодирование выбранных кадров.

Частота изменений

По умолчанию Навигатор DVD очищает граф между изменением скорости. Однако если декодер поддерживает свойство _ _ ресетонтимедиск Rate , то Навигатор DVD не будет очищать граф, что приведет к более плавному переходу между скоростью воспроизведения.

В календарике на DVD-диске образцы отметок времени для воспроизведения с частотой 1x, независимо от фактической скорости воспроизведения. Декодер должен масштабировать метки времени на декодированных образцах в соответствии с фактической скоростью воспроизведения. (Дополнительные сведения см. в описании _ _ Свойства симплератечанже Rate.) В результате при воспроизведении с тактовой частотой, отличной от 1x, метки времени для декодированных фреймов расходятся от тех, которые находятся в кодированных кадрах. Каждый раз, когда Навигатор DVD устанавливает _ _ флаг тимедисконтинуити в образце, декодер должен повторно синхронизировать свои штампы времени. Иными словами, декодированный кадр должен иметь ту же метку времени, что и входной фрейм. Чтобы получить _ пример _ флага тимедисконтинуити, вызовите IMediaSample2:: Properties в примере. Флаг задается в элементе двсамплефлагс структуры _ _ свойств SAMPLE2 AM .

Управление питанием

в Windows Vista навигатор DVD включает следующие улучшения управления питанием:

  • Более высокое разрешение таймера
  • Больший кэш данных

Разрешение таймера. приложения могут запросить минимальное разрешение таймера, вызвав функцию тимебегинпериод . Более высокое разрешение (более короткий период) увеличивает скорость реагирования системы до периодических событий, таких как время ожидания, но также может увеличить частоту переключения контекста потока.

по умолчанию ссылочное время в DirectShow устанавливает разрешение таймера равным 1 миллисекунде. В этом решении процессор не будет вводить режимы энергосбережения. начиная с Windows Vista, навигатор DVD переопределяет поведение по умолчанию для ссылочного времени, вызывая иреференцеклокктимерконтрол:: сетдефаулттимерресолутион для ссылочного времени. Это приведет к удалению запроса часов на разрешение таймера, равное 1 миллисекунде. Это может позволить ПРОЦЕССОРу переходить в режим энергосбережения.

Разрешение таймера является глобальным параметром; Windows выбирает наименьшее запрошенное значение. Фильтры формирователя видео (VMR-7 и VMR-9) устанавливают разрешение таймера равным 1 миллисекунде. Евр обычно задает для разрешения значение от 4 до 8 миллисекунд, в зависимости от того, включена ли композиция рабочего стола и находится ли Евр в полноэкранном режиме. В других приложениях также может быть задано разрешение.

Размер кэша. приложения могут указать объем данных, кэшируемых в КЭШЕ навигатора DVD, установив _ параметр качесизеинмб DVD в методе IDvdControl2:: SetOption . Если приложение устанавливает для этого флага большое значение (> 50 МБ), DVD-дисковод может уменьшаться после первоначальной предварительной выборки, в зависимости от оборудования, что может снизить энергопотребление.

DVD-приложения