^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) .. c:namespace:: DTV.dmx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) .. _dmx_fopen:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7) Digital TV demux open()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) Name
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) ----
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Digital TV demux open()
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) Synopsis
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) --------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) .. c:function:: int open(const char *deviceName, int flags)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) Arguments
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) ---------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) ``name``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) Name of specific Digital TV demux device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) ``flags``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) A bit-wise OR of the following flags:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) .. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) .. flat-table::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) :widths: 1 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) - ``O_RDONLY``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) - read-only access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) - ``O_RDWR``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) - read/write access
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) -
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) - ``O_NONBLOCK``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46) - open in non-blocking mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) (blocking mode is the default)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) Description
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50) -----------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52) This system call, used with a device name of ``/dev/dvb/adapter?/demux?``,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) allocates a new filter and returns a handle which can be used for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) subsequent control of that filter. This call has to be made for each
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) filter to be used, i.e. every returned file descriptor is a reference to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56) a single filter. ``/dev/dvb/adapter?/dvr?`` is a logical device to be used
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) for retrieving Transport Streams for digital video recording. When
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58) reading from this device a transport stream containing the packets from
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) all PES filters set in the corresponding demux device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60) (``/dev/dvb/adapter?/demux?``) having the output set to ``DMX_OUT_TS_TAP``.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) A recorded Transport Stream is replayed by writing to this device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) The significance of blocking or non-blocking mode is described in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) documentation for functions where there is a difference. It does not
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65) affect the semantics of the ``open()`` call itself. A device opened
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) in blocking mode can later be put into non-blocking mode (and vice versa)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67) using the ``F_SETFL`` command of the fcntl system call.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) Return Value
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) On success 0 is returned.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) On error -1 is returned, and the ``errno`` variable is set
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) appropriately.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) .. tabularcolumns:: |p{2.5cm}|p{15.0cm}|
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79) .. flat-table::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) :header-rows: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) :stub-columns: 0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) :widths: 1 16
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) - - ``EMFILE``
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) - “Too many open files”, i.e. no more filters available.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) The generic error codes are described at the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) :ref:`Generic Error Codes <gen-errors>` chapter.