summaryrefslogtreecommitdiffstats
path: root/libraw1394.rst
blob: c9dd5583cbf26b538eaa1e5ea0d72aef4d3198e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
==========
libraw1394
==========

2023/02/18 Takashi Sakamoto

.. contents:: Contents
   :depth: 2
   :local:
   :backlinks: top

Description
===========

This library provides the series of low level API for interaction with kernel implementation to
operate resources in IEEE 1394. Since version 2, The library includes abstraction layer for
previous and current generation of kernel implementation.

Current Status
==============

* Inactive development
* Just maintained

Reference manual
================

* Not available yet.

Release notes
=============

2.1.2 (3 April 2016)
--------------------

  * Fix build with some alternative C libraries and with some older build environments. No
    functional changes.

2.1.1 (28 April 2015)
---------------------

  * Fix backwards moving cycle timer in isochronous transmit. The problem has been observed with
    audio I/O on different systems.
  * Fix crash with SIGBUS on SPARC and similar architectures.
  * Fix memory leak in address range mapping response handler.
  * Fix errno reporting to applications which relied on behavior of libraw1394 1.x.
  * Fix errno checking in the dumpiso and sendiso example programs.
  * Minor documentation improvement.

2.1.0 (29 July 2012)
--------------------

  * Behavior changes of the backend to firewire-core:

    * The isochronous reception buffer is now mapped read/writable rather than read-only.  The
      raw1394 backend already maps the buffer read/writable too.  Note that writing into the buffer
      will go wrong on architectures without cache-coherent DMA if the CPU and the OHCI write
      within the same cacheline region, so use this feature with caution.
    * Decrease memory footprint of IR and IT buffers by avoiding some internal rounding up of the
      buffer size.

  * New APIs in ``<libraw1394/raw1394.h>``

    * ``raw1394_add_config_rom_descriptor()``

      * Add contents to the Configuration ROM of the local node(s).  At runtime, this API is only
        available if running on top of  ``firewire-core``.  It could probably also be implemented
        with the raw1394 kernel driver if anybody cared.

    * ``raw1394_remove_config_rom_descriptor()``

      * Counterpart to ``raw1394_add_config_rom_descriptor()``

    * ``raw1394_read_cycle_timer_and_clock()``

      * Like the existing ``raw1394_read_cycle_timer()``, but lets the caller choose between
        ``CLOCK_REALTIME`` (which the former call is always using), ``CLOCK_MONOTONIC``, or
        ``CLOCK_MONOTONIC_RAW``. For example, this enables libffado's audio streaming to run
        undisturbed by resets of ``CLOCK_REALTIME``. At runtime, this call requires
        ``firewire-core`` underneath.

    * ``raw1394_get_speed()``

      * Returns the speed code of the maximum possible transmission speed between a given node and
        the local node. This takes maximum speeds of all participating PHYs and the two links into
        account. This can be used to configure the speed of isochronous streams. At runtime, this
        call requires firewire-core underneath.

    * ``enum raw1394_iso_speed`` was extended by ``RAW1394_ISO_SPEED_800``, ``_1600``, and
      ``_3200``.

  * New APIs in ``<libraw1394/ieee1394.h>``

    * Added preprocessor constants ``L1394_SPEED_BETA``, ``L1394_SPEED_800``, ``_1600``, and
      ``_3200``.

  * testlibraw1394

    * Added unit tests of the new APIs.

2.0.9 (2 June 2012)
-------------------

  * Fix that ``raw1394_iso_recv_flush()`` did not have any effect when running on
    ``firewire-core`` alias juju kernel drivers. This fix needs kernel 3.4 or later at runtime; on
    older kernels ``raw1394_iso_recv_flush()`` will remain uneffective on ``firewire-core`` as
    before.

  * Remove build-time dependency on linux-headers. Before, if too old kernel headers were present
    on the build system, features and fixes would be silently omitted from the build. Now all
    features and fixes are built in a fully forwards and backwards compatible manner.
  * Remove ``--with-fw-dir`` configure switch which is no longer useful.
  * Janitorial fixes.

2.0.8 (19 February 2012)
------------------------

  * Performance improvement:  Configuration ROM access via ``raw1394_read()`` is dramatically
    faster and very robust now. We read the kernel's Configuration ROM cache instead of the actual
    register of the FireWire device.
  * Interoperability fix:  Internally retry ``raw1394_read/write/lock/lock64()`` after ack-busy
    response. Most notably this fixes control of some older Panasonic-based camcorders, e.g.
    Panasonic NV-DX110, Panasonic AG-EZ30, and Grundig Scenos DLC 2000.
  * Small bug fixes.

2.0.7 (8 March 2011)
--------------------

  * Fixes playback to some audio devices based on the DICE chipset.

2.0.6 (1 November 2010)
-----------------------

  * This release brings again several fixes for using libraw1394 on top of the ``firewire-core``
    kernel driver (as opposed to ``raw1394`` which is going to be removed in kernel 2.6.37).
    Notably, request reception a.k.a. address range mapping was fixed to report proper sender node
    IDs and extended tcodes to the application.
  * Note, this and some of the other updates require linux-headers 2.6.36 or later to be present
    when ``libraw1394`` is being built.  Otherwise, the fixes will not be built into the library,
    and ``libraw1394`` will behave mostly like v2.0.5 did.  (Likewise, kernel 2.6.36 is required at
    runtime for some of these updates to be in effect.  You can run brand new ``libraw1394`` on
    older kernels and vice versa, but you would miss those fixes and features.)

2.0.5 (26 December 2009)
------------------------

  * Bug fixes, in particular for isochronous transmission and `FFADO <http://www.ffado.org/>`_.

2.0.4 (30 June 2009)
--------------------

  * Build fix for the tarball release.

2.0.3 (30 June 2009)
--------------------

  * Some bug fixes, notably:

    * Build fix (Gentoo `bug 272540 <https://bugs.gentoo.org/272540>`_)
    * Fix a memory leak when running on the new firewire stack

  * Functional enhancements for the new firewire stack (no ``libraw1394`` API change involved):

    * Enable channel and bandwidth management functions even if access to the IRM's ``/dev/fw*``
      is denied.
    * Provide accurate isoch packet reception timestamps.
    * Add as yet unimplemented juju versions of broadcast requests and async streams.

  * These changes are only available with kernel-headers 2.6.30 or later at build time and kernel
    2.6.30 or later at runtime.

2.0.2 (3 February 2009)
-----------------------

  * Fixed license headers on new files introduced in v2.0.0 to be consistent with LGPL v2.1. No
    code changes since version 2.0.1.

2.0.1 (15 January 2009)
-----------------------

  * Optimized usage of ``/dev/fw*`` nodes based upon user permissions.
  * many bugfixes

2.0.0 (18 July 2008)
--------------------

  * added support for the new firewire kernel subsystem. (kernel headers 2.6.22 or better yet
    2.6.24 should be installed to compile libraw1394 with this feature)
  * removed deprecated isochronous functions.

1.3.0 (13 October 2007)
-----------------------

  * added ``raw1394_read_cycle_timer()`` as used by FFADO project.
  * added support for environment variable ``RAW1394DEV`` to override default device node
    ``/dev/raw1394``.
  * added ``--with-valgrind`` to configure script.
  * other optimizations and bugfixes - see ChangeLog in the tarball.

1.2.1 (8 April 2006)
--------------------

  * This is a maintenance release that fixes a couple of bugs and contains a slight memory handling
    optimization for isochronous I/O.

1.2.0 (19 February 2005)
------------------------

  * One more preparation for the release of ``libiec61883`` was to reorganize a couple of functions
    from ``libiec61883`` into ``libraw1394`` for better code reuse with other projects. These
    functions provide simple means to allocate and release isochronous channels and bandwidth.

1.1.0 (29 November 2004)
------------------------

  * Yes, the version number difference to the previous version seems odd, but it is correct. The
    ``.so`` version numbers were bumped a major level with no backward compatibility as well due to
    an interface change in the new generation isochronous API. The change allows one to specify a
    capture mode, and it is required by the forthcoming ``libiec61883``, our third generation
    streaming media I/O library. This release also includes updated API reference documentation.
    All comments for function documentation were moved into the main header, ``raw1394.h`` for
    convenience to programmers that like to refer to headers. Finally, two functions were added for
    the ARM feature to allow getting and setting the kernel buffer.