diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c8ec69a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/libiec61883-1.2.0.tar.gz diff --git a/.libiec61883.metadata b/.libiec61883.metadata new file mode 100644 index 0000000..4fb44c2 --- /dev/null +++ b/.libiec61883.metadata @@ -0,0 +1 @@ +2a8a759ab19fac972bacbe234c0ce21d90f7aca0 SOURCES/libiec61883-1.2.0.tar.gz diff --git a/SOURCES/libiec61883-1.2.0-installtests.patch b/SOURCES/libiec61883-1.2.0-installtests.patch new file mode 100644 index 0000000..6f62e23 --- /dev/null +++ b/SOURCES/libiec61883-1.2.0-installtests.patch @@ -0,0 +1,28 @@ +diff -Naurp libiec61883-1.2.0.orig/examples/Makefile.am libiec61883-1.2.0/examples/Makefile.am +--- libiec61883-1.2.0.orig/examples/Makefile.am 2006-09-24 15:34:12.000000000 -0400 ++++ libiec61883-1.2.0/examples/Makefile.am 2009-01-15 10:29:02.265594991 -0500 +@@ -1,6 +1,6 @@ + +-noinst_PROGRAMS = test-amdtp test-dv test-mpeg2 test-plugs +-bin_PROGRAMS = plugreport plugctl ++noinst_PROGRAMS = ++bin_PROGRAMS = plugreport plugctl test-amdtp test-dv test-mpeg2 test-plugs + man_MANS = plugreport.1 plugctl.1 + EXTRA_DIST = plugreport.1 plugctl.1 + +diff -Naurp libiec61883-1.2.0.orig/examples/Makefile.in libiec61883-1.2.0/examples/Makefile.in +--- libiec61883-1.2.0.orig/examples/Makefile.in 2009-01-15 01:33:33.000000000 -0500 ++++ libiec61883-1.2.0/examples/Makefile.in 2009-01-15 10:28:57.088402078 -0500 +@@ -32,9 +32,10 @@ PRE_UNINSTALL = : + POST_UNINSTALL = : + build_triplet = @build@ + host_triplet = @host@ +-noinst_PROGRAMS = test-amdtp$(EXEEXT) test-dv$(EXEEXT) \ ++noinst_PROGRAMS = ++bin_PROGRAMS = plugreport$(EXEEXT) plugctl$(EXEEXT) \ ++ test-amdtp$(EXEEXT) test-dv$(EXEEXT) \ + test-mpeg2$(EXEEXT) test-plugs$(EXEEXT) +-bin_PROGRAMS = plugreport$(EXEEXT) plugctl$(EXEEXT) + subdir = examples + DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in + ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/SOURCES/libiec61883-channel-allocation-without-local-node-rw.patch b/SOURCES/libiec61883-channel-allocation-without-local-node-rw.patch new file mode 100644 index 0000000..f3f0934 --- /dev/null +++ b/SOURCES/libiec61883-channel-allocation-without-local-node-rw.patch @@ -0,0 +1,117 @@ +Date: Thu, 15 Jan 2009 15:41:16 +0100 (CET) +From: Stefan Richter +Subject: [PATCH libiec61883] cmp: replace open-coded channel allocation by + raw1394_channel_modify +To: Dan Dennedy +Cc: linux1394-devel@lists.sourceforge.net + +On 15 Jan, Dan Dennedy wrote: +> On Thu, Jan 1, 2009 at 5:13 AM, Stefan Richter +> wrote: +>> input plug register on the local node? AFAICT neither dvgrab nor kino +>> use raw1394_channel_modify and raw1394_bandwidth_modify, not even +>> through libiec61883.) +> +> dvgrab indirectly uses channel_modify when you use its -guid option to +> establish a point-to-point connection. +> + +Hmm. + +$ dvgrab -guid 0x008088030960484b +libiec61883 error: Failed to get channels available. +Established connection over channel 63 +[...proceeds with capture...] + + +--------------------------------- 8< --------------------------------- + +cmp: replace open-coded channel allocation by raw1394_channel_modify + +The benefit is that it works on kernel 2.6.30 firewire-core without +write permission to the IRM's device file (provided that libraw1394 is +extended for 2.6.30 ioctls too, otherwise it still needs access to the +IRM's file). + +If I read the code correctly, iec61883_cmp_normalize_output doesn't care +whether the channel was already allocated by somebody else; it only +cares that the channel is allocated. That's what the new code does too. +--- + src/cmp.c | 56 +++++++++--------------------------------------------- + 1 file changed, 10 insertions(+), 46 deletions(-) + +Index: libiec61883-1.2.0/src/cmp.c +=================================================================== +--- libiec61883-1.2.0.orig/src/cmp.c ++++ libiec61883-1.2.0/src/cmp.c +@@ -973,55 +973,19 @@ iec61883_cmp_normalize_output (raw1394ha + + DEBUG ("iec61883_cmp_normalize_output: node %d\n", (int) node & 0x3f); + +- // Check for plugs on output ++ /* Check for plugs on output */ + result = iec61883_get_oMPR (handle, node, &ompr); + if (result < 0) + return result; + +- // locate an ouput plug that has a connection +- for (oplug = 0; oplug < ompr.n_plugs; oplug++) { +- if (iec61883_get_oPCRX (handle, node, &opcr, oplug) == 0) { +- if (opcr.online && (opcr.n_p2p_connections > 0 || +- opcr.bcast_connection == 1)) { ++ /* Locate an ouptut plug that has a connection, ++ * make sure the plug's channel is allocated with IRM */ ++ for (oplug = 0; oplug < ompr.n_plugs; oplug++) ++ if (iec61883_get_oPCRX (handle, node, &opcr, oplug) == 0 ++ && opcr.online ++ && (opcr.n_p2p_connections > 0 || opcr.bcast_connection == 1) ++ && raw1394_channel_modify (handle, opcr.channel, RAW1394_MODIFY_ALLOC) < 0) ++ DEBUG ("Channel %d already allocated, or can't reach IRM", opcr.channel); + +- // Make sure the plug's channel is allocated with IRM +- quadlet_t buffer; +- nodeaddr_t addr = CSR_REGISTER_BASE; +- unsigned int c = opcr.channel; +- quadlet_t compare, swap = 0; +- quadlet_t new; +- +- if (c > 31 && c < 64) { +- addr += CSR_CHANNELS_AVAILABLE_LO; +- c -= 32; +- } else if (c < 64) +- addr += CSR_CHANNELS_AVAILABLE_HI; +- else +- FAIL ("Invalid channel"); +- c = 31 - c; +- +- result = iec61883_cooked_read (handle, raw1394_get_irm_id (handle), addr, +- sizeof (quadlet_t), &buffer); +- if (result < 0) +- FAIL ("Failed to get channels available."); +- +- buffer = ntohl (buffer); +- DEBUG ("channels available before: 0x%08x", buffer); +- +- if ((buffer & (1 << c)) != 0) { +- swap = htonl (buffer & ~(1 << c)); +- compare = htonl (buffer); +- +- result = raw1394_lock (handle, raw1394_get_irm_id (handle), addr, +- EXTCODE_COMPARE_SWAP, swap, compare, &new); +- if ( (result < 0) || (new != compare) ) { +- FAIL ("Failed to modify channel %d", opcr.channel); +- } +- DEBUG ("channels available after: 0x%08x", ntohl (swap)); +- } +- } +- } +- } +- +- return result; ++ return 0; + } + +-- +Stefan Richter +-=====-==--= ---= -==== +http://arcgraph.de/sr/ diff --git a/SPECS/libiec61883.spec b/SPECS/libiec61883.spec new file mode 100644 index 0000000..a2c0778 --- /dev/null +++ b/SPECS/libiec61883.spec @@ -0,0 +1,189 @@ +Summary: Streaming library for IEEE1394 +Name: libiec61883 +Version: 1.2.0 +Release: 18%{?dist} +License: LGPLv2+ +Group: System Environment/Libraries +Source: http://www.kernel.org/pub/linux/libs/ieee1394/%{name}-%{version}.tar.gz +# Fedora specific patches. + +Patch0: libiec61883-1.2.0-installtests.patch +Patch1: libiec61883-channel-allocation-without-local-node-rw.patch +URL: http://ieee1394.wiki.kernel.org/index.php/Libraries#libiec61883 +ExcludeArch: s390 s390x + +# Works only with newer libraw1394 versions +BuildRequires: libraw1394-devel + +%description +The libiec61883 library provides an higher level API for streaming DV, +MPEG-2 and audio over IEEE1394. Based on the libraw1394 isochronous +functionality, this library acts as a filter that accepts DV-frames, +MPEG-2 frames or audio samples from the application and breaks these +down to isochronous packets, which are transmitted using libraw1394. + +%package devel +Summary: Development files for libiec61883 +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description devel +Development files needed to build applications against libiec61883 + +%package utils +Summary: Utilities for use with libiec61883 +Group: Applications/Multimedia +Requires: %{name} = %{version}-%{release} + +%description utils +Utilities that make use of iec61883 + +%prep +%setup -q +%patch0 -p1 +%patch1 -p1 + +%build +%configure --disable-static +sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool +sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool +make %{?_smp_mflags} + +%install +make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" + +find $RPM_BUILD_ROOT -name '*.la' -exec rm -f {} ';' + +%post -p /sbin/ldconfig + +%postun -p /sbin/ldconfig + +%files +%defattr(-,root,root,-) +%doc AUTHORS COPYING NEWS README +%{_libdir}/libiec61883.so.* + +%files devel +%defattr(-,root,root,-) +%{_libdir}/libiec61883.so +%dir %{_includedir}/libiec61883 +%{_includedir}/libiec61883/*.h +%{_libdir}/pkgconfig/libiec61883.pc + +%files utils +%defattr(-,root,root,-) +%{_bindir}/* +%{_mandir}/man1/*.1* + +%changelog +* Wed Feb 07 2018 Fedora Release Engineering - 1.2.0-18 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 1.2.0-17 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Wed Jul 26 2017 Fedora Release Engineering - 1.2.0-16 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Fri Feb 10 2017 Fedora Release Engineering - 1.2.0-15 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Thu Feb 04 2016 Fedora Release Engineering - 1.2.0-14 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Wed Jun 17 2015 Fedora Release Engineering - 1.2.0-13 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Sun Aug 17 2014 Fedora Release Engineering - 1.2.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Sat Jun 07 2014 Fedora Release Engineering - 1.2.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Sat Aug 03 2013 Fedora Release Engineering - 1.2.0-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Thu Feb 14 2013 Fedora Release Engineering - 1.2.0-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Thu Jul 19 2012 Fedora Release Engineering - 1.2.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Fri Jan 13 2012 Fedora Release Engineering - 1.2.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Tue Feb 08 2011 Fedora Release Engineering - 1.2.0-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Fri Sep 24 2010 Parag Nemade 1.2.0-5 +- Merge-review cleanup (#226030) + +* Fri Jan 8 2010 Jay Fenlason 1.2.0-4 +- Update the Source and URL fields to point to correct locations. + +* Fri Jul 24 2009 Fedora Release Engineering - 1.2.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild + +* Wed Feb 25 2009 Fedora Release Engineering - 1.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_11_Mass_Rebuild + +* Thu Jan 15 2009 Jarod Wilson 1.2.0-1 +- Update to libiec61883 v1.2.0 release +- Rework installtests patch to not require autoreconf +- Make iso channel allocation work w/o local fw node r/w + +* Tue Jul 22 2008 Jarod Wilson 1.1.0-5 +- Bump and rebuild for libraw1394 v2.0.0 + +* Thu Feb 14 2008 Jarod Wilson 1.1.0-4 +- Bump and rebuild with gcc 4.3 + +* Wed Dec 19 2007 Jarod Wilson 1.1.0-3 +- Fix license and group tags (#411201) +- Clean up spacing and macro/var inconsistency + +* Mon Mar 26 2007 Jarod Wilson 1.1.0-2 +- Own created directories (#233865) + +* Wed Oct 25 2006 Jarod Wilson 1.1.0-1 +- Update to 1.1.0 release + +* Wed Oct 11 2006 Jarod Wilson 1.0.0-11 +- Use %%dist tag + +* Wed Jul 12 2006 Jesse Keating 1.0.0-10.fc5.2.1 +- rebuild + +* Fri Feb 10 2006 Jesse Keating 1.0.0-10.fc5.2 +- bump again for double-long bug on ppc(64) + +* Tue Feb 07 2006 Jesse Keating 1.0.0-10.fc5.1 +- rebuilt for new gcc4.1 snapshot and glibc changes + +* Fri Dec 30 2005 Jarod Wilson 1.0.0-10 +- Add missing autoconf, automake and libtool + BuildRequires + +* Fri Dec 09 2005 Jesse Keating +- rebuilt + +* Fri Nov 11 2005 Warren Togami 1.0.0-9 +- incorporate some spec improvements from Matthias (#172105) + +* Mon Sep 19 2005 Warren Togami 1.0.0-8 +- split -devel for pkgconfig chain +- remove .a and .la +- exclude s390 and s390x + +* Tue Apr 5 2005 Axel Thimm +- Fixes for building properly on x86_64. + +* Mon Mar 28 2005 Jarod Wilson +- Fixed utils so they build properly + +* Sat Feb 26 2005 Jarod Wilson +- Rolled in utils + +* Wed Feb 23 2005 Jarod Wilson +- Initial build +