Re: RFC: adding ISDB-T/ISDB-Tsb to DVB-API 5

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Aug 3, 2009 at 1:53 PM, Patrick
Boettcher<patrick.boettcher@xxxxxxx> wrote:
> Hi all,
>
> I'd like to request some comments about the extension of the DVB-API 5 to
> support ISDB-T and ISDB-Tsb. Some stubs in frontend.h and friends have been
> there since the beginning and now it's time to have real user-space support
> for that standard.
>
> I hope that we can finish the discussion of this RFC before the merge window
> of 2.6.32, so that it can be included then.
>
> The current version of the patches can be found here:
>
> http://linuxtv.org/hg/~pb/v4l-dvb/rev/eabb8cfcf32a
>
> Changelog:
> This patch increments the DVB-API to version 5.1 in order to reflect the
> addition of ISDB-T and ISDB-Tsb on Linux' DVB-API.
>
> Changes in detail:
> - added a small document to describe how to use the API to tune to an ISDB-T
> or ISDB-Tsb channel
> - added necessary fields to dtv_frontend_cache
> - added a smarter clear-cache function which resets all fields of the
> dtv_frontend_cache
> - added a TRANSMISSION_MODE_4K to fe_transmit_mode_t
>
> I also added a document trying to descibe in short all the needed parameters
> (DTV_CMDs) for ISDB-T(sb) and how to use them. I'm inlining this document,
> as it is the base for the RFC as well:
>
> (Disclaimer: ISDB-T and ISDB-Tsb is relative complex from the parameters
> point of view compared to DVB-T and for me the standard-document was not
> making things very easy for me as a software-writer. Please don't blame me
> for so many additions)
>
> -----------------
> This document describes shortly what are the possible parameters in
> the Linux DVB-API called "S2API" in order to tune an ISDB-T/ISDB-Tsb
> demodulator:
>
> This ISDB-T/ISDB-Tsb API extension should reflect all information
> needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
> that some very sophisticated devices won't need certain parameters to
> tune.
>
> The information given here should help application writers to know how
> to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.
>
> The details given here about ISDB-T and ISDB-Tsb are just enough to
> basically
> show the dependencies between the needed parameter values, but surely some
> information is left out. For more detailed information see the standard
> document:
> ARIB STD-B31 - "Transmission System for Digital Terrestrial Television
> Broadcasting".
>
> In order to read this document one has to know about the channel
> structure in ISDB-T and ISDB-Tsb. I.e. it has to be known to the
> reader that an ISDB-T channel consists of 13 segments, that it can
> have up to 3 layer sharing those segments, and so on.
>
> Parameters used by ISDB-T and ISDB-Tsb.
>
> Existing parameters
> ===================
>
> a) DTV_BANDCOUNT_HZ
>
> Help the front-end, for example, to set up base-band-filters.
>
> Possible values:
>
> For ISDB-T it should be always 6000000Hz (6MHz)
> For ISDB-Tsb it can vary depending on the number of connected segments
>
> b) DTV_DELIVERY_SYSTEM
>
> Possible values: SYS_ISDBT
>
> c) DTV_TRANSMISSION_MODE
>
> ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
> 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K
>
> Possible values: TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K,
>         TRANSMISSION_MODE_AUTO, TRANSMISSION_MODE_4K
>
> If DTV_TRANSMISSION_MODE is set the TRANSMISSION_MODE_AUTO the
> hardware will try to find the correct FFT-size (if capable) and use
> the TMCC to fill in the missing parameters.
>
> TRANSMISSION_MODE_4K is added at the same time as the other new parameters.
>
> d) DTV_GUARD_INTERVAL
>
> Possible values: GUARD_INTERVAL_1_32, GUARD_INTERVAL_1_16,
> GUARD_INTERVAL_1_8,
>         GUARD_INTERVAL_1_4, GUARD_INTERVAL_AUTO
>
> If DTV_GUARD_INTERVAL is set the GUARD_INTERVAL_AUTO the hardware will
> try to find the correct guard interval (if capable) and use the TMCC to fill
> in the missing parameters.
>
> New parameters
> ==============
>
> 1. DTV_ISDBT_PARTIAL_RECEPTION (1b)
>
> If DTV_ISDBT_SOUND_BROADCASTING is '0' this bit-field represents whether
> the channel is in partial reception mode or not.
>
> If '1' DTV_ISDBT_LAYERA_* values are assigned to the center segment and
> DTV_ISDBT_LAYERA_SEGMENT_COUNT has to be '1'.
>
> If in addition DTV_ISDBT_SOUND_BROADCASTING is '1'
> DTV_ISDBT_PARTIAL_RECEPTION represents whether this ISDB-Tsb channel
> is consisting of one segment and layer or three segments and two layers.
>
> Possible values: 0, 1, -1 (AUTO)
>
> 2. DTV_ISDBT_SOUND_BROADCASTING (1b)
>
> This field represents whether the other DTV_ISDBT_*-parameters are
> referring to an ISDB-T and an ISDB-Tsb channel. (See also
> DTV_ISDBT_PARTIAL_RECEPTION).
>
> Possible values: 0, 1, -1 (AUTO)
>
> 3. DTV_ISDBT_SB_SUBCHANNEL_ID
>
> This field only applies if DTV_ISDBT_SOUND_BROADCASTING is '1'.
>
> (Note of the author: This might not be the correct description of the
>  SUBCHANNEL-ID in all details, but it is my understanding of the technical
>  background needed to program a device)
>
> An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
> set of connected ISDB-Tsb channels. In this set of channels every
> channel can be received independently. The number of connected
> ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
> bandwidth available.
>
> Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
> broadcaster has several possibilities to put those channels in the
> air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
> segments from position 1-8 to 5-13 or anything in between.
>
> The underlying layer of segments are subchannels: each segment is
> consisting of several subchannels with a predefined IDs. A sub-channel
> is used to help the demodulator to synchronize on the channel.
>
> An ISDB-T channel is always centered over all sub-channels. As for
> the example above, in ISDB-Tsb it is no longer as simple as that.
>
> The DTV_ISDBT_SB_SUBCHANNEL_ID parameter is used to give the
> sub-channel ID of the segment to be demodulated.
>
> Possible values: 0 .. 41, -1 (AUTO)
>
> 4. DTV_ISDBT_SB_SEGMENT_IDX
>
> This field only applies if DTV_ISDBT_SOUND_BROADCASTING is '1'.
>
> DTV_ISDBT_SB_SEGMENT_IDX gives the index of the segment to be
> demodulated for an ISDB-Tsb channel where several of them are
> transmitted in the connected manner.
>
> Possible values: 0 .. DTV_ISDBT_SB_SEGMENT_COUNT-1
>
> Note: This value cannot be determined by an automatic channel search.
>
> 5. DTV_ISDBT_SB_SEGMENT_COUNT
>
> This field only applies if DTV_ISDBT_SOUND_BROADCASTING is '1'.
>
> DTV_ISDBT_SB_SEGMENT_COUNT gives the total count of connected ISDB-Tsb
> channels.
>
> Possible values: 1 .. 13
>
> Note: This value cannot be determined by an automatic channel search.
>
> 6. Hierarchical layers
>
> ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
> ISDB-T hierarchical layers can be decoded simultaneously. For that
> reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.
>
> ISDB-T has 3 hierarchical layers which each can use a part of the
> available segments. The total number of segments over all layers has
> to 13 in ISDB-T.
>
> 6.1 DTV_ISDBT_LAYER_ENABLED (3b)
>
> Hierarchical reception in ISDB-T is achieved by enabling or disabling
> layers in the decoding process. Setting all bits of
> DTV_ISDBT_LAYER_ENABLED to '1' forces all layers (if applicable) to be
> demodulated. This is the default.
>
> If the channel is in the partial reception mode
> (DTV_ISDBT_PARTIAL_RECEPTION=1) the central segment can be decoded
> independently of the other 12 segments. In that mode layer A has to
> have a SEGMENT_COUNT of 1.
>
> In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
> according to DTV_ISDBT_PARTIAL_RECEPTION. SEGMENT_COUNT must be filled
> accordingly.
>
> Possible values: 0x1, 0x2, 0x4 (|-able)
>
> DTV_ISDBT_LAYER_ENABLED[0:0] - layer A
> DTV_ISDBT_LAYER_ENABLED[1:1] - layer B
> DTV_ISDBT_LAYER_ENABLED[2:2] - layer C
> DTV_ISDBT_LAYER_ENABLED[31:3] unused
>
> 6.2 DTV_ISDBT_LAYER*_FEC
>
> Possible values: FEC_AUTO, FEC_1_2, FEC_2_3, FEC_3_4, FEC_5_6, FEC_7_8,
>
> 6.3 DTV_ISDBT_LAYER*_MODULATION
>
> Possible values: QAM_AUTO, DQPSK, QAM_16, QAM_64, DQPSK
>
> Note: If layer C is DQPSK layer B has to be DQPSK. If layer B is DQPSK
> and DTV_ISDBT_PARTIAL_RECEPTION=0 layer has to be DQPSK.
>
> 6.4 DTV_ISDBT_LAYER*_SEGMENT_COUNT
>
> Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)
>
> Note: Truth table for DTV_ISDBT_SOUND_BROADCASTING and
> DTV_ISDBT_PARTIAL_RECEPTION and LAYER*_SEGMENT_COUNT
>
>  PR | SB || layer A width | layer B width | layer C width | total
> ----+----++---------------+---------------+---------------+-------
>  0 |  0 || 1 .. 13       | 1 .. 13       | 1..13         | 13
>  1 |  0 || 1             | 1 .. 13       | 1..13         | 13
>  0 |  1 || 1             | 0             | 0             | 1
>  1 |  1 || 1             | 2             | 0             | 3
>
>
> 6.5 DTV_ISDBT_LAYER*_TIME_INTERLEAVING
>
> Possible values: 0, 1, 2, 3, -1 (AUTO)
>
> Note: The real inter-leaver depth-names depend on the mode (fft-size); the
> values
> here are referring to what can be found in the TMCC-structure -
> independent of the mode.
>
> -----------------
>
>
> thanks for the feedback in advance,
> Patrick.

Patrick,

It's extremely exciting to finally see this surfacing to the mailing
lists -- It will be a great addition to linux-dvb to have support for
the ISDB digital standards.

One thing that I see missing right now is userspace utilities.  Do you
have any plans to add ISDB scanning support to dvb-apps, and tuning
support to the *zap utility?  This would be the best way to get the
application developers started on incorporating ISDB support into the
apps shipping today.

Regards,

Mike
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]
  Powered by Linux