Цитата:
А надо ли? Это все превратится в большой геморрой
Вы меня не поняли, я имел в виду что текст будет всегда один и будет привязан к маркеру, который указывает на закладку, и у меня есть мысли теоретические как это сделать.
Цитата:
if (time < 100510000000L) return "Song 1"; // 9082800
if (time < 519750000000L) return "Song 2"; // 46814400
if (time < 877670000000L) return "Song 3"; // 79027200
if (time < 1054110000000L) return "Song 4"; // 94906800
А то что я выделил - это что? И можно ли это сделать в switch?
Цитата:
А то что я выделил - это что?
Слева это часть времени в наносекундах (полное время включает и нули). Это время плеймарка (чаптера).
Справа - это комментарий с соответствующим PTS - время во внутренних единицах видеопотока. 1 секунда = 90000 PTS.
Цитата:
И можно ли это сделать в switch?
Нет.
......
if (time < 6036420800000L) return 23; // 543314772
if (time < 6128412700000L) return 24; // 551594043
if (time < 6204989200000L) return 25; // 558485928
return 26;
}
Подсчитал, с незначительными изменениями после 4ой цифры, то что слева, совпадает с тем что выдает MediaInfo после мукса в Сценаристе,
01:37:06.053 : Chapter 23
01:40:36.830 : Chapter 24
01:42:08.822 : Chapter 25
01:43:25.399 : Chapter 26
с изменениями после 3ей цифры совпадает с тем что на плеймарках в Scenes.
01:37:00:07
01:40:30:24
01:42:02:21
01:43:19:06
У меня видео интерлейс 29,97 поэтому так сильней разнится на последних плеймарках.
Цитата:
В принципе могу ее сделать public и тогда просто можно будет ее вызывать
Сделайте пожалуйста.
@
CDK,
Скажите пожалуйста, как например это
if (time < 6204989200000L) return 25; // 558485928
правильно привязать к GPR?
Хочу попробовать при добавлении закладки, привязывать закладку к GPR, в зависимости от чаптера, а потом с помощью нужного GPR вызывать нужный текст с песней. Или это будет тоже самое что Вы порекомендовали? В любом случае мне с GPR удобнее будет работать, в смысле привязывать к GPR Move to для текста и нужный текст для песни в switch. Все это только теоретические мысли и когда дойдет до практики я скорее всего окончательно запутаюсь и не буду знать что делать. :)
В смысле "привязать к GPR"?
Строка "if (time < 6204989200000L) return 25; // 558485928" возвращает 25 если время менее чем указанное в миллисекундах. Вы хотите записывать это в GPR? Зачем?
Цитата:
возвращает 25 если время менее чем указанное в миллисекундах
А простыми словами что это значит?
Я обратно стал тупым, как в начале освоения избранного. :)
Цитата:
А простыми словами что это значит?
Ну вот даже не знаю как это объяснить простыми словами :)
Это программирование :) Тут нет понятия привязок или какой-то магии. Функция возвращает значение, а что Вы с этим значение будете делать - это уже Ваше дело.
Нельзя что-то привязать к GPR. Можно при каких-то событиях (нажатие кнопки, окончание видео, каждую секунду и т.п.) выполнять какие-то действия в лоб или проверять условия и выполнять что-то в зависимости от условия.
Подскажите пожалуйста как вставить сюда -> if (time < 100510000000L) return "Song 1"; // 9082800 правильно Text и Move to. Нужно две строки создавать?:
if (time < 100510000000L) return setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 1"); // 9082800
if (time < 100510000000L) return moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 200, 200); // 9082800
Поправьте меня пожалуйста если нужны какие то знаки препинания и если что не так.
А вообще if (time < 100510000000L) return "Song 1"; // 9082800 работать в меню или плейлисте то будет?
return - это возврат из функции. Он выполняется один раз за вызов функции. И возвращает он при этом значение указанного в описании функции типа.
Из UDF вы можете GetChapterNumberByTime вызывать в лоб (без префикса manager.). Если номер букмарка в bookmarkNumber, то как-то так:
Код:
long time = getBookmarkTime('CONCERT', bookmarkNumber);
int chapter = GetChapterNumberByTime('CONCERT', time);
if (chapter == 1) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 1");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 200, 200);
}
if (chapter == 2) {
setText("F:MM_MENU_BOOKMARKS.Text_songs", "Song 2");
moveToXY("F:MM_MENU_BOOKMARKS.Text_songs", 300, 300);
}
....
Цитата:
Еще можно использовать long time = manager.getBookmarkTime('CONCERT', bookmark) и передавать тогда в функцию не время, а номер закладки (int bookmark).
Скажите пожалуйста, что значит
bookmark в manager.getBookmarkTime('CONCERT',
bookmark)?
manager.getBookmarkTime('CONCERT', bookmark) это что то сродни time = manager.currentBookmarkTime('CONCERT');?