На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Обратите внимание:
1. Прежде чем начать новую тему или отправить сообщение, убедитесь, что вы не нарушаете правил форума!
2. Обязательно воспользуйтесь поиском. Возможно, Ваш вопрос уже обсуждали. Полезные ссылки приведены ниже.
3. Темы с просьбой выполнить какую-либо работу за автора в этом разделе не обсуждаются.
4. Используйте теги [ code=cpp ] ...текст программы... [ /code ] для выделения текста программы подсветкой.
5. Помните, здесь телепатов нет. Старайтесь формулировать свой вопрос максимально грамотно и чётко: Как правильно задавать вопросы
6. Запрещено отвечать в темы месячной и более давности без веских на то причин.

Полезные ссылки:
user posted image FAQ Сайта (C++) user posted image FAQ Форума user posted image Наши Исходники user posted image Поиск по Разделу user posted image MSDN Library Online (Windows Driver Kit) user posted image Google

Ваше мнение о модераторах: user posted image B.V.
Модераторы: B.V.
  
> В чем отличие медиатипов - MEDIATYPE_Audio от MEDIATYPE_Stream ? , DirectShow
    добрый вечер!

    Не могли бы Вы подсказать, в чем отличия типов медиа в DirectShow (для SetFormatType)

    1) MEDIATYPE_Audio
    от
    2) MEDIATYPE_Stream ?

    Для (1) предполагаю работать с MEDIASUBTYPE_PCM - с ним более-менее понятно, а для чего используется MEDIATYPE_Stream и какие для него SUBTYPE'ы используются и каким должен быть формат буфера ?

    Если имеет значение: планируется, что один комп будет записывать данные с микрофона и направлять в сеть, а другой комп - получать из сети, загружать в source-фильтр DirectShow, а с него и выводить в динамик.
    Вопрос актуален для реализации фильтра на 2-ом компе - какой тип выходного потока заявить в source-фильтре и (если не PCM), в каком формате он должен предоставить выходные данные ?
      Цитата Lun2 @
      Для (1) предполагаю работать с MEDIASUBTYPE_PCM - с ним более-менее понятно, а для чего используется MEDIATYPE_Stream и какие для него SUBTYPE'ы используются и каким должен быть формат буфера ?

      https://docs.microsoft.com/en-us/windows/wi...stream-subtypes
      Stream используется когда нет данных о размере кадров, например. Тогда, в теории, декодер берёт на себя распознавание кадров по паттернам в потоковых данных
        B.V., спасибо за информацию!

        Еще прошу подсказать, если можно, по созданию фильтра-источника звуковых данных.
        На этапе согласования медиатипов установлен (SetMediaType) тип = MEDIATYPE_Stream/MEDIASUBTYPE_PCM, в структуре WAVEFORMATEX мой фильтр получил данные о звуке:
        pvi->wBitsPerSample;
        pvi->nSamplesPerSec;
        pvi->nChannels;

        Далее фильтр (точнее, его выходной pin) начинает генерировать аудио с указанными параметрами и заполнять выборку MediaSample в методе FillBuffer.

        Вопросы:
        1) Если при выполнении метода FillBuffer выяснится, что какие-то параметры из 3-х перечисленных изменились, то какие действия необходимо предпринять ?
        Насколько я понимаю, pin должен заполнять буфер данными того формата, который согласован ранее, а вот как поменять это согласование именно из FillBuffer ?

        2) FillBuffer проставлять timestamp (через SetTime). А что случится если начало timestamp окажется в прошлом, например, текущее время = 10, а в timestamp: от 5 до 12 - он, что, кусок 5-10 выкинет, а кусок 11-12 пойдет дальше (у меня - на динамик) ?

        3) Насколько я понял, аллокатору памяти (IAllocator...) можно поручить захватить несколько буферов - для чего это может потребоваться - данные поступают на вход быстрее, чем продвигаются по графу ?

        4) Предполагается, что звук будет передаваться из сети в мой фильтр, а из него - на динамик. Имеет ли какое-то преимущество способ накопления данных. Например:
        способ1 - как только получают пакет данных со звуком, сразу отдаю в фильтр (много маленьких пакетов) или
        способ2 - вне методов графа, фильтров, накапливаться большой пакет данных и его направлять в фильтр (мало больших пакетов). Маленькие - это несколько кбайт, большие это десятки кбайт.
        ?
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0248 ]   [ 17 queries used ]   [ Generated: 26.04.24, 07:33 GMT ]