From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: "Sergey N. Yatskevich" To: ALT Devel discussion list Content-Type: multipart/mixed; boundary="=-XtH+9IghwhZuCpctPz2J" Date: Tue, 13 Jun 2006 15:23:26 +0400 Message-Id: <1150197806.8245.10.camel@snc.2100.gosniias.ru> Mime-Version: 1.0 X-Mailer: Evolution 2.6.2 (2.6.2-alt1) Subject: [devel] Sound-Juicer + gst-plugins-base(v4l) X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.7 Precedence: list Reply-To: ALT Devel discussion list List-Id: ALT Devel discussion list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Jun 2006 11:23:03 -0000 Archived-At: List-Archive: List-Post: --=-XtH+9IghwhZuCpctPz2J Content-Type: text/plain; charset=KOI8-R Content-Transfer-Encoding: 8bit А кто-нибудь у нас занимается пакетом sound-juicer? Я тут себе новую (2.14.4) версию собрал (с 0.10-м gstreamer'ом) - отлично работает, не глючит и не падает. Если нужно, то я могу залить SRPM в incoming (или вообще взять на сопровождение). P.S. а V4L модуль в gst-plugins-base не работает. Причём это проблема его дизайна, а не просто программерской ошибки. Я приложил патч, который эту проблему исправляет, однако это в общем-то хак (для остановки потока используется V4L2 ioctl, тогда как весь остальной код модуля использует V4L1). P.P.S. а никто не знает, почему в gstreamer нет модуля для работы с V4L2? Тем более, что в документации этот модуль упоминается наравне с V4L1. -- Sergey N. Yatskevich --=-XtH+9IghwhZuCpctPz2J Content-Disposition: attachment; filename=gst-plugins-base-0.10.7-v4l.patch Content-Type: text/x-patch; name=gst-plugins-base-0.10.7-v4l.patch; charset=KOI8-R Content-Transfer-Encoding: 7bit diff -Naur gst-plugins-base-0.10.7/sys/v4l/v4lsrc_calls.c gst-plugins-base-0.10.7.new/sys/v4l/v4lsrc_calls.c --- gst-plugins-base-0.10.7/sys/v4l/v4lsrc_calls.c 2006-02-05 19:16:13 +0300 +++ gst-plugins-base-0.10.7.new/sys/v4l/v4lsrc_calls.c 2006-06-12 07:12:49 +0400 @@ -488,6 +488,22 @@ return FALSE; } + /* + * This is a dirty hack (use V4L2 API in V4L1 application), but we + * need to do that becouse V4L1 API don't have STREAMOFF equivalent. + * + * Without that, device driver will not allow us to do other VIDIOCGMBUF + * calls (only when video_fd will be closed driver stop cature stream + * by self). + */ + enum v4l2_buf_type buf_type = V4L2_BUF_TYPE_VIDEO_CAPTURE; + if (ioctl (GST_V4LELEMENT (v4lsrc)->video_fd, VIDIOC_STREAMOFF, &buf_type) < 0) { + GST_ELEMENT_ERROR (v4lsrc, RESOURCE, READ, (NULL), + ("Error in stream off operation: %s", g_strerror (errno))); + munmap (buffer, vmbuf.size); + return FALSE; + } + munmap (buffer, vmbuf.size); /* if we got here, it worked! woohoo, the format is supported! */ --=-XtH+9IghwhZuCpctPz2J--