DirectShow аналог для Symbian OS? - PullRequest
       8

DirectShow аналог для Symbian OS?

0 голосов
/ 25 декабря 2009

Итак, в Windows Mobile есть DirectShow для захвата редактирования мультимедиа и каков его аналог для Symbian OS (s60 v5)?

1 Ответ

7 голосов
/ 29 декабря 2009

В Symbian есть ряд API, которые предоставляют аудио и видео функциональность; обратите внимание, я не знаком с DirectShow, но, основываясь на кратком обзоре Википедии, похоже, что API-интерфейсы DirectShow более мощные, чем то, что предлагает Symbian (в настоящее время).

Вот краткий обзор API-интерфейсов, доступных в Symbian, и того, что вы можете с ними сделать.

DevSound

DevSound API, CMMFDevSound, - это аудио интерфейс API самого низкого уровня. Он обеспечивает аудио вход и выход потоковой передачи в различных форматах. Точные поддерживаемые форматы будут зависеть от конкретного оборудования, которое вы используете, но оно всегда поддерживает 16-битную PCM и обычно также поддерживает AMR, AAC, MP3. API не самый простой в использовании, но, вероятно, его стоит использовать, если вы хотите выполнять потоковую передачу аудио в режиме реального времени.

Классы CMMFAudioInputStream и CMMFAudioOutputStream по сути являются обертками для DevSound; они проще в использовании, но не так мощны.

Утилиты Audio Clip

Для базового воспроизведения / записи файлов (клипов) вы можете использовать CMdaAudioPlayerUtility и CMdaAudioRecorderUtility. Они обеспечивают функциональность на уровне «открытый файл», «воспроизведение», «поиск» и т. Д. Они являются наиболее простым вариантом, если вы просто хотите воспроизводить / записывать аудиофайлы. Они бесполезны, если вы хотите иметь возможность генерировать аудио во время воспроизведения или обрабатывать его во время записи.

Утилиты для видеоклипов

Это аналог утилит аудиоклипа, но используемый для воспроизведения / записи видеофайлов. Используемые классы CVideoPlayerUtility и CVideoRecorderUtility. Они включают использование прямого доступа к экрану и / или ECAM для рендеринга / записи видео (см. Ниже).

Прямой доступ к экрану

Direst Screen Access (DSA) обеспечивает быстрый доступ к видеооборудованию и используется для рендеринга видео, видоискателей с камеры или чего-либо еще, что требует высокоскоростной графики. Класс для начала: CDirectScreenAccess.

Точное поведение DSA может очень зависеть от вашего конкретного оборудования: например, некоторые реализации «прервут» ваш DSA, если меню или другое окно нарисовано поверх области DSA; другие могут разрешить DSA продолжать работу в фоновом режиме, выполняя отсечение вашего региона DSA на аппаратном уровне.

Обратите внимание: если вы используете DSA напрямую для рендеринга видео, вам нужно будет организовать декодирование видеопотока самостоятельно; DevVideo (ниже) может помочь здесь. Только несжатые растровые изображения могут быть обработаны с использованием DSA.

ECAM

API-интерфейс ECAM, CCamera, обеспечивает доступ к любому присутствующему оборудованию камеры. Он может передавать живые несжатые видеокадры с камеры (для кодирования или визуализации видоискателя, обычно с использованием DSA) или снимки.

DevVideo

DevVideo API обеспечивает низкоуровневый доступ к оборудованию для кодирования и декодирования видео. В зависимости от используемого вами оборудования, оно также может поддерживать рендеринг закодированного видеопотока в область DSA. API сложно использовать, и вы, вероятно, столкнетесь с нарушениями между различными моделями телефонов. Я бы рекомендовал использовать его только в том случае, если вам действительно необходимо выполнить кодирование / декодирование потокового видео с аппаратным ускорением. Обратите внимание, что упомянутые выше утилиты для видеоклипов используют DevVideo под капотом, так что вы получите выгоду от любого присутствующего аппаратного ускорения, если будете их использовать.

Классы, на которые нужно смотреть: CMMFDevVideoPlay и CMMFDevVideoRecord. Некоторые предостережения:

  • Nokia исключила файлы .lib из некоторых SDK, что означает, что вы не можете использовать эти API со стандартным SDK; Я не уверен, какова текущая ситуация здесь.
  • Реально, чтобы эти классы работали, вам, вероятно, понадобится профессиональная помощь от Nokia, то есть вам придется заплатить за нее. Я был бы рад ошибиться здесь: -)

Какие API использовать?

Хороший вопрос. Это зависит от того, что вы хотите сделать. Если все, что вы хотите сделать, - это базовое воспроизведение / запись аудио / видео, используйте утилиты клипов. Их гораздо проще использовать, чем другим, если они достаточно мощные для ваших нужд.

Если, однако, вам необходимо выполнить потоковую передачу аудио или видео, вам необходимо использовать DevSound и / или DSA. Если вы хотите сделать что-то вроде:

  • рендеринг потокового аудио и видео по сети
  • генерация звука в режиме реального времени, например, звуковые эффекты игры
  • обработка записанного аудио / видео в реальном времени, например, потоковая передача с камеры по сети

Тогда вам нужно будет использовать API низкого уровня, и вам, вероятно, придется многому научиться!

Некоторые ссылки

  • пример исходного кода на странице Symbian books . Код из Symbian OS C ++ для мобильных телефонов v3 содержит примеры для всех мультимедийных API более высокого уровня (т. Е. Не DevSound или DevVideo). К сожалению, сама книга недоступна в Интернете.
  • Forum Nokia имеет пример примера кода , который, возможно, стоит посмотреть.
...