Категорически всех приветствую!!!
Вопрос такой: я не совсем понимаю, зачем нужен фильтр 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. За основу для своей проги я взял пример, который лежит вот
здесь.
В Вашем графе должен получаться файл с просто данными, без заголовков. Как обычный плеер узнает, что это за данные?
Wav Dest должен прописывать заголовок WAV файла, для этого он и применяется.
Это казалось бы очевидно, НО почему-то всё работает и если я напрямую подключаю Decoder к File Writer-у. Собственно вопрос по этой причине возник. Не люблю я такие неопределенности. И ещё, в каком-то хелпе прочитал про Wav Dest, что он do nothing и нужен для совместимости. Вот только чего и с чем. Сейчас рою исходники. Может чего и нарою
Добрый вечер.
Фильтр FileWriter просто пишет все входящие данные в файл.
Соответственно если перед ним не ставить WAV Dest то получим файл в соответствии со стандартом
MPEG 1 Layer-3 (стандарт принадлежить ISO, номер не помню). В этом формате тип данных присутствует внутри файла или внутри данных — для этого стандарта это одно и то же.
Добавляя WAV Dest получим файл формата RIFF (т.е. файл с описанием формата в виде WAVEFORMAT/WAVEFORMATEX). Данные будут те же.
Здравствуйте, Alexdir, Вы писали:
[]
WavDest дописывает заголовок (в StopStreaming) и говорит MEDIATYPE_Stream, MEDIASUBTYPE_WAVE на выходной пин.
Ничего более он не делает. Т.е. нужен он только для того чтобы получить wav файл.
Если декодер сам не делает тоже самое, что делает WavDest, то на выходе получим raw pcm.
... << RSDN@Home 1.2.0 alpha rev. 772>>
P>Здравствуйте, Alexdir
Описанная мною ситуация имеет место по Windows Vista. Под Windows XP фильтры MPEG Layer 3 Decoder и FileWriter не соединяются без Wave Dest.
Это с форума "DirectShow форум" — не Ваш вопрос случайно ?