Hi (Mauro),
below you will find my recommended patch for the broken
VDR format (libdvbv5/dvb-vdr-format.c).
There is only one point I have a doubt: I have no ATSC
experience (I'am in Europe/germ), so I simply added
an "A" at the field "satellite pos.". This is what
the w_scan tool does and this tool works fine with
the vdr (please correct me if I'am wrong).
My test-case was the same as mentioned in the first
mail (see below). Which means, I haven't tested with
vdr, only with mpv.
Is there anyone how can take up this patch?
... may be Mauro, the originator of vdr support?
With best regards
-- M --
diff --git a/lib/libdvbv5/dvb-vdr-format.c b/lib/libdvbv5/dvb-vdr-format.c
index 176a927..5151ebc 100644
--- a/lib/libdvbv5/dvb-vdr-format.c
+++ b/lib/libdvbv5/dvb-vdr-format.c
@@ -310,13 +310,14 @@ int dvb_write_format_vdr(const char *fname,
fprintf(fp, "%s", entry->channel);
if (entry->vchannel)
fprintf(fp, ",%s", entry->vchannel);
+ fprintf(fp, ":");
/*
* Output frequency:
* in kHz for terrestrial/cable
* in MHz for satellite
*/
- fprintf(fp, ":%i:", freq / 1000);
+ fprintf(fp, "%i:", freq / 1000);
/* Output modulation parameters */
fmt = [i];
@@ -350,20 +351,28 @@ int dvb_write_format_vdr(const char *fname,
fprintf(fp, "%s", table->table[data]);
}
-
- /* Output format type */
- fprintf(fp, ":%s:", id);
+ fprintf(fp, ":");
/*
-* Output satellite location
-* FIXME: probably require some adjustments to match the
-*format expected by VDR.
+* Output sources configuration for VDR
+*
+* S (satellite) xy.z (orbital position in degrees) E or W
(east or west)
+ *
+ * FIXME: in case of ATSC we use "A", this is what w_scan
does
*/
- switch(delsys) {
- case SYS_DVBS:
- case SYS_DVBS2:
- fprintf(fp, "%s:", entry->location);
+
+ if (entry->location) {
+ switch(delsys) {
+ case SYS_DVBS:
+ case SYS_DVBS2:
+ fprintf(fp, "%s", entry->location); break;
+ default:
+ fprintf(fp, "%s", id);break;
+ }
+ } else {
+ fprintf(fp, "%s", id);
}
+ fprintf(fp, ":");
/* Output symbol rate */
srate = 2750;
@@ -408,10 +417,16 @@ int dvb_write_format_vdr(const char *fname,
/* Output Service ID */
fprintf(fp, "%d:", entry->service_id);
- /* Output SID, NID, TID and RID */
- fprintf(fp, "0:0:0:");
+ /* Output Network ID */
+ fprintf(fp, "0:");
+
+ /* Output Transport Stream ID */
+ fprintf(fp, "0:");
- fprintf(fp, "\n");
+ /* Output Radio ID
+ this is the last entry, tagged bei a new line (not a colon!)
+*/
+ fprintf(fp, "0\n");
line++;
};
fclose (fp);
-- M --
--
Mit freundlichem Gruss
-- M.Heiser --
-
darmarIT // IT solutions & services
-
Darius Biss & Markus Heiser GbR
Wattenscheider Weg 2
28199 Bremen
phone : +49 (0) 4792 987 946 9
fax: +49 (0) 421 433 498 7
mobil : +49 (0) 157 316 4
e-mail : markus.hei...@darmarit.de
web: http://www.darmarIT.de
-
Am 09.03.2016 um 16:43 schrieb Markus Heiser :
> Hi,
>
> I tested DVBv5 tools, creating vdr channel lists. My first attemp
> was to convert a dvbv5 channel list:
>
> -
> # file: test_convert_in.conf
> #
> # converted with: dvb-format-convert -I DVBV5 -O VDR test_convert_in.conf
> test_convert_out.conf
> #
> [Das Erste HD]
> SERVICE_ID = 10301
> VIDEO_PID = 5101
> AUDIO_PID = 5102 5103 5106 5108
> PID_0b = 5172 2171
> PID_06 = 5105 5104
> PID_05 = 1170
> LNB = UNIVERSAL
> FREQUENCY = 11494000
> INVERSION = OFF
> SYMBOL_RATE = 22000488
> INNER_FEC = 2/3
> MODULATION = PSK/8
> PILOT = ON
> ROLLOFF = 35
> POLARIZATION = HORIZONTAL
> STREAM_ID = 0
> DELIVERY_SYSTEM = DVBS2
> -
>
>
> this results in a strange VDR channel (test_convert_out.conf):
>
>