[Из песочницы] Знакомство с GStreamer: инициализация
Чуть больше года назад пользователь POPSuL опубликовал серию статей (1, 2 и 3) о мультимедийном фреймворке GStreamer (за что ему огромное спасибо). Я бы хотел продолжить его начинание, сделав больший упор на кодовую составляющую, нежели на инструменты командной строки, входящие в состав GStreamer.
В данной статье я расскажу о самой первой операции при работе с фреймворком — инициализации. А в качестве закрепления материала мы напечатаем версию GStreamer.
Среда разработкиПример из статьи выполнен в Ubuntu 14.04 c установленным GStreamer версии 1.2.4. Компиляция выполняется следующим образом:
$ gcc -Wall -o source source.c $(pkg-config --cflags --libs gstreamer-1.0)
Также в исходном файле должен быть подключен заголовочный файл:
#include
Практика Для закрепления теоретического материала напишем приложение, которое выводит версию библиотеки GStreamer. В данном контексте существует два понятия версии: версия GStreamer, с которой приложение слинковано в данный момент (runtime-версия) версия GStreamer, использованного при компиляции приложения (compile-time-версия) Для первого варианта используются функции: void gst_version (guint *major, guint *minor, guint *micro, guint *nano) gchar * gst_version_string (void) Для второго варианта используются следующие макросы: GST_VERSION_MAJOR GST_VERSION_MINOR GST_VERSION_MICRO GST_VERSION_NANO Насчет nano: 0 — это релизы, 1 — GIT-версии, 2 -… — пререлизы.Все вышесказанное сведено в следующий пример:
#include
/* Инициализация GStreamer, игнорируя любые аргументы */ gst_init (NULL, NULL); if (gst_is_initialized ()) g_print («GStreamer library successfully initialized\n»);
/* Выводим версию при компиляции */ if (GST_VERSION_NANO == 0) nano = »; else if (GST_VERSION_NANO == 1) nano = »(GIT)»; else nano = »(Prerelease)»; g_print («Compile time version: %d.%d.%d %s\n», GST_VERSION_MAJOR, GST_VERSION_MINOR, GST_VERSION_MICRO, nano);
/* Выводим runtime-версию */ gst_version (&major, &minor, &micro, &nano_int);
if (nano_int == 0) nano = »; else if (nano_int == 1) nano = »(GIT)»; else nano = »(Prerelease)»; g_print («Runtime version: %d.%d.%d %s\n», major, minor, micro, nano);
/* Выводим runtime-версию в виде готовой строки */ g_print («String runtime version: %s\n», gst_version_string ()); return 0; } Компилируем и запускаем: $ gcc -Wall -o source source.c $(pkg-config --cflags --libs gstreamer-1.0) $ ./source Результат: GStreamer library successfully initialized Compile time version: 1.2.4 Runtime version: 1.2.4 String runtime version: GStreamer 1.2.4 Заключение В следующей статье постараюсь подробно описать процесс создания элементов и компоновки из них конвейера (pipeline), а в практическом разделе попробуем создать что-нибудь поинтереснее.Материалы по теме GStreamer Application Development ManualGStreamer 1.0 Core Reference Manual