LINUX.ORG.RU

Сообщения kulti

 

[MPEG-TS]анали на валидность без декодирования

Форум — Development

Есть устройство, которое зависает, если приходит «корявый» видео-поток. Появилась мысль не отдавать испорченные пакеты на декодирование. Сижу, курю спеки по TS, PES и ES, но что-то ничего, что там могло бы указаывать на невалидность потока не нахожу.

Кто-нибудь знает, это вообще возможно? Может, какие альтернативные мысли имеются.

kulti
()

Какая-то непонятная хрень твориться с сетью...

Форум — Development

Есть у меня приложение одно: устанавливает tcp-соединение, получает и обрабатывает данные, закрывает соединение и по новой(открывает, получает, обрабатывает, закрывает). Через некоторое время сеть работать перестает. Приложение пытается установить соединение и по таймау-ту прекращает попытки. Ничто не пингуетсе etc. Останавливаю приложение - вся сеть оживает.

У кого-нибудь есть идеи куда копать?

kulti
()

poll на кол-во байт

Форум — Development

Всякие select и poll умеют работать только с таймаутами, что не очень удобно при работе с tcp-соединением... Т.е. при получении одного байта мне уже сообщают, что мол POLLIN, а мне нужно, чтобы в сокете было некоторое минимальное кол-во байт.

Как дождаться нужного кол-ва байт без while(){usleep();} ?

kulti
()

[ffmpeg]запихнуть h264 rtsp поток в flv без декодинга/энкодинга

Форум — Development

Были у меня http потоки mjpeg'a с камер всяких, я их спокойно avformat'ом на AVPacket'ы разбирал, потом avcodec'ом декодил и энкодил в h264. Потом опять же avformat'ом запихивал в flv контейнер.

Тут появились камеры, которые могут сразу h264 поток отдавать. То, что rtsp - это не проблема, благо ffmpeg сам умеет с ним работать, но вот обойтись без транскодирования пока никак не выходит. Т.е. если как раньше делать, то все ок - получаеся смотрибельный flv, а вот когда пытаюсь avformat'ом прочитаь и сразу же записать в flv, то получается ерунда какая-то. VLC ругается так:

[h264 @ 0xb0b0d5b0] QP 120 out of range
[h264 @ 0xb0b0d5b0] decode_slice_header error
[h264 @ 0xb0b0d5b0] concealing 4000 DC, 4000 AC, 4000 MV errors
[h264 @ 0xb0b0d5b0] deblocking_filter_idc 32 out of range
[h264 @ 0xb0b0d5b0] decode_slice_header error
[h264 @ 0xb0b0d5b0] concealing 4000 DC, 4000 AC, 4000 MV errors
[h264 @ 0xb0b0d5b0] illegal memory management control operation 32
[h264 @ 0xb0b0d5b0] top block unavailable for requested intra mode at 6 0
[h264 @ 0xb0b0d5b0] error while decoding MB 6 0
[h264 @ 0xb0b0d5b0] number of reference frames exceeds max (probably corrupt input), discarding one
[h264 @ 0xb0b0d5b0] concealing 4000 DC, 4000 AC, 4000 MV errors
...

На сколько я понял av_read_frame читает ровно один видео фрейм и av_write_frame как раз его и требует, но что-то не срастается... Пробовал начинать писать с пакета, у которого стоит флаг AV_PKT_FLAG_KEY - ноль эффекта.

В чем может быть проблема?

PS. После «распада» ffmpeg что-то список рассылки не пашет...

 

kulti
()

[gmail]хочу bottom reply

Форум — Desktop

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

 

kulti
()

[boost][property_tree][json]how to create empty array?

Форум — Development

Есть какой-нибудь способ создать пустой массив, чтоб write_json вот такое вывыодил:

{
    "id": "id",
    "method": "test_method",
    "params": []
}

Как массив с элементами сделать - знаю, а вот пустой... уже весь мозг сломал.

PS. еще одни вопросик попутно возник. В 1.45 у write_json флаг появился, чтобы оно не читабельный json выводило, а все в одну строчку без пробелов херачило. На старых версиях такого поведения никак не добиться, да?

 ,

kulti
()

[hg]создать новый default бранч

Форум — Development

Пусть в репозитории есть 10 ревизий, но я неожиданно понял, что хочу вернуться к 5 ревизии и начать делать другой функционал. Причем ревизии с 6 по 10 мне не факт, что понадобятся когда-нибудь, но на всякий случай хотелось бы их положить в закрытый бранч.

т.е. хочется из такого

o---o---o---o---o---o---o---o---o---@
1   2   3   4   5   6   7   8   9   10
получить такое
o---o---o---o---o---o---@
1   2   3   4   5 \ 11  12
                   ---o---o---o---o---o
                      6   7   8   9   10

Пытался делать новый бранч с существующим именем default и закрывать старый. Пробовал анонимный бранч делать и закрыать его. В локальной копии все выглядит так, как я хочу, но когда пытаюсь сделать push - ругается:

abort: push creates new remote heads on branch 'default'! (did you forget to merge? use push -f to force)

-f, конечно, можно заюзать, но может я пытаюсь сделать что-то неправильное?

 

kulti
()

[нужен совет]RPC, наверное

Форум — Development

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

Так же интересуют годные библиотеки для языков C++ и Python. Сам работал только с ulxmlrpcpp на клиентской стороне...

kulti
()

[wi-fi] не цепляется к домашней сети

Форум — Desktop

Потерял мой ноутбук домашний роутер и больше его не находит. Ноуты жены и детей работают, как и прежде, а мой не хочет essid выставлять.

iwconfig eth1 essid «my_home_network» - ноль эмоций, essid как был пустой, так и остался.

iwlist scannig - нашел с десяток точек доступа соседей, но не мою, которая в паре метров от него стоит.

Перед этим ничего такого вроде не обновлял. Вечером в логе emerga посмотрю, что именно, если нужно.

Куда копать?

 

kulti
()

[bitbucket]у кого-нить работает automatically resolving?

Форум — Development

Собсна сабж.

В документации сказано, что нужно просто Issues Service включить. Но видимо нужно что-то еще...

 

kulti
()

[HTML] Трехколоночный макет с резиновой серединой и прозрачными краями

Форум — Web-development

Понадобился мне сабж. Нагуглил много рецептов для трехколоночного шаблона с резиновой серединой, в частности такую штуку. Их вариант и взял за основу. Но во всех примерах в качестве фона исользуют заливку цветом, а у меня картинка с прозрачным краем. В итоге по краям получилась такая кака.

Куски css и html:

#content { clear: both; width: 100%; position: relative; height: 200px;}
#content_left { float: left; position: relative; margin-left: -100%; width: 19px; height: inherit; background-image: url('../img/left_border.png'); }
#content_right { float: left; position: relative; margin-left: -19px; width: 19px; height: inherit; background-image: url('../img/right_border.png'); }
#content_container { float: left; width: 100%; overflow: hidden; }
#content_middle { padding: 0 19px 0 19px; background-image: url('../img/paper_bg.png'); }

<div id="content">
  <div id="content_container"><div id="content_middle">{% block content %}{% endblock %}</div></div>
  <div id="content_left"></div>
  <div id="content_right"></div>
</div>

Можно ли как-нить это победить? Сам придумал лишь одно: отказаться от текстуры для background у body и использовать просто цвет, убрав прозрачность у соответствующих элементов.

 

kulti
()

[GUI framework] своя системой рендеринга

Форум — Development

Есть железка и api для рисования. По сути создается битмап, который и отображается.

Ищется GUI framework, позволяющий использовать кастомную систему рендеринга.

Язык С++

PS. И ссылочку с ответом на вопрос «как?» крайне желательно.

kulti
()

Подмена системных вызовов

Форум — Development

Есть закрытый код. Пытаюсь сделать так, чтобы сокет читал из файла, а не из сети. Т.е. подменяю системные вызовы socket(), recv() etc.

Написал тестовую прогу. Сделал LD_PRELOAD=./mylib.so ./test Моя прога работает на ура. Но когда подсовываю свою либу закрытой проге, то она делает вызовы recv() и данные там точно правильные, но такое впечатление, что она их считает некошерными.

Что вообще может «мешать» воспринимать проге данные, как правильные?

kulti
()

[bash]история комманд

Форум — General

Не знаю, как это называется, но в csh есть такая фича: если набираешь некий символ, а потом листаешь хистори стрелками вверх/вниз, то показываются только те комманды из хистори, которые с этой буквы начинаются.

Гуглю, как получить подобный эффект для bash. Единственное, что пока нашел - это

Try '!iptables' history expansion command which refers to the most recent command starting with 'iptables'

Оно вообще есть?

 

kulti
()

[python][ide]хочу

Форум — Development

В общем, хочется удобный способ разработки на python+django. Самое главное - человеческий автокомплит. Остальное не так важно.

eric - когда-то давно смотрел - монструозен

ulipad - непомерно жрет ресурсы

eclipse+pydev - ява-же =)

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

emacs - не предлагать - я vim люблю

spyderlib - поставил, но автокомплит там тоже толком не завелся, только для стандартных вызовов, а вот django дополнять не хочет

snaked - заустить не удалось, т.к. ругается на отсутствие pgobject. pip install pygtk выдает ошибку - «ImportError: No module named dsextras»

 ,

kulti
()

[kdm] не отрисовывается

Форум — Desktop

Обновился с 4.4.5 до 4.5.3 после чего kdm перестал отрисовываться. Причем курсор в нужном месте меняет свой вид, как над полем для ввода. Ввожу логи-пароль. После этого подгружаются kde-шные курсоры, но вход в систему не происходит. Давлю alt+ctr+backspace - тадам! отрисовался kdm и теперь входит нормально.

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

Кто-нить знает, что делать, куда копать?

 

kulti
()

Вопрос про endian

Форум — Development

Гуглю на тему независимости от endian. Везде предлагают использовать конверторы по типу htons() etc. Но никак не найду, почему вот такой вариант не будет работать:

//server
void writeInt16(char* buf, int16_t val)
{
  buf[0] = (val >> 8);
  buf[1] = (val & 0xff);
}

//client
int16_t readInt16(const char* buf)
{
  return (buf[0] << 8) + buf[1];
}
Т.е. идея в том, чтобы читать и писать по 8 байт.

kulti
()

[valgrind] suppressions

Форум — Development

Гоняю валгриндом прогу, которая юзает curl и ssl. Ругается на неинициализированные переменные в ssl'е. Пишу свой suppressions файл. Проблема в том, что добавив все вызовы ssl внутри курла, валгринд продолжает ругается, но уже в моем коде, который использует возвращаемые курлом значения, которые внутри курла были получены в результате вызовов ssl. Проверил сей факт очень просто - добавил --track-origins=yes

==29449== Uninitialised value was created by a stack allocation ==29449== at 0x41F0106: RAND_load_file (in /usr/lib/libcrypto.so.1.0.0)

Вопрос: можно ли как-нибудь заблокировать сообщение об ошибке не последовательностью вызовов, а ее причиной?

 

kulti
()

[SVN]Скопировать часть репозитория в другой репозиторий

Форум — Development

Собсна сабж.

Гуглопоиск предлагает svnadmin dump, что мне не подходит. В принципе можно написать скрипт, который чекаутит первую ревизию, коммитит ее в новый репозиторий etc, но зачем самому велосипед делать, если уже наверняка есть. Еще в голове родился велосипед: экспортировать в mercurial, а потом оттуда в svn, но второе действие, как осущетвить не нашел.

UPD. нужна история изменений

 

kulti
()

[hook][mipsel]падает при вызове оригинального метода

Форум — Development

Доброго всем!

Пытаюсь сделать hook. На x86 все работает прекрасно, когда пытаюсь запустить это на mipsel - падает при вызове setsockopt_orig. В чем вообще могут быть грабли?

#define _GNU_SOURCE
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
#include <sys/socket.h>

static void * wrapper_routine(void *);

/* Original setsockopt function */
static int (*setsockopt_orig)(int socket, int level, int option_name,
              const void *option_value, socklen_t option_len) = NULL;


/* Library initialization function */
void wooinit(void) __attribute__((constructor));

void wooinit(void)
{
    setsockopt_orig = dlsym(RTLD_NEXT, "setsockopt");
    fprintf(stderr, "setsockopt: orig addr 0x%x\n", setsockopt_orig);
    if(setsockopt_orig == NULL)
    {
        char *error = dlerror();
        if(error == NULL)
        {
            error = "setsockopt is NULL";
        }
        fprintf(stderr, "%s\n", error);
        exit(EXIT_FAILURE);
    }
}

/* Our wrapper function for the real setsockopt() */
int setsockopt(int socket, int level, int option_name,
               const void *option_value, socklen_t option_len)
{
  int ret = 0;
  fprintf(stderr, "setsockopt hook call\n");
  if( setsockopt_orig != NULL )
  {
    ret = setsockopt_orig(socket, level, option_name, option_value, option_len);
  }
  fprintf(stderr, "setsockopt hook: ret %d\n", ret);
  return ret;
}

 

kulti
()

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