Overclockers.ru 
 Конференция 
 Персональные страницы 
 Панель управления 
Текущее время 02:33, 12.03.2010  
    Персональные Страницы          
   
mein: профиль | галерея [124] | файлы [57] | записи [3] (список) | статьи [1] (список)

Записи

Прикручиваем auCDtect к foobar2000
16:55 18.05.2007      С развитием Интернета появилась возможность вместо mp3 качать( ) lossless. Т.е. сграбленный диск сжимается в беспотерьный формат(flac, ape, wv и тд) или вообще не сжимается(WAV-PCM)(чаще в привычных архивах). Но иногда под видом lossless'а попадают фальшивки: ранее проходившие сжатие с потерями(mp3,wma,vorbis и тд). Это относится также и к продаваемым пиратским CD-аудио дискам. Естественно хочется как-то иметь возможность быстрой удобной проверки. К примеру, я не обладаю достаточно качественной акустикой и слухом, чтобы чётко говорить по первым нотам "фарш" или оригинал. В поисках истины попал на эту страничку. Есть утилита (Tau Analyzer), которая может проверять CDDA диски и выдавать "вердикт" по каждому треку. Основной недостаток программы это то, что она работает напрямую с диском(физическим или виртуальным). А создавать аудио-диск из имеющихся треков как минимум не удобно (пусть даже образ). Но автор сделал для такого случая консольную утилиту auCDtect - принимает на вход(как из файла, так и из stdin) wav-файл и выдаёт результат в текстовом виде. Ей нужно давать распакованные данные, а если у нас материал сжат в lossless формат, то это опять же неудобно. Вот тут-то мне и пришла в голову идея научить foobar2000 работать с этой программой. Решается сразу много вопросов: не нужно применять декомпрессоры, нет проблем с cue-списками, возможность легко работать со множеством файлов (любых типов, даже заведомо lossy ), запуск процесса буквально двумя-тремя кликами мыши.
В foobar2000 есть замечательный компонент converter. Он позволяет подключить к программе практически любой CLI-аудио-энкодер. Вот его то я и решил задействовать. Но напрямую подключить auCDtect к фубару не получилось (из-за проверок параметров), да и не удобно было бы. Поэтому пришлось написать дополнительно программу-посредника. Получившаяся схема достаточно запутана, но ничего лучше я не придумал. Примерная схема работы:

   

   Итого нужно три программы: мои fooCDtectP.exe и fooCDtectG.exe + auCDtect.exe.

   Настройка foobar2000:
Скидываем все три программы в некоторую папку. К примеру /foobar2000/auCDtect или любую другую. Запускаем фубар и идём в настройки converter'а, нажимаем клавишу "Add New", тип энкодера: Custom. Заполняем все примерно как на рисунке:

   


   Encoder: путь к программе fooCDtectP(не путать с G). Расширение я написал aucd, но можно любое. На самом деле файлов как бы и не нужно создавать, но фубар ругается в таком случае, поэтому я создаю временно файлы с указанным расширением(в файлы бросаю результат). Параметры на картинке(-m0 -v -i %s -o %d) наверное самые оптимальные: -m<0..40> - скорость проверки(0-медленная/лучшая), -v - вывод дополнительной информации, -i %s - входной wav-файл, -o %d - выходной файл. Последние два параметра обязательны! В разделе Bit Depth Control обязательно нужно указать: format is lossless. В Display Info можно писать что угодно.

   Далее выделяем нужный трэк или трэки(во всевозможных вариантах: из плэйлиста, из плэйлист-свитчера, из album list panel и тд), жмём ПКМ и выбираем пункт меню Convert->convert to .../convert to Same Directory/convert to Single File. Какой из вариантов выбрать зависит от ситуации и желаний, если вы не понимаете о чём речь выбирайте "convert to Same Directory" . Пойдёт процесс, через некоторое время должно появится окно программы fooCDtectG в котором можно будет видеть результаты. Желательно до окончания "кодирования" программу не закрывать. После закрытия программы(fooCDtectG) все файлы(с расширением aucd) удалятся(в настройках программы можно это отменить). Для корректной работы нельзя запускать одновременно с тестом другие потоки кодирования. И ещё: запускать процесс желательно без всяких реплэйгайнов и DSP - думаю почему, объяснять не нужно. Также auCDtect принимает только материал формата PCM/2ch/16bit/44100Hz .

   Важно: auCDtect не может однозначно определить подделка это или нет. Поэтому полностью полагаться на неё не стоит. Если есть сомнения, лучше проанализировать визуально спектрограмму трека в специализированных программах.

   На закуску: ввиду того, что декодированием занимается foobar, подсунуть анализатору можно любой тип файлов. Т.е. можно проверять программу на качество её работы, подсовывая mp3/aac и другие файлы .

   Брать архив со всем необходимым тут (~100k). В архив бросил исходник. fooCDtectG собрана как unicode-приложение со всеми плюсами и минусами.

   зы: с покупкой двухядерника выяснилось, что фубар задействует сразу несколько энкодеров(что несомненно плюс). В следствии этого предложенная схема подглючивает(неправильные названия трэков). Разрулить можно выставив в Диспетчере задач работать однопроцессорно приложению foobar2000.exe. И ещё из текущих глюков: не всегда запускается окно с выводом результатов. Решение: попробовать ещё раз, или запустить foocdtectG.exe вручную до запуска тестирования. В следующей версии попробую эти недочёты устранить...
 

x264GUI-Lite
21:43 09.05.2006      Собственно мой GUI для x264 (бесплатный H.264 энкодер). Сделал его, т.к. стандартные средства командной строки малопригодны для активного(например проведение тестов) пользования энкодера ввиду большого количества параметров, а существующие оболочки, в основном, продукты более широкого назначения. Т.е. я пытаюсь сконцентрироватся только на управлении x264.exe (другими словами никаких oneclick-dvdriper'ов не будет).
Программа делалась для себя, но если кому-то пригодится буду рад. Для этого привёл её в божеский(на мой взгляд ) вид, что обычно редко происходит с другими моими утилитами .

   Программа скомпилирована в Visual Studio 2003(MFC) - не требуется никаких дополнительных библиотек.

   Скачать(версия 1.10 от 14.04.2007) (~230к вместе с исходником).

   Немного о пользовании программы:
Моей целью не было сделать очень умный агрегат, поэтому многие вещи не проверяются и передаются напрямую энкодеру - нужно быть внимательным. Всегда надо проверять сгенеренную строку параметров на правильность.

   

   Типа changelog:

   14-04-2007
пофиксил несколько неприятных глюков. Так что как говорится "рекомендуемое обновление" .
* мультитридный режим теперь вроде работает. Раньше программа вылетала из-за того, что энкодер выдавал строчку, которую она не ожидала ;
* немного переделал обработку потоковых данных от энкодера, почему-то билды некоторых энкодеров выдают нестандартные окончания строк. Теперь должно работать;
* добавил в профиля по умолчанию stats-файл. Почему-то в мультитридном режиме x264 не хочет подбирать stats-файл на втором проходе, если он не указан явно. Также изменил параметр --threads в профилях по умолчанию на 0 (авто);
* на первой вкладке дорисовал показ свободного места на диске, на который сохраняем видео;
* по просьбам трудящихся добавил возможность выключения компьютера по окончанию последнего джоба. Выключает довольно жестко(через таймаут насильно гасит процессы) поэтому документы с несохранёнными данными лучше не оставлять .
* серьёзно переделал диалог создания скрипта. Добавил возможность выбирать заранее заготовленные деинтерлейс-фильтры из списка(readme.txt в папке filters). Фильтры в комплекте кинул исключительно для ознакомления с синтаксисом. Теперь ресайз в Preview производится средствами avisynth (если стоит галочка соответствующая). Диалоги настройки и preview могут друг-друга перекрывать. Быстро вызвать(выставит вперёд) диалог настроек можно дабл-кликнув по окну Preview. Теперь никаких тормозов с окном Preview нет. В самом окне Preview добавил кнопки покадрового просмотра(вперёд/назад) и кнопку "play" (пока играет на полной скорости, не соблюдая входной fps). Тут же есть более интересная кнопка benchmark: начинает декодировать кадры в отдельном потоке без вывода на экран результата - позволяет оценить чистую скорость скрипта(справа выводятся примерно раз в секунду средний fps). Хочу дальше модернизировать "создание скрипта".
* небольшие косметические исправления в коде. Собираюсь понемногу приводить код в порядок;

   26-11-2006
пофиксил несколько глюков:
* неестественное поведение диалогов открытия/сохранения;
* открытие скрипта на просмотр в MPC и некоторых других программах(пришлось дополнительные кавычки передавать в пути) не происходило;

   17-11-2006
масса мелких изменений/исправлений:
* на первую вкладку добавил выбор профиля, режим и битрэйт. Порядок пользования такой: открыли скрипт, выбрали профиль, вписали битрэйт(квант), добавили в очередь. Если же хотим немного подкрутить, то лучше действовать изначально со второй вкладки;
* калькулятор по клавише ОК вставляет битрэйт в соответсвующее поле;
* пофиксил в script info взятие информации. Теперь это быстрее и программа не валится при отсутствии vfw-YV12 декодера;
* в целом диалогами открытия/сохранения стало пользоватся удобнее;
* значительно увеличил производительность при просмотре скрипта(настройка зон, создание avs-скрипта). Заставил ависинт производить преобразование из YV12 в RGB. Теперь оно почти не тормозит ;
* Сменил параметры: --filter = --deblock, --analyse = --partitions, --nf = --no-deblock;
* В настройках добавил галочку Interlaced;
* На первой вкладке кнопки просмотра/редактирования скрипта обзавелись альтернативной опцией. Это если они не работают(в ридме подробнее);
* зы: в связи с тем что работа сильно растянулась по времени могут быть баги

   27:08:2006
В названии файла прошлого релиза была ошибка на месяц назад . На досуге кое что подработал. Из изменений:
* на вкладку general внизу добавил кнопки help и get version. Будут работать если версия x264 будет больше 550. На более ранних врядли;
* в настройках энкодера добавил level(никаких проверок - не знаю данных), а также появившийся с 554 версии ssim;
* в заданиях в контекстном меню добавил пункт непосредственного редактирования сгенеренной строки параметров;
* теперь кадый раз по выходу из программы содержимое вкладки log дописывается в файл log.txt(находится в папке с программой);
* подправил ещё кое-какие глюки;

   25:06:2006
Вот наконец называю программу первой версией. Дальнейшие разработки прекращаю. В процессе пользования если будут(а ведь будут же ) выявлены глюки, то буду исправлять. Если будут дельные предложения - тоже рассмотрю.
* исправил несколько замеченных багов;
* добавил файл readme.txt(сорри за форматирование, но ковырятся с такими мелочами влом). В нём описаны некоторые детали пользования программой;

   15:06:2006
почти релиз кандидат
* если в папке с программой есть ярлыки edit.lnk и view.lnk, то становится доступным запуск просмотра и редактирования ависинт-файла из программы. Ярлыки настраиваем на любые программы(типа блокнот и любого проигрывателя);
* добавил контекстное меню в лист с джобами. Теперь можно произвести запуск воспроизведения полученного клипа парямо оттуда. Тут же есть автоматическое создание скрипта StackVertical. И ещё пара мелочей;
* добавил меню по нажатию правой кнопкой мыши по значку трэя;
* пофиксил не совсем коректный кроп при создании скрипта и добавил кнопку закрытия на окно превью;
* пофиксил ещё кучу недочётов(в основном в интерфейсе);
* теперь и исходник доступен;

   09:06:2006
* добавил создание ависинт-скрипта из d2v-файла(с визуальным кропом и ресайзом аля ГК);
* пофиксил SAR-калькулятор(кроп не нужно было учитывать);
* добавил возможность приостановки процесса;
* ещё парочка мелких исправлений;

   30:05:2006
* на первой вкладке при открытии avs-файла отобржается(ручной и автоматический режим) немного информации о видео;
* лог-файл создаётся в той же директории где и avs-скрипт, если не указан полный путь к логу;
* исправил несколько глюков;

   26:05:2006
* поправил несколько мелких глюков в настройках энкодера;
* сделал несколько профилей(передрал у мегая);

   25:05:2006
* ночное исправление - неправильный ресайз окна настройки зон;

   24:05:2006
* исправил невозможность abort'а после нескольких, подряд выполняющихся, заданий;
* эксперементально добавил визуальную(через vfw) настройку зон;

   20:05:2006
* пофиксил глюк меню "Abort", которое не всегда исчезало;

   17:05:2006
* Появилось меню программы;
* Есть простой битрэйт-калькулятор и калькулятор для расчёта SAR(для кодирования без ресайза);
* Теперь можно прятать программу в трэй. В трэе можно отображать процент выполнения или скорость кодирования(fps) текущего жоба;

   09:05:2006
* теперь отмена(abort) моментально гасит процесс(в планах более корректное завершение просесса, но пока не знаю как осуществить);
* добавил возможность смены приоритета процесса x264.exe до и во время кодирования;
* пофиксена очередная порция глюков;
 

Непокорный ASUS9550GE
23:07 07.02.2006       Собственно карту купил ещё летом. Предварительно почитал(неоднократно ) всю ветку про сабжевые карты. В те времена у многих ASUS 9550GE гнался по памяти до частот порядка 580 и больше на гнусмасовой 5-ти наносекундной памяти. Был у меня выбор брать Sapphire или ASUS. И он был зделан в пользу ASUS. Мало того: в течении нескольких дней я взял две карточки(вторую для знакомого) с одной и тойже конторы.
Память на карте Samsung K4D261638F-TC40 - в общем то распространёная достаточно. Разгон составил по ядру около 430Мц, по памяти 540Мц, причём ATT ловила иногда артефакты, но играться (NFSUG2 - специально для неё обновлял видео ) можно было весь день без видимых артефактов. Интересно что вторая карточка показала разгон практически один в один (разве что ядро на 5-10Мц чють больше погналось). Меня сильно терзали мысли: как же так у людей с такой же картой и с номинально худшей памятью гонится куда лучше? Собственно я до сих пор этого не понимаю. Ну да ладно - в любом случает разгон получился на уровне среднего(даже выше) так что можно радоватся.

   Первая попытка вольтмода

   Перечитал всё что было на то время по вольтмодам видеокарт серии 9550-9600. Основной вывод всех статей по вольтмоду данных видеокарт это то, что вольтмод ядру очень даже кстати, а памяти положительных результатов было мало. Ну да ничего подумал я будем ядро прогревать. Напряжение без модификаций 1.19В на ядре и 2.62В на памяти (одинаковое по Vdd и Vddq). На карте установлен PWM-контроллер ISL6522 . Как его "приручить" информации было более чем достаточно. Достаточно по обратной связи(нога FB) "дорисовать" сопротивление. Тем самым, заставляя думать контроллер, что выходное напряжение понизилось. Как, куда и что паять писать не буду, т.к. найти информацию по этому поводу не проблема. В общем поднимаю напряжение до 1.3В и всё... память уже вместо 540Мц стабильно только около родных 400Мц. Дальше-хуже. Успел погонять ядро ради спортивного интереса - при напряжении 1.3В 3dmark2001&2003 карточка проходила на частоте 490Мц по ядру, но результат был далёк от ожидаемого. В общем благополучно забыл про модификации до начала этого года. Но вот в начале года снова вернулся энтузиазм .

   Попытка номер два

   Первый раз я проводил вольтмод, тупо прочитав к какой ноге нужно подпаятся. Сейчас решил разобратся основательно. В "разборках" основным инструментом был мультиметр(точнее его звонилка ). В самый раз перве фотки выложить:



Карта немного не в лучшем виде - титановая серебрянка никак не хотела отмыватся. Значит справа я выделил питание ядра: 1) - контроллер, 2) - мосфеты, 3) - конденсатор(с него снимаем выходное напряжение). Слева я обвёл мосфеты, которые формируют питание памяти - Верхний для Vdd нижний для Vddq(как ещё часто называют - питание выходных буферов).
Вот про питание памяти я попробую подробнее расказать. Дело в том, что большинство статей про вольтмоды написаны в стиле: "Ищем вот такую-то контактную площадку, и допаиваем туда такой-то резистор". И все дружно вольтмодят какрточки ни грама не представляя, как это всё работает.
Вся, нижеописанная, информация про память была "выужена" из видеокарты - ничего подобного я не встречал (по крайней мере на наших сайтах), поэтому попытаюсь заполнить пробел (хоть и не явлюсь специалистом в этом деле).

    Смотрим на плату в области памяти - видим два мосфета. Можно было предположить, что рядом должен быть рулящий их контроллер (как в случае питания ядра), но осмотр платы (и гугл) показал обратное - ничего похожего. Я так понимаю это не редкий случай. Смотрим на микросхему памяти:

   



   Первая нога и есть питание памяти (Vdd) - именно его обычно вольтмодят. Третья нога это питание выходных буферов (Vddq) - именно его часто не рекомендуют трогать, пугая сгоранием карточки. Берём звонилку (обычно мультиметр) становимся например на первую(vdd) ногу одним щупом и начинаем шарится в "окрестностях" другим. Т.е. находим кондёр (Большие и не очень бочонки около микросхем памяти) или несколько возможно - хоть один должен быть.



Отмеченный стрелкой вверху кондёр(это уже другой - там стоял поменьше) звонится с первой ножкой памяти - нашли. Также нашёл пустующюю площадку(отмечена красным кругом) для кондёра, находящегося паралельно первому. К слову, на фотографии карточки с оффициального сайта видно, что это место не пустует . Тоже самое проделываем для Vddq: - отмеченный зелёным кругом конденсатор(точнее временно пустующая площадка) стоит как раз по питанию Vddq. Я сразу снял эти конденсаторы(было два по 470мФ ) и поставил вместо них 3 по 1000мФ-16В (В плане разгона это ничего не дало). Дальше начинаем звонить по мосфетам. Выяснилось, что Vdd идёт на одну ножку мосфета, Vddq - на другую. Поднимаем даташит на транзистор и смотрим:




Vdd и Vddq звонятся с третьей(S) ножкой мосфета(каждый своего) - вот отсюда и берётся питание для памяти. Осталось выяснить как это дело управляется. Я прозвонил вторые ноги(отсюда они берут напряжение) мосфетов - не контачат между собой, значит питание берётся с разных напряжений. В моём случае мосфет питающий Vdd берёт питание с 5В АГП, если быть точнее 5В с АГП идут на пару диодов(хорошо видны слева от радиатора ядра), а потом на мосфет. Таким образом получается(после падения напряжения на диодах) 4.28В. А мосфет питающий Vddq берёт питание напрямую с 3.3В АГП. Управляются мосфеты по первой ножке(G) - вот и нужно выяснить откуда ведётся управление. На предыдущей фотографии я отметил синим квадратом микросхему - как раз на неё и вела дорога от мосфетов. Этой микросхемой оказалась довольно распространённая LM324 - 4-ре операционых усилителя в одном корпусе:




Выходы двух операционников шли как раз на мосфеты. Вот собственно и всё - осталось самая малость выяснить как это всё работает. Покрутившись немного мультиметром вокруг, была нарисована примерная схема работы данного стабилизатора. И в мультисиме(программа-симулятор схем) проверена:




Детали и номиналы не совпадают, но это не важно. Q1 на схеме наш мосфет, U1A - один из четырёх операционников LM324, V1 - 2.5В (на видеокарте идут со стабилизатора очень мелкой конструкции), V2 - напряжение, идущее на вторую(D) ногу мосфета с другой стороны получаем стабилизированное напряжение. Это напряжение возвращается через резистор R1, на минус операционника. Пара резисторов R1 и R2 составляют делитель этого напряжения. Если уменьшать напряжение между этими резисторами то, на выходе операциооника будет подниматся напряжение, открывая сильнее мосфет (что в общем то нам и нужно). Понизить это напряжение можно двумя способами: либо увеличивая R1, либо уменьшая R2. Обычно при вольтмодах уменьшают сопротивления, т.к. это физически легче зделать. Достаточно паралельно R2 подпаять переменный резистор. Что я и зделал.
Приступим к практике. Вот собранная конструкция:



Номиналы резисторов(R1 и R2) разглядеть не удалось, поэтому сначала паял переменник на 15 КОм, но позже выяснилось что можно(и нужно) начинать с меньшего. Например 5 КОм. Переменники подпаиваем на минус соответсвующего операционника(вторые ноги переменников к любой ближайшей земле). Вот поближе:




Оба делителя я выделил, один из них подчеркнул даже.
Также У памяти есть ещё одно важное напряжение Vref (с ним сравнивается Vtt идущее от процессора, для идентификации логического 0 или 1) из даташита оно должно равнятся напряжению Vddq, поделённому пополам с точностью в 1%. Это не силовое напряжение - тока там нет, поэтому обычно делаю делителем от Vddq, в чём можно убедится, "прощупав" резисторы около 49 лапки микросхемы памяти. Поэтому не беспокоимся - поднимая Vddq, будет подниматся и Vref. Правда есть одинь маленький нюанс... Чють ниже.

   Собственно тестирование

   На стабильность проверял ATITool'ом . Выставил на Vdd и Vddq по 2.85 В и начинаю понемногу увеличивать напряжение ядра. Примерно с 1.20(родное напряжение) и где-то до 1.3В о разгоне речь и не шла - и так артефакты сыпались немеряно. Начиная примерно с 1.35В появляется некоторая стабильность и даже удаётся память разогнать до 230Мц. Но если гнать ядро больше 400Мц, то снова лажа. Комбинируя вольтаж заметил, что если на ядре больше 1.5В, то ничего не помогает(ни увеличение вольтажа на память, ни уменьшение её частоты) - квадратного Ёжика( ) даже не видно. Стабилизировать удалось выставив 1.4В на ядро и 2.92В на vddq (стоит отметить, что напряжение на Vdd ни на что не влияло, поэтому синхронно с Vddq выставлял). При этом удалось пройти 3dmark2003 на частотах 500/500. Результат получился ненамного выше чем при безвольтмодовых 430/540.

    Собственно основной вывод проведённого эксперимента: надо поднимать напряжение ядра синхронно с Vddq. При этом попадать довольно сложно ввиду неточности регулировки. При малейшем отклонении Ёжик покрывался множеством мелких точек (не свойственно обычным глюкам памяти). Никакие комбинации напряжений мне не дали поднять разгон памяти(стабильных 540 так и не наблюдал), но есть мнение, что если тщательнее подбирать напряжения, то можно достичь уровня разгона памяти как без вольтмода. При этому удастся существенно поднять частоту ядра.
В ходе экспериментов пробовал увеличивать тайминги - увеличения частотного потенциала замечено не было. Также память достаточно серьёзно грелась при напряжениях 2.9В - радиаторы были больше чем тёплые.

На последок интересный факт: На работе есть X550 от Сапфира. При осмотре выяснилось, что очень похожа на мою карту - память питается точно также, за исключением того, что напряжение берётся на оба мосфета с 3.3В. Микросхемы памяти точно такиеже. Беглый разгон показал абсолютно стабильные 640Мц по памяти. Тайминги были при этом завышены от рекомендуемых в даташите (к слову тайминги на моей карте в соответсвии с даташитом). Попытка выставить такие же тайминги к успеху не привела. Замерил напряжение, которым питалась память на этой X550 - оказалось по 2.85В на Vdd и Vddq(в даташите написано 2.625В максимум на данный тип памяти). Сапфир немного схитрила завольтмодив память ещё при производстве .

   
Поковыряюсь немного ещё - попробую улучшить качество питания для своей карточки. Если что получится путного, то добавлю.

зы: На других картах с подобной схемой питания расположение элементов и другие мелкие детали могут отличатся(и будут, как в случае вышописанной X550 например), поэтому я специально не старался выделить контактные площадки к которым нужно подпаиватся. Вместо этого я попытался показать как самому найти эти точки. Надеюсь получилось доступно.

   зыы: По вопросам о спаленных карточках претензии не принимаются . Удачного всем разгона.
 

   


    © Персональные Страницы 2003-2005
Версия 0.9.73

Rambler's Top100    
    Создан командой Оverclockers.ru
О проекте >

  Мы с интересом выслушаем
ваши предложения и замечания в форуме