Hello community, here is the log from the commit of package xawtv for openSUSE:Factory checked in at Mon Sep 12 10:37:46 CEST 2011.
-------- --- xawtv/xawtv.changes 2011-07-03 19:29:48.000000000 +0200 +++ /mounts/work_src_done/STABLE/xawtv/xawtv.changes 2011-09-10 15:14:33.000000000 +0200 @@ -1,0 +2,19 @@ +Sat Sep 10 13:13:27 UTC 2011 - [email protected] + +- Update to version 3.102: + * Improve alsa latency handler and document the -alsa-latency parameter + * Improve alsa handling, fixing a cut and past error that causes + breakages with some cards + * Improve audio parameters detection + * fix build with ld --as-needed --no-copy-dt-needed +- Spec file updates: + * Changed License: to GPL-2.0+. + * Recommend instead of Require "pia" for xawtv and motv. + * Removed "export SUSE_ASNEEDED=0" (not needed anymore). + * Minor other updates. +- Added a patch "v4l-conf_non-position-independent-executable_fix.patch" to fix + the non-position-independent-executable rpmlint warning for v4l-conf. +- Added a patch "no-copy-dt-needed-entries.patch" to fix linking with + --no-copy-dt-needed-entries. + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- xawtv-3.101.tar.bz2 New: ---- no-copy-dt-needed-entries.patch v4l-conf_non-position-independent-executable_fix.patch xawtv-3.102.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ xawtv.spec ++++++ --- /var/tmp/diff_new_pack.rBpNEN/_old 2011-09-12 10:37:41.000000000 +0200 +++ /var/tmp/diff_new_pack.rBpNEN/_new 2011-09-12 10:37:41.000000000 +0200 @@ -19,11 +19,11 @@ Name: xawtv -Version: 3.101 +Version: 3.102 Release: 1 Summary: Video4Linux TV application (Athena) -License: GPLv2+ +License: GPL-2.0+ Url: http://www.kraxel.org/blog/linux/xawtv/ Group: Hardware/TV Source0: http://linuxtv.org/downloads/xawtv/%{name}-%{version}.tar.bz2 @@ -31,6 +31,10 @@ Source2: motv.desktop # PATCH-FIX-OPENSUSE xawtv-3.95.patch -- Patch0: xawtv-3.95.patch +# PATCH-FIX-OPENSUSE v4l-conf_non-position-independent-executable_fix.patch [email protected] -- Fix non-position-independent-executable rpmlint warning for v4l-conf +Patch1: v4l-conf_non-position-independent-executable_fix.patch +# PATCH-FIX-UPSTREAM no-copy-dt-needed-entries.patch [email protected] -- Fix linking with --no-copy-dt-needed-entries +Patch2: no-copy-dt-needed-entries.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: Mesa-devel @@ -51,10 +55,10 @@ %endif BuildRequires: xorg-x11-devel BuildRequires: zvbi-devel -Requires: pia Requires: tv-common Requires: tv-fonts Requires: v4l-conf +Recommends: pia Suggests: lirc Conflicts: xaw3dd @@ -64,13 +68,13 @@ the Athena widgets. %package -n motv -License: GPLv2+ +License: GPL-2.0+ Summary: Video4Linux TV application (Motif) Group: Hardware/TV -Requires: pia Requires: tv-common Requires: tv-fonts Requires: v4l-conf +Recommends: pia Suggests: lirc Provides: xawtv:%{_bindir}/motv @@ -82,7 +86,7 @@ Also includes the teletext/videotext viewer mtt. %package -n tv-common -License: GPLv2+ +License: GPL-2.0+ Summary: Frequency tables and some Tools for motv and xawtv Group: Hardware/TV Provides: xawtv:/usr/X11R6/lib/X11/fonts/misc/led-iso8859-1.bdf @@ -92,7 +96,7 @@ for xawtv and motv (xawtv-remote, for example). %package -n v4l-conf -License: GPLv2+ +License: GPL-2.0+ Summary: Video4linux Configuration Tool Group: Hardware/TV Requires(post): permissions @@ -103,7 +107,7 @@ (bttv, for example). xawtv, motv, and fbtv need it. %package -n v4l-tools -License: GPLv2+ +License: GPL-2.0+ Summary: Video4linux terminal / command line utilities Group: Hardware/TV Requires: tv-common @@ -118,7 +122,7 @@ application, ... %package -n alevtd -License: GPLv2+ +License: GPL-2.0+ Summary: HTTP server for Teletext pages Group: Productivity/Networking/Web/Servers @@ -127,7 +131,7 @@ via http, i.e. you can read the teletext pages with a web browser. %package -n pia -License: GPLv2+ +License: GPL-2.0+ Summary: Simple Movie Player Group: Productivity/Multimedia/Video/Players Requires: tv-common @@ -140,26 +144,25 @@ %prep %setup -q %patch0 -p1 +%patch1 +%patch2 %build -# This package failed when testing with -Wl,-as-needed being default. -# So we disable it here, if you want to retest, just delete this comment and the line below. -export SUSE_ASNEEDED=0 autoreconf -fi export CFLAGS="%{optflags} -fno-strict-aliasing" %{configure} make %{?_smp_mflags} %install -make DESTDIR=%{buildroot} SUID_ROOT="" install +%make_install SUID_ROOT="" mkdir -p %{buildroot}%{_datadir}/pixmaps install -pm 0644 contrib/xawtv48x48.xpm %{buildroot}%{_datadir}/pixmaps/xawtv.xpm install -pm 0644 contrib/xawtv48x48.xpm %{buildroot}%{_datadir}/pixmaps/motv.xpm %if 0%{?suse_version} -%suse_update_desktop_file -i xawtv AudioVideo Video TV -%suse_update_desktop_file -i motv Motif AudioVideo Video TV +%suse_update_desktop_file -i xawtv +%suse_update_desktop_file -i motv %endif %clean @@ -274,7 +277,7 @@ %files -n pia %defattr(-,root,root,-) -%doc COPYING Changes README README.* TODO +%doc COPYING Changes README %{_bindir}/pia %doc %{_mandir}/man1/pia.1%{ext_man} ++++++ no-copy-dt-needed-entries.patch ++++++ --- x11/Subdir.mk.orig 2011-09-05 20:26:02.000000000 +0300 +++ x11/Subdir.mk 2011-09-10 13:57:26.102000095 +0300 @@ -101,8 +101,8 @@ $(ATHENA_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm -ldl -lfontconfig x11/motv : LDLIBS += \ $(THREAD_LIBS) $(CURSES_LIBS) $(LIRC_LIBS) $(ALSA_LIBS) \ - $(MOTIF_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm -x11/mtt : LDLIBS += $(THREAD_LIBS) $(MOTIF_LIBS) $(VBI_LIBS) -ljpeg + $(MOTIF_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm -ldl +x11/mtt : LDLIBS += $(THREAD_LIBS) $(MOTIF_LIBS) $(VBI_LIBS) -ljpeg -ldl x11/v4lctl : LDLIBS += $(THREAD_LIBS) $(ATHENA_LIBS) -ljpeg -lm -ldl x11/pia : LDLIBS += $(ATHENA_LIBS) $(GL_LIBS) -ljpeg -lm -ldl x11/rootv : LDLIBS += $(ATHENA_LIBS) ++++++ v4l-conf_non-position-independent-executable_fix.patch ++++++ --- console/Subdir.mk.orig 2011-09-05 20:26:02.000000000 +0300 +++ console/Subdir.mk 2011-09-10 14:13:33.887999993 +0300 @@ -88,6 +88,10 @@ console/scantv : LDFLAGS := $(DLFLAGS) console/streamer : LDFLAGS := $(DLFLAGS) console/webcam : LDFLAGS := $(DLFLAGS) +console/v4l-conf : LDFLAGS := $(DLFLAGS) -pie + +# compile flags +console/v4l-conf : CFLAGS += -fPIE # global targets all:: $(TARGETS-console) $(TARGETS-v4l-conf) ++++++ xawtv-3.101.tar.bz2 -> xawtv-3.102.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/Changes new/xawtv-3.102/Changes --- old/xawtv-3.101/Changes 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/Changes 2011-09-05 19:26:02.000000000 +0200 @@ -1,3 +1,12 @@ +3.102 +===== + +* Improve alsa latency handler and document the -alsa-latency parameter +* Improve alsa handling, fixing a cut and past error that causes + breakages with some cards +* Improve audio parameters detection +* fix build with ld --as-needed --no-copy-dt-needed + 3.101 ===== @@ -12,7 +21,7 @@ the first TV device. If not available, fall back to the first grabber device. * Add auto-detection logic for scanv: by default, it will now seek for - the first TV device. If not afailable, fails. + the first TV device. If not available, fails. * Add optional support for libexplain at the v4l2/libv4l driver. Libexplain provides a more complete explanation for the error codes, helping developers to better track what's happened. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/common/alsa_stream.c new/xawtv-3.102/common/alsa_stream.c --- old/xawtv-3.101/common/alsa_stream.c 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/common/alsa_stream.c 2011-09-05 19:26:02.000000000 +0200 @@ -69,7 +69,7 @@ err = snd_pcm_hw_params_any(handle, params); if (err < 0) { fprintf(error_fp, - "Broken configuration for %s PCM: no configurations available: %s\n", + "alsa: Broken configuration for %s PCM: no configurations available: %s\n", snd_strerror(err), id); return err; } @@ -77,20 +77,20 @@ err = snd_pcm_hw_params_set_access(handle, params, SND_PCM_ACCESS_RW_INTERLEAVED); if (err < 0) { - fprintf(error_fp, "Access type not available for %s: %s\n", id, + fprintf(error_fp, "alsa: Access type not available for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_hw_params_set_format(handle, params, format); if (err < 0) { - fprintf(error_fp, "Sample format not available for %s: %s\n", id, + fprintf(error_fp, "alsa: Sample format not available for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_hw_params_set_channels(handle, params, channels); if (err < 0) { - fprintf(error_fp, "Channels count (%i) not available for %s: %s\n", + fprintf(error_fp, "alsa: Channels count (%i) not available for %s: %s\n", channels, id, snd_strerror(err)); return err; } @@ -98,27 +98,66 @@ return 0; } +static void getparams_periods(snd_pcm_t *handle, + snd_pcm_hw_params_t *params, + unsigned int *usecs, + unsigned int *count, + const char *id) +{ + unsigned min = 0, max = 0; + + snd_pcm_hw_params_get_periods_min(params, &min, 0); + snd_pcm_hw_params_get_periods_max(params, &max, 0); + if (min && max) { + if (verbose) + fprintf(error_fp, "alsa: %s periods range between %u and %u. Want: %u\n", + id, min, max, *count); + if (*count < min) + *count = min; + if (*count > max) + *count = max; + } + + min = max = 0; + snd_pcm_hw_params_get_period_time_min(params, &min, 0); + snd_pcm_hw_params_get_period_time_max(params, &max, 0); + if (min && max) { + if (verbose) + fprintf(error_fp, "alsa: %s period time range between %u and %u. Want: %u\n", + id, min, max, *usecs); + if (*usecs < min) + *usecs = min; + if (*usecs > max) + *usecs = max; + } +} + static int setparams_periods(snd_pcm_t *handle, snd_pcm_hw_params_t *params, - unsigned int usecs, - unsigned int count, + unsigned int *usecs, + unsigned int *count, const char *id) { int err; - err = snd_pcm_hw_params_set_period_time_near(handle, params, &usecs, 0); + err = snd_pcm_hw_params_set_period_time_near(handle, params, usecs, 0); if (err < 0) { - fprintf(error_fp, "Unable to set period time %u for %s: %s\n", - usecs, id, snd_strerror(err)); - return err; + fprintf(error_fp, "alsa: Unable to set period time %u for %s: %s\n", + *usecs, id, snd_strerror(err)); + return err; } - err = snd_pcm_hw_params_set_periods_near(handle, params, &count, 0); + err = snd_pcm_hw_params_set_periods_near(handle, params, count, 0); if (err < 0) { - fprintf(error_fp, "Unable to set periods %u for %s: %s\n", - count, id, snd_strerror(err)); + fprintf(error_fp, "alsa: Unable to set %u periods for %s: %s\n", + *count, id, snd_strerror(err)); return err; } + + if (verbose) + fprintf(error_fp, "alsa: %s period set to %u periods of %u time\n", + id, *count, *usecs); + return 0; } @@ -132,59 +171,54 @@ err = snd_pcm_hw_params(handle, params); if (err < 0) { - fprintf(error_fp, "Unable to set hw params for %s: %s\n", + fprintf(error_fp, "alsa: Unable to set hw params for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_sw_params_current(handle, swparams); if (err < 0) { - fprintf(error_fp, "Unable to determine current swparams for %s: %s\n", + fprintf(error_fp, "alsa: Unable to determine current swparams for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_sw_params_set_start_threshold(handle, swparams, start_treshold); if (err < 0) { - fprintf(error_fp, "Unable to set start threshold mode for %s: %s\n", + fprintf(error_fp, "alsa: Unable to set start threshold mode for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_sw_params_set_avail_min(handle, swparams, 4); if (err < 0) { - fprintf(error_fp, "Unable to set avail min for %s: %s\n", + fprintf(error_fp, "alsa: Unable to set avail min for %s: %s\n", id, snd_strerror(err)); return err; } err = snd_pcm_sw_params(handle, swparams); if (err < 0) { - fprintf(error_fp, "Unable to set sw params for %s: %s\n", + fprintf(error_fp, "alsa: Unable to set sw params for %s: %s\n", id, snd_strerror(err)); return err; } return 0; } -static int seek_rates[] = { - 48000, - 44100, - 32000, -}; -#define NUM_RATES (sizeof(seek_rates)/sizeof(seek_rates[0])) - static int setparams(snd_pcm_t *phandle, snd_pcm_t *chandle, snd_pcm_format_t format, int latency, int allow_resample, struct final_params *negotiated) { int i; - unsigned ratep, ratec; + unsigned ratep, ratec = 0; + unsigned ratemin = 32000, ratemax = 96000, val; int err, channels = 2; snd_pcm_hw_params_t *p_hwparams, *c_hwparams; snd_pcm_sw_params_t *p_swparams, *c_swparams; snd_pcm_uframes_t c_size, p_psize, c_psize; /* Our latency is 2 periods (in usecs) */ - unsigned int periodtime = latency * 1000 / 2; + unsigned int c_periods = 2, p_periods; + unsigned int c_periodtime, p_periodtime; snd_pcm_hw_params_alloca(&p_hwparams); snd_pcm_hw_params_alloca(&c_hwparams); @@ -200,17 +234,44 @@ if (allow_resample) { err = snd_pcm_hw_params_set_rate_resample(chandle, c_hwparams, 1); if (err < 0) { - fprintf(error_fp, "Resample setup failed: %s\n", snd_strerror(err)); + fprintf(error_fp, "alsa: Resample setup failed: %s\n", snd_strerror(err)); return 1; - } + } else if (verbose) + fprintf(error_fp, "alsa: Resample enabled.\n"); } - for (i = 0; i < NUM_RATES; i++) { - ratec = seek_rates[i]; - err = snd_pcm_hw_params_set_rate_near(chandle, c_hwparams, &ratec, 0); + err = snd_pcm_hw_params_get_rate_min(c_hwparams, &ratemin, 0); + if (err >= 0 && verbose) + fprintf(error_fp, "alsa: Capture min rate is %d\n", ratemin); + err = snd_pcm_hw_params_get_rate_max(c_hwparams, &ratemax, 0); + if (err >= 0 && verbose) + fprintf(error_fp, "alsa: Capture max rate is %u\n", ratemax); + + err = snd_pcm_hw_params_get_rate_min(p_hwparams, &val, 0); + if (err >= 0) { + if (verbose) + fprintf(error_fp, "alsa: Playback min rate is %u\n", val); + if (val > ratemin) + ratemin = val; + } + err = snd_pcm_hw_params_get_rate_max(p_hwparams, &val, 0); + if (err >= 0) { + if (verbose) + fprintf(error_fp, "alsa: Playback max rate is %u\n", val); + if (val < ratemax) + ratemax = val; + } + + if (verbose) + fprintf(error_fp, "alsa: Will search a common rate between %u and %u\n", + ratemin, ratemax); + + for (i = ratemin; i <= ratemax; i+= 100) { + err = snd_pcm_hw_params_set_rate_near(chandle, c_hwparams, &i, 0); if (err) continue; - ratep = ratec; + ratec = i; + ratep = i; err = snd_pcm_hw_params_set_rate_near(phandle, p_hwparams, &ratep, 0); if (err) continue; @@ -218,24 +279,50 @@ break; if (verbose) fprintf(error_fp, - "Failed to set to %u: capture wanted %u, playback wanted %u%s\n", - seek_rates[i], ratec, ratep, + "alsa: Failed to set to %u: capture wanted %u, playback wanted %u%s\n", + i, ratec, ratep, allow_resample ? " with resample enabled": ""); } if (err < 0) { - fprintf(error_fp, "Failed to set a supported rate: %s\n", + fprintf(error_fp, "alsa: Failed to set a supported rate: %s\n", snd_strerror(err)); return 1; } if (ratep != ratec) { if (verbose || allow_resample) fprintf(error_fp, - "Couldn't find a rate that it is supported by both playback and capture\n"); + "alsa: Couldn't find a rate that it is supported by both playback and capture\n"); return 2; } + if (verbose) + fprintf(error_fp, "alsa: Using Rate %d\n", ratec); + + /* Negociate period parameters */ + + c_periodtime = latency * 1000 / c_periods; + getparams_periods(chandle, c_hwparams, &c_periodtime, &c_periods, "capture"); + p_periods = c_periods * 2; + p_periodtime = c_periodtime; + getparams_periods(phandle, p_hwparams, &p_periodtime, &p_periods, "playback"); + c_periods = p_periods / 2; + + /* + * Some playback devices support a very limited periodtime range. If the user needs to + * use a higher latency to avoid overrun/underrun, use an alternate algorithm of incresing + * the number of periods, to archive the needed latency + */ + if (p_periodtime < c_periodtime) { + c_periodtime = p_periodtime; + c_periods = round (latency * 1000.0 / c_periodtime + 0.5); + getparams_periods(chandle, c_hwparams, &c_periodtime, &c_periods, "capture"); + p_periods = c_periods * 2; + p_periodtime = c_periodtime; + getparams_periods(phandle, p_hwparams, &p_periodtime, &p_periods, "playback"); + c_periods = p_periods / 2; + } - if (setparams_periods(phandle, c_hwparams, periodtime, 2, "capture")) + if (setparams_periods(chandle, c_hwparams, &c_periodtime, &c_periods, "capture")) return 1; /* Note we use twice as much periods for the playback buffer, since we @@ -244,14 +331,14 @@ on writing to it. Note we will configure the playback dev to start playing as soon as it has 2 capture periods worth of data, so this won't influence latency */ - if (setparams_periods(phandle, p_hwparams, periodtime, 4, "playback")) + if (setparams_periods(phandle, p_hwparams, &p_periodtime, &p_periods, "playback")) return 1; snd_pcm_hw_params_get_period_size(p_hwparams, &p_psize, NULL); snd_pcm_hw_params_get_period_size(c_hwparams, &c_psize, NULL); snd_pcm_hw_params_get_buffer_size(c_hwparams, &c_size); - latency = 2 * c_psize; + latency = c_periods * c_psize; if (setparams_set(phandle, p_hwparams, p_swparams, latency, "playback")) return 1; @@ -259,17 +346,17 @@ return 1; if ((err = snd_pcm_prepare(phandle)) < 0) { - fprintf(error_fp, "Prepare error: %s\n", snd_strerror(err)); + fprintf(error_fp, "alsa: Prepare error: %s\n", snd_strerror(err)); return 1; } if (verbose) { - fprintf(error_fp, "ALSA config:\n"); + fprintf(error_fp, "alsa: Negociated configuration:\n"); snd_pcm_dump_setup(phandle, output); snd_pcm_dump_setup(chandle, output); - fprintf(error_fp, "Parameters are %iHz, %s, %i channels\n", + fprintf(error_fp, "alsa: Parameters are %iHz, %s, %i channels\n", ratep, snd_pcm_format_name(format), channels); - fprintf(error_fp, "Set bitrate to %u%s, buffer size is %u\n", ratec, + fprintf(error_fp, "alsa: Set bitrate to %u%s, buffer size is %u\n", ratec, allow_resample ? " with resample enabled at playback": "", (unsigned int)c_size); } @@ -290,7 +377,7 @@ if (r < 0 && r != -EAGAIN) { r = snd_pcm_recover(handle, r, 0); if (r < 0) - fprintf(error_fp, "overrun recover error: %s\n", snd_strerror(r)); + fprintf(error_fp, "alsa: overrun recover error: %s\n", snd_strerror(r)); } return r; } @@ -307,7 +394,7 @@ if (r < 0) { r = snd_pcm_recover(handle, r, 0); if (r < 0) { - fprintf(error_fp, "underrun recover error: %s\n", + fprintf(error_fp, "alsa: underrun recover error: %s\n", snd_strerror(r)); return r; } @@ -330,20 +417,20 @@ err = snd_output_stdio_attach(&output, error_fp, 0); if (err < 0) { - fprintf(error_fp, "Output failed: %s\n", snd_strerror(err)); + fprintf(error_fp, "alsa: Output failed: %s\n", snd_strerror(err)); return 0; } /* Open the devices */ if ((err = snd_pcm_open(&phandle, pdevice, SND_PCM_STREAM_PLAYBACK, 0)) < 0) { - fprintf(error_fp, "Cannot open ALSA Playback device %s: %s\n", + fprintf(error_fp, "alsa: Cannot open playback device %s: %s\n", pdevice, snd_strerror(err)); return 0; } if ((err = snd_pcm_open(&chandle, cdevice, SND_PCM_STREAM_CAPTURE, SND_PCM_NONBLOCK)) < 0) { - fprintf(error_fp, "Cannot open ALSA Capture device %s: %s\n", + fprintf(error_fp, "alsa: Cannot open capture device %s: %s\n", cdevice, snd_strerror(err)); return 0; } @@ -353,30 +440,30 @@ /* Try to use plughw instead, as it allows emulating speed */ if (err == 2 && strncmp(pdevice, "hw", 2) == 0) { - snd_pcm_close(phandle); + snd_pcm_close(phandle); - sprintf(pdevice_new, "plug%s", pdevice); - pdevice = pdevice_new; - if (verbose) - fprintf(error_fp, "Trying %s for playback\n", pdevice); - if ((err = snd_pcm_open(&phandle, pdevice, SND_PCM_STREAM_PLAYBACK, - 0)) < 0) { - fprintf(error_fp, "Cannot open ALSA Playback device %s: %s\n", - pdevice, snd_strerror(err)); - } + sprintf(pdevice_new, "plug%s", pdevice); + pdevice = pdevice_new; + if (verbose) + fprintf(error_fp, "alsa: Trying %s for playback\n", pdevice); + if ((err = snd_pcm_open(&phandle, pdevice, SND_PCM_STREAM_PLAYBACK, + 0)) < 0) { + fprintf(error_fp, "alsa: Cannot open playback device %s: %s\n", + pdevice, snd_strerror(err)); + } err = setparams(phandle, chandle, format, latency, 1, &negotiated); } if (err != 0) { - fprintf(error_fp, "setparams failed\n"); - return 1; + fprintf(error_fp, "alsa: setparams failed\n"); + return 1; } buffer = malloc((negotiated.bufsize * snd_pcm_format_width(format) / 8) * negotiated.channels); if (buffer == NULL) { - fprintf(error_fp, "Failed allocating buffer for audio\n"); + fprintf(error_fp, "alsa: Failed allocating buffer for audio\n"); return 0; } @@ -385,7 +472,7 @@ * need to multiply it by two. */ fprintf(error_fp, - "Alsa stream started from %s to %s (%i Hz, buffer delay = %.2f ms)\n", + "alsa: stream started from %s to %s (%i Hz, buffer delay = %.2f ms)\n", cdevice, pdevice, negotiated.rate, negotiated.latency * 1000.0 / negotiated.rate); @@ -428,10 +515,10 @@ struct input_params *inputs = (struct input_params *) whatever; if (verbose) - fprintf(error_fp, "Starting copying alsa stream from %s to %s\n", + fprintf(error_fp, "alsa: starting copying alsa stream from %s to %s\n", inputs->cdevice, inputs->pdevice); alsa_stream(inputs->pdevice, inputs->cdevice, inputs->latency); - fprintf(error_fp, "Alsa stream stopped\n"); + fprintf(error_fp, "alsa: stream stopped\n"); free(inputs->pdevice); free(inputs->cdevice); @@ -458,8 +545,9 @@ verbose = __verbose; + if (inputs == NULL) { - fprintf(error_fp, "failed allocating memory for ALSA inputs\n"); + fprintf(error_fp, "alsa: failed allocating memory for inputs\n"); return 0; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/console/Subdir.mk new/xawtv-3.102/console/Subdir.mk --- old/xawtv-3.101/console/Subdir.mk 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/console/Subdir.mk 2011-09-05 19:26:02.000000000 +0200 @@ -73,11 +73,11 @@ # libraries to link console/fbtv : LDLIBS += \ $(THREAD_LIBS) $(CURSES_LIBS) $(LIRC_LIBS) $(ALSA_LIBS) \ - $(FS_LIBS) -ljpeg -lm -console/ttv : LDLIBS += $(THREAD_LIBS) $(AA_LIBS) -ljpeg -lm -console/scantv : LDLIBS += $(THREAD_LIBS) $(VBI_LIBS) -ljpeg -console/streamer : LDLIBS += $(THREAD_LIBS) -ljpeg -lm -console/webcam : LDLIBS += $(THREAD_LIBS) -ljpeg -lm + $(FS_LIBS) -ljpeg -lm -ldl +console/ttv : LDLIBS += $(THREAD_LIBS) $(AA_LIBS) -ljpeg -lm -ldl +console/scantv : LDLIBS += $(THREAD_LIBS) $(VBI_LIBS) -ljpeg -ldl +console/streamer : LDLIBS += $(THREAD_LIBS) -ljpeg -lm -ldl +console/webcam : LDLIBS += $(THREAD_LIBS) -ljpeg -lm -ldl console/radio : LDLIBS += $(CURSES_LIBS) console/record : LDLIBS += $(CURSES_LIBS) console/v4l-conf : LDLIBS += $(ATHENA_LIBS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/libng/plugins/Subdir.mk new/xawtv-3.102/libng/plugins/Subdir.mk --- old/xawtv-3.101/libng/plugins/Subdir.mk 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/libng/plugins/Subdir.mk 2011-09-05 19:26:02.000000000 +0200 @@ -49,6 +49,9 @@ else libng/plugins/drv0-libv4l.so: LDLIBS := -lv4l2 endif +libng/plugins/flt-disor.so: LDLIBS := -lm +libng/plugins/flt-gamma.so: LDLIBS := -lm +libng/plugins/conv-mjpeg.so: LDLIBS := -ljpeg # global targets all:: $(TARGETS-plugins) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/x11/Subdir.mk new/xawtv-3.102/x11/Subdir.mk --- old/xawtv-3.101/x11/Subdir.mk 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/x11/Subdir.mk 2011-09-05 19:26:02.000000000 +0200 @@ -98,13 +98,13 @@ # libraries to link x11/xawtv : LDLIBS += \ $(THREAD_LIBS) $(CURSES_LIBS) $(LIRC_LIBS) $(ALSA_LIBS) \ - $(ATHENA_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm + $(ATHENA_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm -ldl -lfontconfig x11/motv : LDLIBS += \ $(THREAD_LIBS) $(CURSES_LIBS) $(LIRC_LIBS) $(ALSA_LIBS) \ $(MOTIF_LIBS) $(VBI_LIBS) $(GL_LIBS) -ljpeg -lm x11/mtt : LDLIBS += $(THREAD_LIBS) $(MOTIF_LIBS) $(VBI_LIBS) -ljpeg -x11/v4lctl : LDLIBS += $(THREAD_LIBS) $(ATHENA_LIBS) -ljpeg -lm -x11/pia : LDLIBS += $(ATHENA_LIBS) $(GL_LIBS) -ljpeg -lm +x11/v4lctl : LDLIBS += $(THREAD_LIBS) $(ATHENA_LIBS) -ljpeg -lm -ldl +x11/pia : LDLIBS += $(ATHENA_LIBS) $(GL_LIBS) -ljpeg -lm -ldl x11/rootv : LDLIBS += $(ATHENA_LIBS) x11/xawtv-remote : LDLIBS += $(ATHENA_LIBS) x11/propwatch : LDLIBS += $(ATHENA_LIBS) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/x11/xt.c new/xawtv-3.102/x11/xt.c --- old/xawtv-3.101/x11/xt.c 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/x11/xt.c 2011-09-05 19:26:02.000000000 +0200 @@ -1679,6 +1679,7 @@ " -(no)alsa enable/disable alsa streaming. Default: enabled\n" " -(no)alsa-cap manually specify an alsa capture interface\n" " -(no)alsa-pb manually specify an alsa playback interface\n" + " -alsa-latency manually specify an alsa latency in ms. Default: 30\n" #endif " -b -bpp n color depth of the display is n (n=24,32)\n" " -o -outfile file filename base for snapshots\n" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/xawtv-3.101/xawtv.spec new/xawtv-3.102/xawtv.spec --- old/xawtv-3.101/xawtv.spec 2011-07-03 15:55:02.000000000 +0200 +++ new/xawtv-3.102/xawtv.spec 2011-09-05 19:26:02.000000000 +0200 @@ -1,7 +1,7 @@ Name: xawtv Group: Applications/Multimedia Autoreqprov: on -Version: 3.100 +Version: 3.102 Release: 0 License: GPL Summary: v4l applications ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
