LINUX.ORG.RU

Сообщения Camel

 

На главной чатик.

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

Camel
()

Использование функций и переменных из C в Vala.

Как в Vala использовать функцию на C? Знаю, что можно воспользоваться словом extern, но есть ещё вопросы.

У меня есть функция, которая принимает 2 параметра: gchar* и GHashTable*. В первом лежит имя файла, а по второй ссылке GHashTable в который эта функция кладёт всякие штуки. В Vala указателей нет, есть ссылки (reference). Как мне имея строку с именем файла и объект HashTable передать их в extern функцию?

А ещё, как это всё собирать/канпелять? С какими опциями запускать valac если в файле есть внешние функции из C?

 ,

Camel
()

Помогите разобраться с GSources, GMainContext.

Помогите разобраться с источниками событий (GSource, GIOSource), контекстами (GMainContext) и обработчиками этих событий.

У меня есть Beaglebone, на котором я хочу обрабатывать прерывание изменения уровня на одном из GPIO. Вот пример того как это делается на C. Для Ъ:

struct pollfd pfd[1];
pfd[0].fd = open ("/sys/class/gpio/gpio34/value", O_RDONLY);
pfd[0].event = POLLPRI;
pfd[0].revent = 0;

while (1) {
    poll (pfd, 1, -2);
    something_useful ();
}
Функция poll() не завершается пока не происходит событие на которое настроено прерывание. Когда это событие происходит выполнение poll() завершается, выполняется какая-то полезная функция, после чего снова переходим к функции poll() и ожидаем события.

А теперь вопрос, как это сделать с использованием GLib, желательно даже на Vala, но и на C пойдёт.

Правильно я понимаю, что «вместо» while (1) будет GMainLoop? Правильно ли я понимаю, что нужно в каком-то контексте завести источник событий (GIOSource?) ? А ещё нужно к чему-то прицепить g_source_add_poll() и g_source_set_callback(). Может кто-нибудь показать пример кода?

 event source, , ,

Camel
()

Можно ли получить с USB'шной камеры небоработанный поток данных?

Если я подключаю USB'шную камеру, то в системе она видится как /dev/video0. Если я GStreamer'ом беру с неё поток данных, то это video/x-raw, хотя я подозреваю, что камера на самом деле передаёт по USB поток сжатый каким-то кодеком, возможно mpeg2 или mpeg4, а распаковкой его занимается драйвер (возможно сильно неоптимальным способом). Прав ли я? Можно ли получить необработанный поток данных чтобы самому с ним что-то делать, например писать на файловую систему, или передавать по сети, или распаковывать аппаратным декодером.

 , ,

Camel
()

Как разбивать программу на множество файлов?

Как в Vala разбивать программу на множество мелких файлов? В C и C++ для этого были заголовочные файлы и #include'ы, а собственно исполняемый код можно было писать почти в произвольном порядке и разбивке по файлам. Ещё можно было в заголовочном файле объявить класс и его методы, а определение сделать в другом файле.

В Vala, насколько я смог понять, нет опции #include, нет заголовочных файлов, определение метода нельзя вынести за пределы его объявления. В результате классы у разрастаются, программа разрастается ещё больше, заповедям написания «чистого» кода это совершенно противоречит. Что же делать? С++ не предлагать.

 ,

Camel
()

О наследовании и вызове методов.

Я привык, что в ОО языках если есть:

  • Класс A
  • В классе A определён метод action()
  • Есть класс B наследующий от A

, то я могу вызывать метод action() для экземпляров B. Другими словами, если возможно A.action() и B::A, то возможно B.action().

А если я использую GObject, то это так или нет?

Пусть у нас есть

typedef _MamanBar MamanBar;
typedef _SonBar SonBar;

struct _MamanBar
{
GObject parent_instance;
};

struct _SonBar
{
MamanBar parent_instance;
};

void maman_bar_action (MamanBar *self)

Я ведь не могу вызывать

SonBar *son;
/* */
maman_bar_action (son);
Так? Нужно ведь вызывать
SonBar *son;
/* */
maman_bar_action (MAMAN_BAR (son));

Получается, что мне чтобы вызывать метод недостаточно знать, что он был определён в родительском классе, но точно знать, что в каком из классов иерархии наследования он был определён. Это так?

Помимо того что это лишняя головная боль, не является ли это нарушением принципов ООП?

Или я что-то делаю не так?

 

Camel
()

Почему пол холодный?

Почему в многоэтажках пол холодный? Ведь этажом ниже тоже есть квартира, и в ней топят, и в ней тёплый воздух поднимается к потолку, значит должен греть мой пол.

 

Camel
()

Индексирование видеофайла.

Что такое индексы в файле? Читая индексы видеопроигрыватель может определить как долго длится видеофрагмент в файле? Дело в том, что моя программа испльзующая GStreamer создаёт файлы, если я правильно понимаю, без индекса. Их нельзя перематывать, а при воспроизведении не показывается сколько осталось до конца. Как это исправить? Я смотрел свойства элементов, у них у всех has no indexing capabilities. Единственно, у matroskamux есть свойство min-index-interval, но установка его в значение 0 или 1000000 ничего не меняет. Как заставить gstreamer проиндексировать файл?

 , , matroskamux,

Camel
()

Как понять когда оборвался сигнал IP'шной камеры наблюдения?

Как в программе использующей GStreamer понять, что пропал сигнал с IP'шной камеры (ASF'ной или RTSP'шной)?

То есть предположим у меня в сети есть камера отдающая поток RTSP, на сервере крутится программа с gstreamer'овским pipeline'ом. Как понять, что поток данных прекратился? Например из-за отключения камеры.

Отлов сообщения GST_STREAM_STATUS_TYPE_LEAVE не подходит, поскольку внутри программы есть елемент tee к котором то подключаются, то отключатся «потребители», а указанное сообщение проходит по шине сообщений если кто-то отключается, что вовсе не означает отключения камеры и остановки всех элементов.

Если камера отключилась, то перейдут ли какие-нибудь элементы из состояния PLAYING в PAUSED или NULL? Какие элементы? source, demux? Вызываются ли при этом какие-то сигналы или выдаются сообщения? Может у source'а или demux'а какие-то pad'ы должны отвалится? Вообще, при каких условиях они отваливаются?

 , , , ,

Camel
()

Терминальный сервер и compiz.

Предположим, что у меня есть интернет-кафе на 20 мест. Конечно же я хочу минимизировать расходы, потому ставлю один терминальный сервер и 20 тонких терминалов. Можно ли на этих терминалах использовать всякие эффекты задействующие видеокарту? Будет ли видеокарта терминального сервера использоваться при проигрывании видео? Или видеокарта такой ресурс, который невозможно делить?

 , ,

Camel
()

Записать GStreamer'ом файл mp4.

Как GStreamer'ом создать нормальный файл mp4? То что мне выдаёт mp4mux не играется, выдаёт ошибку

This file contains no playable streams.

Что примечательно, пример из руководства работает. То есть, вот такая команда выдаёт неиграемый файл:

gst-launch-1.0 souphttpsrc location='http://192.168.27.101/videostream.asf' ! asfparse ! asfdemux ! avdec_mjpeg ! videoconvert ! videorate ! video/x-raw,framerate=25/1,width=640,height=480 ! clockoverlay ! queue ! x264enc ! mp4mux ! filesink location=file.mp4

А вот такая играемый:

gst-launch-1.0 v4l2src device=/dev/video0 num-buffers=50 ! queue ! x264enc ! mp4mux ! filesink location=file2.mp4

Причём я уверен, что декодирование у меня делается нормально, потому что если вставить xvimagesink вместо queue перед энкодером, то на экране я увижу картинку с камеры, то есть до video/x-raw я нормально декодировал, а потом пытаюсь закодировать и муксить в mp4, но не достигаю успеха. ЧЯДНТ?

 , , mp4mux

Camel
()

Как понять когда нужно делать unref?

Помогите разобраться в каких случая при работе с GLib и GObject происходит выделение памяти. Правильно я понимаю, что объект уничтожается когда количество ссылок на него становится равных 0? При этом высвобождается занимаемая память. Если я вызываю unref(), то количество ссылок уменьшается на 1. А в каких случаях оно растёт? Что происходит со ссылками, если я вызываю remove() или destroy() ? Есть какие-то руководства по этому делу?

 , , ,

Camel
()

Об устройстве ксилофона.

Друзья, поясните мне за устройство ксилофона. Если взглянуть на живой пример ксилофона или фотографии в Википедии, то можно увидеть, что длина деревянных чушек убывает линейно. Однако при этом извлекаемая частота растёт экспоненционально, потому что в музыке частота нот растёт по экспоненте. Как же так? Ведь собственная частота колебаний должна расти линейно. Или я не прав?

 , ,

Camel
()

Поясните что означает сообщение в отслеживании почтового отправления.

В трекинге последняя строчка


CG123456789US
	

Priority Mail International Parcels
	

Arrival at Post Office
	

October 19, 2012, 2:55 am
	

RUSSIA
	

International Parcels

Что это означает в практическом плане? В какой Post Office приехала посылка? Главпочтамт или ближайшее отделение? Что делать дальше? Нужно ждать или идти куда-то забирать? Если забирать, то как? Какие документы предъявлять?

 ,

Camel
()

Вывести на экран скан-коды нажимаемых клавиш.

У моего Thinkpad'а перестала работать регулировка громкости и яркости экрана по нажатию Super+F2/F3/F7/F8. Хочу понять кто виноват, в Ubunt'е что-то отвалилось или у меня клавиша Super перестала работать. Как вывести на экран какие-то данные о нажимаемых клавишах, передаваемых с клавиатуры скан кодах? В общем как понять, что Super у меня работает?

 scan code, ,

Camel
()

Всепогодная камера наблюдения с микрофоном.

Кто-нибудь встречал в продаже всепогодную камеру наблюдения с микрофоном и матрицей более 1 мегапикселя? Я пока камеры с микрофоном только внутренние видел в продаже, всепогодных вообще с микрофоном вообще ни одной.

Существуют ли всепогодные IP-микрофоны?

 , , ,

Camel
()

Как сделать радиосвязь между подвалами и поверхностью на гектаре площади?

Как организовать радиосвязь если рации могут находиться как на поверхности, так и в подвалах? Расстояние между подвалами (глубина метров 10, со всех сторон закрыты железобетоном) может быть порядка сотни метров. Рации типа Kenwood TF-H5. Насколько поможет решить проблему ретранслятор на 50 Вт? Можно ли ставить больше 1 ретранслятора? Есть ли какие-то способы передать сигнал рации по проводам? Можно ли в этом случае поставить в каждом подвале (их всего 6 штук) по ретранслятору и ещё один на поверхности? Как их в этом случае связать в одну радиоэфирную сеть?

 ,

Camel
()

Не связываются элементы GStreamer'а.

Пытаюсь записать картинку с камеры наблюдения. В консоли работает такая команда:

gst-launch-1.0 rtspsrc location='rtsp://admin:admin@192.168.27.103:554/cam/realmonitor' ! rtph264depay ! mpegtsmux ! filesink location=file.mp4

Картинка записывается, всё работает без замечаний. Но при попытке собрать ту же цепочку в программе на C связывания элементов не происходит.

  /*Инициализирую элементы.*/
  pipeline = gst_pipeline_new ("rtsp_capture");
  source   = gst_element_factory_make ("rtspsrc",       "rtsp-source");
  depayer  = gst_element_factory_make ("rtph264depay",  "depay");
  muxer    = gst_element_factory_make ("mpegtsmux",     "mpeg-ts-muxer");
  sink     = gst_element_factory_make ("filesink",      "file-output");

  /*Задаю location у source и sink из консоли.*/
  g_object_set (source, "location", argv[1], NULL);
  g_object_set (sink,   "location", argv[2], NULL);

  /*Засовываю элементы в pipeline.*/
  gst_bin_add_many (GST_BIN (pipeline),
                    source, depayer, muxer, sink, NULL);

  /*Связываю элементы.*/
  if (!gst_element_link_many (source,  depayer, muxer, sink, NULL)) {
    g_printerr ("Failed to link elemnts! Exiting.\n");
    return 1;
  }

После сборки и запуска программа вылетает с ошибкой Failed to link elements. Причём не связываются source и depayer (пробовал использовать функция gst_element_link()). Что не так не пойму. Как получить больше отладочной информации о том почему не происходит связывание?

Вообще, код моей программы это слегка изменённый пример из Your first application.

 ,

Camel
()

CMS которая умеет создавать галерею изображений из директории с файлами.

Ищу CMS которая может создавать галерею картинок (с thumbnail'ами) из директории с файлами. Задача кажется тривиальной, наверное каждая CMS такое умеет, но я куда ни посмотрю требуется не просто директория с JPEG'ами, а присоединение этих JPEG'ов к странице или загрузка их через какой-то интерфейс, потому что хранятся они в БД. А хочется чтобы в CMS создавалась страница типа «галерея», у неё в свойствах прописывалось «фотографии брать из ./imggallery/» и всё. Через FTP или scp кладу туда фотографии, захожу на страницу, вот они мои картинки, кликабельны, увеличабельны, листабельны. Есть CMS которые это умеют из коробки или со стандартными плагинами?

 , ,

Camel
()

Подводные камни при покупке земельного участка.

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

 ,

Camel
()

RSS подписка на новые темы