Вопрос по DIrectShow
От: Alexdir  
Дата: 05.01.08 14:43
Оценка:
Категорически всех приветствую!!!

Вопрос такой: я не совсем понимаю, зачем нужен фильтр Wav Dest. Его всюду ставят в схемах перекодировки из MP3 в WAV и наоборот, перед фильтром File Writer. Мои эксперименты показали, что всё и без него нормально работает.

К примеру, следующий граф:

[ FileReader ] -> [ MPEG1Splitter ] -> [ MPEG Layer 3 Decoder ] -> [ FileWriter ]

Между File Writer-ом и декодером должен стоять Wav Dest, но его отсутствие или наличие никак на работу программы не влияет. В качестве декодера использую Fraunhofer 1.9 (l3codecx.ax).

Читал, что Wave Dest на самом деле ничего не делает, а нужен для совместимости. Была идея, что он MEDIATYPE_Audio преобразует в MEDIATYPE_Stream, но это на уровне домыслов.

P.S. За основу для своей проги я взял пример, который лежит вот здесь.
Re: Вопрос по DIrectShow
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 06.01.08 13:35
Оценка:
В Вашем графе должен получаться файл с просто данными, без заголовков. Как обычный плеер узнает, что это за данные?
Wav Dest должен прописывать заголовок WAV файла, для этого он и применяется.
Re[2]: Вопрос по DIrectShow
От: Alexdir  
Дата: 07.01.08 00:38
Оценка:
Это казалось бы очевидно, НО почему-то всё работает и если я напрямую подключаю Decoder к File Writer-у. Собственно вопрос по этой причине возник. Не люблю я такие неопределенности. И ещё, в каком-то хелпе прочитал про Wav Dest, что он do nothing и нужен для совместимости. Вот только чего и с чем. Сейчас рою исходники. Может чего и нарою
Re: Вопрос по DIrectShow
От: ISergy  
Дата: 07.01.08 18:10
Оценка:
Добрый вечер.
Фильтр FileWriter просто пишет все входящие данные в файл.
Соответственно если перед ним не ставить WAV Dest то получим файл в соответствии со стандартом
MPEG 1 Layer-3 (стандарт принадлежить ISO, номер не помню). В этом формате тип данных присутствует внутри файла или внутри данных — для этого стандарта это одно и то же.

Добавляя WAV Dest получим файл формата RIFF (т.е. файл с описанием формата в виде WAVEFORMAT/WAVEFORMATEX). Данные будут те же.
Re[2]: Вопрос по DIrectShow
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 07.01.08 23:56
Оценка:
IS>Соответственно если перед ним не ставить WAV Dest то получим файл в соответствии со стандартом MPEG 1 Layer-3

С чего бы? Там же декодер стоит.
Re: Вопрос по DIrectShow
От: Patalog Россия  
Дата: 09.01.08 08:14
Оценка: +1
Здравствуйте, Alexdir, Вы писали:

[]

WavDest дописывает заголовок (в StopStreaming) и говорит MEDIATYPE_Stream, MEDIASUBTYPE_WAVE на выходной пин.
Ничего более он не делает. Т.е. нужен он только для того чтобы получить wav файл.
Если декодер сам не делает тоже самое, что делает WavDest, то на выходе получим raw pcm.
... << RSDN@Home 1.2.0 alpha rev. 772>>
Почетный кавалер ордена Совка.
Re[2]: Вопрос по DIrectShow
От: Аноним  
Дата: 17.01.08 05:37
Оценка:
P>Здравствуйте, Alexdir

Описанная мною ситуация имеет место по Windows Vista. Под Windows XP фильтры MPEG Layer 3 Decoder и FileWriter не соединяются без Wave Dest.

Это с форума "DirectShow форум" — не Ваш вопрос случайно ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.