Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по программированию на C/С++

Автор: Aktaf
Дата сообщения: 26.03.2014 14:08

Цитата:
Я не очень понимаю, в чем проблема Как вычислять - не могу сказать.

Я еще спрашивал, что вычислять постоянную величину найти и вписать?
А что тогда вычислять?
Автор: AndrMan
Дата сообщения: 26.03.2014 14:25
Тогда давай разберемся. Ты хочешь вместо текста:
Кадр <номер кадра> <время>
писать
Кадр <номер кадра> <время> <тип кадра> <дистанция от такого кадра в кадрах> <полная длина видео после обработки> <полная длина видео до обработки ms>
?
Если да, то, в коде они должны быть посчитаны. Они считаются?
Автор: Aktaf
Дата сообщения: 26.03.2014 15:22
AndrMan
Мы точно на разных языках пишем. Наверно надо было мне лучше давать полные файлы и внешний вид.
Вот они "виновники": (https://cloud.mail.ru/public/f5e6375...ionControl.cpp) - PositionControl.cpp - откуда были выдержки начиная с 888 строки.
А со строки 887 (даже строки почти одинаковы) в (https://cloud.mail.ru/public/d4c5aa445381/prefs.cpp) - prefs.cpp: - if (!key.getString("Timeline format", g_prefs2.mTimelineFormat))
g_prefs2.mTimelineFormat = L"Кадр %f (%h:%02m:%02s.%03t) [%c]"; прописывается в Timeline и пользователем может меняться, потом при работе Вертуал Дап как бы отвечая, на эту команду - в ту полоску, подменяя первоначальное.
К стати, в том же окне, где Timeline прописывается возможные варианты, какие инфо можно выводить.
И как я и предполагал, они перечислены в том защищенном файле (с 488 строки). Придется и его положить - (https://cloud.mail.ru/public/f2af30b...virtualdub.ami):
textarea 0,    "%f: frame\n"
"%h, %m, %s, %p, %t: hour, minute, second, picture, tick\n"
"%c: frame type\n"
"Use capital versions for source values.\n"
"\n"
"%B, %L: byte position and length of source frame\n"
"%D: distance from last key frame\n"
"%[>]...: use end instead of current position\n"
------------------------------------------------------------------------------------------------------------
Наверняка в каком либо из этих даже в нескольких есть то что Вы предлагаете. Сейчас ведь выводить на ту полоску, Полная длина видео в виде инфо еще в другом месте выводиться. Т.е. Даб их как то конечно вычитывает.
При желании можно прямо на этих файлах, по месту писать, переправить.
Я смогу не только понять где что, но и попробовать собрать и собранную пробовать.
Спасибо.
Автор: AndrMan
Дата сообщения: 26.03.2014 17:56
Aktaf
Правильно я понимаю, что есть большое желание "допилить" Даб, при этом не понимая C++?
Автор: Aktaf
Дата сообщения: 26.03.2014 20:10
AndrMan

Цитата:
то есть большое желание "допилить" Даб

Думаю не совсем так. Вообще то снова могу ошибиться в слове "допилить" - бог знает что означает, тем более каждый свое значение может вкладывать в кавычках.
Если типа собрать, тоже не совсем, потому что я уже не только собираюсь, а собирал их начиная с версии 1.9.11. Последний 1.10.5 четвертый Тестовый. И да не понимая C++.
И даже не зная английского, тоже здорово мешает. Все методом тыка. Я же вроде писал про это, что хочу не только собирать, а по своему улучшать. Можете поглядеть разные моей версии тут ссылки выложены: Измененные ехе файлы от Aktaf: - http://forum.ru-board.com/topic.cgi?forum=5&topic=33770&start=0&limit=1&m=1#1 А эта сама тема http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=33770&start=4080#lt. Можно даже просто сравнить картинки в шапке этих страничек. В них понемногу увеличиваются переведенные места, есть такие которые не располагаются в обычный ресурсах (хотя как то патчить вроде могут некоторые, до меня тоже не доходит, как могут если их не видно в ресурсах). и есть несколько мест которые даже по внешнему отличаются, не говоря функционально. Но, желания только возрастают и просто тыкая делать уже не получается, да и с большими перерывами, забывается что, где как.

И уточнение, похоже я ввел в заблуждение. И пока на самом деле то что выводиться "Кадр %f" правильно.
И меняется на данные через тайм линию не с началом движения, а вообще с момента загрузки видео. И вообще что-то другое туда только нулевого момента нет смысла. Смысл будет если только туда будет постоянно и в полном объеме выводить. Если конечно возможно. А если будет не возможно, у меня на будущее есть другая идея. Но, это только после того как этот вариант до конца "проработаем".
Автор: Aktaf
Дата сообщения: 27.03.2014 16:28
Вообщем я быстро выдохся. Пытался собирать версия для 64 разрядных. Сегодня перепробовал разнообразные варианты расположения путей, добавлять и удалять. Очень мало меняется, тут 1570 ошибок и 793 предупреждений. Установил ранее подсказанную обновление для SDK for Windows 7 and .NET Framework ничем не помогло.
Тут ошибки в текстовике : https://cloud.mail.ru/public/3a3c6c5f7eba/032714_Osh_64.txt
Может что подскажете, кроме как перейти на 2008?
Автор: Aktaf
Дата сообщения: 28.03.2014 20:15
ne_viens

Цитата:
Инструкция установки:
1. Visual studio 2008 Pro (Custom install) выбираем только:
  a) Visual C#
  b) Visual C++ (добавить суппорт X64!)
3. DXSDK_Jun10.exe (инсталируем и интегрируем в VS2008, как описано в картинке выше).
5. Конвертируем VS2005 проект в VS2007.
6. Правим в src #define _WIN32_WINNT 0x0500, #define WINVER 0x0500, как описано выше.
Windows 7 Professional EN, без авирей.

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

1) Это - "Windows 7 Professional EN". Думаю это может оказаться значимым отличием. Могли же какие то файлы использоваться с Винда.
У меня то стоит XP SP3, еще и русский, последнее наверно не очень важно.
Но, думаю аналогичные версии Студии, в любом случае должно помочь в любом случае. Хоть сравнить можно будет.
2) "Правим в src #define _WIN32_WINNT 0x0500, #define WINVER 0x0500" - это я раньше не делал.
И несколько варианты исходников собранных раньше в 2008 у меня сохранились. Файлы одинаковые. Проекты конвертированы.
Возможно у Вас это не из-за версии Студии, а Винда?
3) Да и DXSDK_Jun10.exe мне раньше писали, якобы можно использовать и 9 и 10. Хотя вот, при этих последних событий, на 10 ке у меня не пошла. Ну, думаю там наверно не обязательно Полностью чтобы стоял.
Я сохранил с 10 ки, все три каталога как они были у установленного. Две версии их вместе вроде нельзя ставить, думаю на эти каталоги пути можно будет показать.
к сожалению оказывается не все Сохранил только каталоги с файлами" Include и Lib. Может выложите остальные нужные? Или хотя бы по мере надобности?
4) Конвертируем видимо в 2008, а не 2007 - опечатка?
Спасибо.
Автор: ne_viens
Дата сообщения: 28.03.2014 21:13
1) Обычно проблем больше из-за второго, чем первого.
2) Мне пришлось делать, так как версия винды дефинировалась недостаточно высокая, чтобы подключился CURSORчтототам из хyz.h.
3) DXSDK_Jun10.exe была первой в списке поисковика. Скорее всего подойдут и другие.
4) Да, в 2008. Очепятка получилась, исправил.
Автор: Aktaf
Дата сообщения: 29.03.2014 01:24
ne_viens
Вообще, я обгрейд тоже установил. И все равно пока 32 разрядного собрать не удалось.
Может и из-за Microsoft DirectX SDK. Но, мне по этим ошибкам? А, нет. Подключил платформу и пошло дальше без ошибок и хорошо когда есть кому жаловаться, остался одна ошибка:13>.\AudioGrabberWASAPI.cpp(203) : error C3861: 'CoInitializeEx': identifier not found.
На 64 разрядном, так же! Вдруг и с ней разберусь?
Не соображу что требуется. Файлов содержащие много, и в подключенном тоже есть...
Для Вас думаю, это не так сложно?
Автор: ne_viens
Дата сообщения: 29.03.2014 14:50
CoInitializeEx() в objbase.h наxодится.


Цитата:
Подключил платформу..

Что это?!
Не надо там никаких платформ подключать- нужны только MSVC2008, Windоws SDK (v6.0A, ставится вместе с MSVC), DXSDK и yasm.
Автор: Aktaf
Дата сообщения: 29.03.2014 16:21
ne_viens
Все получилось. Пришлось тупо редактировать пару файлов и все встало в норму.
Теперь буду анализировать, смогу ли вернуться и с 64 разрядными в 2005.
По свежие сведения, нужно до конца определиться. Ну и своими хотелками дальше двигаться.
Спасибо большое.
Автор: Aktaf
Дата сообщения: 30.03.2014 16:03
Вот и теперь все получилось. На 2005 ом собрал. Сегодня почти пол дня убил на это. Правда параллельно и другие делишки, чего ждать сидеть пока компилирует.
И теперь, еще пробую предупреждений уменьшить или на худой конец удалить не нужных подключений. И уже дальше, заняться своими хотелками.
Так что, все подтвердилось и 64 собирается на 2005 ом.
Автор: Aktaf
Дата сообщения: 31.03.2014 23:11
Уважаемые.
В настройках Даба (как и во многих программ), там где есть возможность выбора из разных вариантов применяется установка "точки", галочки. И они как правило в каком-либо из позиции по умолчанию уже стоят. Мне хотелось бы поменять в некоторых местах, по умолчанию, на другую позицию. Не могу как-то поймать, как это задается. Хотя как то читал как задается возможность их изменений. Т.е. чтобы можно было задать только в одной позиции. Но, не про то как задать. Тогда я много читал, чтобы хоть как то больше узнать. И всего не запомнить и не записать было.
Подскажите пожалуйста:
- как обозначается такая точка, галочка, может еще какой вариант есть?
- как задается это, чтобы поставить поумолчанию?
Автор: V0lt
Дата сообщения: 01.04.2014 05:27
Aktaf
Это кнопки со свойством BS_AUTORADIOBUTTON. Mожет иметь идентификаторы начинающийся на IDC_RADIO (но это необязательно). Состояние радиокнопок может быть связано с какой-нибудь переменной через DDX_Radio. В данном случае меняешь переменную, меняется активная радиокнопка.
Автор: AndrMan
Дата сообщения: 01.04.2014 07:35
Aktaf
В ресурсах (.rc) находишь идентификатор переменной. Проще всего искать по тексту. Название переменной идет сразу за текстом, начинается обычно на IDC_. Обрати внимание, что обычно радио-баттоны группируются, поэтому смотри не саму переменную, а первую "выше" у которой стоит флаг BS_AUTORADIOBUTTON | WS_GROUP. И вот у неё и берешь IDC_. Затем ищешь по этому IDC_ по всем файлам вхождение (если знаешь точно имя cpp-файла, то просто открываешь его ). Существует 2 типа связывания: по значению, по контролу. Чаще всего используется по значению, поэтому смотришь какая переменная сопоставляется с этим IDC_ в DDX_Radio (следует сразу за IDC_) и меняешь её значение в конструкторе (где-то в начале файла). Это значение при инциализации. Может быть, что значение устанавливается в OnInitDialog. Но скорее всего в конструкторе.
Автор: Aktaf
Дата сообщения: 01.04.2014 20:46
Некоторые ответы вычислил, но пока не получается...
Перепробовал все варианты. У меня пока больше вариантов нет [more=вот группа]
MENUITEM "Aspect Ratio", ID_DISPLAY_ASPECTRATIO, INACTIVE, MENUBARBREAK
MENUITEM SEPARATOR
MENUITEM "Free adjust", ID_DISPLAY_AR_FREE
MENUITEM "? (Source)", ID_DISPLAY_AR_PIXEL_SOURCE
MENUITEM "10:11 pixel (DV-NTSC)", ID_DISPLAY_AR_PIXEL_0909
MENUITEM "1:1 pixel (Square)", ID_DISPLAY_AR_PIXEL_1000
MENUITEM "59:54 pixel (DV-PAL)", ID_DISPLAY_AR_PIXEL_1093
MENUITEM "40:33 pixel (DV-NTSC Wide)", ID_DISPLAY_AR_PIXEL_1212
MENUITEM "15:11 pixel (SVCD-NTSC)", ID_DISPLAY_AR_PIXEL_1364
MENUITEM "118:81 pixel (DV-PAL Wide)", ID_DISPLAY_AR_PIXEL_1457
MENUITEM "59:36 pixel (SVCD-PAL)", ID_DISPLAY_AR_PIXEL_1639
MENUITEM "20:11 pixel (SVCD-NTSC Wide)", ID_DISPLAY_AR_PIXEL_1818
MENUITEM "59:27 pixel (SVCD-PAL Wide)", ID_DISPLAY_AR_PIXEL_2185
MENUITEM "4:3 frame (TV)", ID_DISPLAY_AR_FRAME_1333
MENUITEM "15:11 frame (DV)", ID_DISPLAY_AR_FRAME_1364
MENUITEM "16:9 frame (Wide)", ID_DISPLAY_AR_FRAME_1777
MENUITEM "Preferred filter", ID_DISPLAY_FILTER, INACTIVE, MENUBARBREAK
MENUITEM SEPARATOR
MENUITEM "Point", ID_DISPLAY_FILTER_POINT[/more] среди которых нужно поставить галочку.
Это средняя колонка списка. Первым написана последняя строчка первой колонки.
(В колонке все строчки взаимосвязаны - галочку можно поставить только на одну строчку)

Далее переход к другой колонке. Галочка по умолчанию появляется в первой строчке:
MENUITEM "Free adjust", ID_DISPLAY_AR_FREE
Я же хочу, чтобы она встала во второй строчке. Это большой список. состоящий из ряда страниц.
Среди других строчек просматривается, другой вариант. Где галочки появляются в строчках, где в конце написано CHECKED.
По аналогии, та строчка была бы такой:
MENUITEM "? (Source)", ID_DISPLAY_AR_PIXEL_SOURCE, CHECKED
В этом же "списке", но, с большим количеством элементов меню, так же можно выделить использование, другого варианта:
Вот [more=одно окно]
MENUITEM "&Input video pane\tF9", ID_OPTIONS_DISPLAYINPUTVIDEO, CHECKED
MENUITEM "&Output video pane\tF10", ID_OPTIONS_DISPLAYOUTPUTVIDEO, CHECKED
MENUITEM "Arrange video panes vertically", ID_OPTIONS_VERTICALDISPLAY
MENUITEM "Swap input/output panes", ID_OPTIONS_SWAPPANES
MENUITEM SEPARATOR
MENUITEM "Display &decompressed output\tShift+F10", ID_OPTIONS_DISPLAYDECOMPRESSEDOUTPUT
MENUITEM "Show &status window", ID_OPTIONS_SHOWSTATUSWINDOW, CHECKED
MENUITEM SEPARATOR
MENUITEM "&Log\tF8", ID_OPTIONS_SHOWLOG
MENUITEM "Real-time profiler\tShift+F8", ID_OPTIONS_SHOWPROFILER[/more]
Галочки появляются в строчках в конце которых написано - , CHECKED.
Или в еще более сложных местах, С указанием координат расположения текстов, элементов. То, пишется так:

CONTROL "Show &input video",IDC_DRAW_INPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,133,70,10
CONTROL "Show &output video",IDC_DRAW_OUTPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,143,75,10
CONTROL "Show &decompressed video",IDC_DRAW_DOUTPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,153,99,10
Часто в заголовке таких групп, появляется GROUPBOX. И в таких группах галочки появляются в строках с BS_AUTOCHECKBOX.
Исходя из чего определяется в какой именно строке, это отследить не смог.
Пробовал дописать в разных вариантах. Или получал ошибку, или всегда там где до этого появлялись.
Возможно исходя из описанного , что-то понятнее станет. Или есть код, который указывает обязательное место появления?





Автор: ne_viens
Дата сообщения: 02.04.2014 07:57
Ищи в C коде IDC_DRAW_INPUT, IDC_DRAW_OUTPUT, IDC_DRAW_DOUTPUT.
Автор: Aktaf
Дата сообщения: 02.04.2014 10:46
ne_viens
Только подтверждение того что уже писал. Разраб. использовал CHECKED и именно в этих трех строк, но использовал их в трех местах в Дабе. Описал в отдельном файле.
Галочки в одном окне из двух строчек "снял". Пока ковырялся нашел у Разраба 9 строчек лишнего, удалил, все равно нормально, а вес файла немного уменьшился, значит все таки они там включались.
Пробовал местами поменять, "нужные мне строчки". Галочка "прыгнула" вместе с той строчкой. Хоть подтвердил, не просто по очереди в первой строчке встает.
Вот думаю, попробовать в том файле описать по аналогии, вдруг чего получиться или конфликтовать станет - себя проявит?
Автор: Aktaf
Дата сообщения: 02.04.2014 15:17
Вот снова как в других аналогичный строках с галочками, написал в конце строки "CHECKED" вроде удачно скормил в одном файле по аналогии:
            case ID_DISPLAY_AR_PIXEL_SOURCE:
                thisPtr->opt->video.fShowInputFrame = SendMessage((HWND)lParam, BM_GETCHECK, 0, 0)==BST_CHECKED;
                break;
После в другом, в котором в нескольких местах прописано, но нет явного про "CHECKED".
Тоже аналогичные строчки вписал. И ноль внимания.
Автор: Abs62
Дата сообщения: 02.04.2014 18:51
Aktaf
Прочитали бы вы всё-таки Петцольда, что такое шаблон диалога, что такое обработчик сообщений и как это всё взаимодействует. Ей-богу, это займёт меньше времени и даст лучший результат, чем такое тыканье вслепую.
Автор: Aktaf
Дата сообщения: 03.04.2014 00:00
С галочками так и не получается, может Abs62 захочет помощь, чего зря знаниям пропадать?

Я, тут еще раз, проглядел на счет данных через тайм линию. И похоже, не разглядел раньше. Там вроде на самом деле инфу с реестра преимущество отдана. Вот как бы эту связь нарушить и выводить что напишем в исходнике или хотя бы написанное в ручную в тайм линии ничего не портило? Все что может играть роль, пока написано так:

Код: void LoadPreferences() {
    VDRegistryAppKey baseKey;

    DWORD dwSize;
    Preferences tempPrefs(g_prefs);

    dwSize = baseKey.getBinaryLength(g_szMainPrefs);

    if (dwSize) {
        if (dwSize > sizeof g_prefs) dwSize = sizeof g_prefs;

        if (baseKey.getBinary(g_szMainPrefs, (char *)&tempPrefs, sizeof tempPrefs))
            memcpy(&g_prefs, &tempPrefs, dwSize);
    }

    VDRegistryAppKey key("Preferences");

    if (!key.getString("Timeline format", g_prefs2.mTimelineFormat))
        g_prefs2.mTimelineFormat = L"Кадр %f %h:%02m:%02s %c %D %>Hч:%>02Mм:%>02Sс %>hч:%>mм:%>sс";

    g_prefs2.mbTimelineWarnReloadTruncation = key.getBool("Timeline: Warn on truncation when reloading", false);

Автор: AndrMan
Дата сообщения: 03.04.2014 06:58
Aktaf
Не очень понятно. Ты хочешь, чтобы из реестра вообще ничего не читалось?
Автор: Aktaf
Дата сообщения: 03.04.2014 08:53
AndrMan

Цитата:
Не очень понятно. Ты хочешь, чтобы из реестра вообще ничего не читалось?

В принципе, это тоже вариант, который можно добиться просто, запустив как портабельный.
Но, не так кардинально. Остальные я думаю не мешает. Я по поводу все на счет "той полоски", про вот эту часть Кадр %f %h:%02m:%02s %c %D %>Hч:%>02Mм:%>02Sс %>hч:%>mм:%>sс, чтобы ее не брал с реестра, а выкладывался то что написано в этом файле.
Автор: BagaBaga
Дата сообщения: 11.04.2014 21:04
Уважаемый All,
можно ли для string при объявлении переменной сразу казать размер резервируемой памяти.
Т.е. вместо двух строчек

    string str;
    str.reserve(100);

написать одну

string str{параметры};
Автор: AndrMan
Дата сообщения: 12.04.2014 08:47
BagaBaga
Такого конструктора нет. Можно заполнить каким-то символом на требуемую длину.
Автор: Garrett
Дата сообщения: 12.04.2014 17:36
BagaBaga
Если строка меняется, к примеру, до сотни раз в процессе работы, то можно не заморачиваться с резервированием. А если тысячи, сотни тысяч, то тогда пожалуй стоит...
Автор: BagaBaga
Дата сообщения: 13.04.2014 11:31
Спасибо!

Ещё вопросик.
Пытаюсь с помощью std::copy скопировать кусок строки на стандартный вывод, пробую (вот здесь пробую http://www.compileonline.com/compile_cpp11_online.php )

string str = "123456789";
copy(begin(str), begin(str)+4, ostream_iterator<string>(std::cout, "\n"));

но валится по ошибке. Не пойму, как поправить (если приёмником будет строка или массив символов, то всё Ок).


Автор: AndrMan
Дата сообщения: 13.04.2014 11:54
По моему, оно так не соберется А вот ostream_iterator<char> - соберется
Автор: BagaBaga
Дата сообщения: 15.04.2014 23:22
Сложилась интересная ситуация. Если сначала писать строку в локальный буфер, а потом её выводить через cout, то обработка занимает в 5-6 раз меньше времени по сравнению с "выталкиванием" полученных значений не в буфер, а сразу в cout. Это при том, что endl не использовал (т.к. он вызывает принудительный сброс буфера). Можете подсказать, в чём дело, и можно ли сохранить производительность без буфера? (Или лучше сразу привести пример данных и кода?)
Автор: AndrMan
Дата сообщения: 16.04.2014 04:40
BagaBaga
См. здесь

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193

Предыдущая тема: не знаю как назвать тему :-)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.