On 07-01-2012 10:19, Mauro Carvalho Chehab wrote: > As previously commented at the ML, I'm developing a set of tools > using DVBv5 API. Instead of starting from something existing, > I decided to start from scratch, in order to avoid polluting it > with DVBv3 legacy stuff. Of course, I did some research inside > the existing tools, in order to fill in the blanks, using the > dvb-apps tzap as a reference for the first real application on it, > but removing a large amount of code (file parsers, etc). > > They're now on a good shape, at least for my own usage ;) > > In order to test, you should use: > > git clone git://linuxtv.org/mchehab/experimental-v4l-utils.git > > And then run "make". the utils are inside utils/dvb. > > I plan to do some cleanup at the patches later (basically, changing > the patch descriptions), and add it inside the v4l-utils, in order > to have the basic tools I use for testing media devices into the > same place. > > DVB TOOLS > ========= > > This is a series of tools written to help testing and working with DVB, > using its latest V5 API. The tools can also work with the DVBv3 API. > > The current tools are: > > dvb-fe-tool - a simple test application, that reads from the frontend. > it also allows to change the default delivery system. > In the future, it may be used to change any property > via command line. > > dvb-format-convert - converts from zap and scan "initial-tuning-data-file" > into the new format defined to work with DVBv5; > > dvbv5-scan - a DVBv5 scan tool; > > dvbv5-zap - a DVBv5 zap tool. It allow to tune into a DVB channel, and > to watch to a DVB service (e. g. receiving the video and audio > streams, via another application using the dvr device). > > Each application code is very small, as most of the code are on some > generic code that will become a library in the future. > > CONTENTS OF THE TREE > ==================== > > parse_string.c/parse_string.h: MPEG-TS string decoder with charset translator > > Used to decode NIT/SDT service name, network provider and provider name. > It parses the charsets according with the DVB specs, converting them into > UTF-8 (or other charset), using iconv library. > > descriptors.c/descriptors.h: MPEG-TS descriptors parser > > The code there is generig enough to decode the MPEG-TS descriptors, > with the DVB and other Digital TV extensions. > > libscan.c/libscan/h: DVBv5 scanning library > > This library is used to retrieve DVB information from the MPEG TS > headers, discovering the services associated to each DVB channel or > transponder. The services information is the basic info that most > DVB tools need to tune into a channel. > > dvb-file.c/dvb-file.h: DVB file read/write library. > > Allows parsing a DVB file (legacy or not) and to write data into a > DVB file (new format only). > > dvb-fe.c/dvb-fe.h: DVB frontend library. > > Allows talking with a DVB frontend via DVBv5 or DVBv3 API. > > dvb-zap-format.c/dvb-legacy-channel-format.c: > > Contains the data structures required in order to read from the legacy > formats (zap or scan "initial-tuning-data-file"). > > dvb_frontend.h: DVBv5 frontend API. > > This is just a copy of the newest linux/dvb/frontend.h header. > I opted to keep a copy there, in order to allow working with the tools > without needing to copy the latest header into /usr/include. > > dvb-v5.h/dvb-v5-std.h: > > Ancillary files linked into dvb-fe code, used to parse DVB tables. The > dvbv5.h is generated by a small perl util, from the DVB FE API file. > > dvb-demux.c/dvb-demux.h: DVB demux library. > > Used by the dvbv5-zap utility. > > dvb-fe-tool.c, dvb-format-convert.c, dvbv5-zap.c, dvbv5-scan.c: tools code. > > Basically, parses the options from userspace and calls the other code > to do what was requested by the user. > > CHANNEL/SERVICE FILE FORMAT > =========================== > > Instead of having two different files, one for services, and another for > channels/transponders, I opted to use just one format for both. The > format is: > > [channel] > key1=value1 > key2=value2 > key3=value3 > ... > keyn=valuen > > > lines with # are discarted by the parsers. Also, whitespaces/tabs before > the keys and before/after the equal sign. > > Be careful: whitespace in the middle of the value are not discarded. > > A typical service would be like: > > [TV Brasil HD] > VCHANNEL = 2.2 > SERVICE_ID = 16160 > VIDEO_PID = 770 > AUDIO_PID = 514 614 > FREQUENCY = 479142857 > MODULATION = QAM/AUTO > BANDWIDTH_HZ = 6000000 > INVERSION = AUTO > CODE_RATE_HP = AUTO > CODE_RATE_LP = NONE > GUARD_INTERVAL = AUTO > TRANSMISSION_MODE = AUTO > HIERARCHY = NONE > ISDBT_LAYER_ENABLED = 7 > ISDBT_PARTIAL_RECEPTION = 0 > ISDBT_SOUND_BROADCASTING = 0 > ISDBT_SB_SUBCHANNEL_ID = 0 > ISDBT_SB_SEGMENT_IDX = 0 > ISDBT_SB_SEGMENT_COUNT = 0 > ISDBT_LAYERA_FEC = AUTO > ISDBT_LAYERA_MODULATION = QAM/AUTO > ISDBT_LAYERA_SEGMENT_COUNT = 0 > ISDBT_LAYERA_TIME_INTERLEAVING = 0 > ISDBT_LAYERB_FEC = AUTO > ISDBT_LAYERB_MODULATION = QAM/AUTO > ISDBT_LAYERB_SEGMENT_COUNT = 0 > ISDBT_LAYERB_TIME_INTERLEAVING = 0 > ISDBT_LAYERC_FEC = AUTO > ISDBT_LAYERC_MODULATION = QAM/AUTO > ISDBT_LAYERC_SEGMENT_COUNT = 0 > ISDBT_LAYERC_TIME_INTERLEAVING = 0 > DELIVERY_SYSTEM = ISDBT > > Just the channel description for it would be: > > [CHANNEL] > FREQUENCY = 479142857 > MODULATION = QAM/AUTO > BANDWIDTH_HZ = 6000000 > INVERSION = AUTO > CODE_RATE_HP = AUTO > CODE_RATE_LP = NONE > GUARD_INTERVAL = AUTO > TRANSMISSION_MODE = AUTO > HIERARCHY = NONE > ISDBT_LAYER_ENABLED = 7 > ISDBT_PARTIAL_RECEPTION = 0 > ISDBT_SOUND_BROADCASTING = 0 > ISDBT_SB_SUBCHANNEL_ID = 0 > ISDBT_SB_SEGMENT_IDX = 0 > ISDBT_SB_SEGMENT_COUNT = 0 > ISDBT_LAYERA_FEC = AUTO > ISDBT_LAYERA_MODULATION = QAM/AUTO > ISDBT_LAYERA_SEGMENT_COUNT = 0 > ISDBT_LAYERA_TIME_INTERLEAVING = 0 > ISDBT_LAYERB_FEC = AUTO > ISDBT_LAYERB_MODULATION = QAM/AUTO > ISDBT_LAYERB_SEGMENT_COUNT = 0 > ISDBT_LAYERB_TIME_INTERLEAVING = 0 > ISDBT_LAYERC_FEC = AUTO > ISDBT_LAYERC_MODULATION = QAM/AUTO > ISDBT_LAYERC_SEGMENT_COUNT = 0 > ISDBT_LAYERC_TIME_INTERLEAVING = 0 > DELIVERY_SYSTEM = ISDBT > > CURRENT ISSUES > ============== > > The dvb-fe-tool and the dvb-format-convert are generic enough to work > with all delivery systems. However, the other two tools need to do > some diferent things, depending on the delivery system. > > I'm currently with only ISDB-T signals here, so the other two > tools were tested only with it. > > The dvbv5-zap in general won't work with Satellite delivery > systems. It lacks polarity settings, and it doesn't know anything > about LNB or DISEqC. It shouldn't hard to port those things into it, > but a DVB-S signal is needed to test. As I don't have it curently, > I'm not working to add support for it at the moment. > > Patches are welcome. I decided to add support for DVB-S, even without signal for testing. This probably means that it likely will not work ;) Well, seriously, we need testers for it. The current code should be doing the same that szap does, and should work with both dvbv5-zap and dvbv5-scan. The DISEqC code there is very simple, and there's no support for dishpro/bandstacking yet. It is probably not hard to add support for it. There are still a few things missing there. For example, the current code will only use DISEqC satellite #0, as there's no code to change the satellite number yet. Anyway, testing and patches are welcome! Regards, Mauro -- 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