Polish EPG problems

Message ID 5071D11C.8080101@skyboo.net
State New
Headers

Commit Message

Mariusz Bialonczyk Oct. 7, 2012, 6:59 p.m. UTC
  Hi,
I've been using vdr for very long time (since 1.2.1 afair), but the
polish epg problem is unfortunately still here in recent versions.
I made a deep analysis of the problem and here are the details.
Polish broadcasters are ignorants regarding dvb standards!
It's very sad but it's true :(
Of course e-mails to them about it doesn't give an any effect...
There are two kind of problems with polish providers on HotBird 13E:
First problem is that similar to one handled by CharsetOverride:
Part of the channels are encoded in ISO-8859-2 while not announce that,
this can be handled with VDR_CHARSET_OVERRIDE correctly.
The other part cannot be currently handled correctly in vdr without patching:
Some channels are using ISO6937 while announcing ISO-8859-5! (sic!)

There are also providers which are respecting standards,
but the above bad cases are for two main polish digital platforms,
so it would be great if vdr finally would handle it correctly.

I have two propositions to solve the problem:
1. check if VDR_CHARSET_OVERRIDE is set to ISO-8859-2 and based on
this information, force apply following change:
2. add additional VDR_CHARSET_OVERRIDE option, eg:
VDR_CHARSET_OVERRIDE=PL
this could also return cs6937 when ISO8859-5 is defined (like above).

Please tell me what you think about it.

ps. by the way i want to thank you for your work
and piece of a good software! :)

regards,
  

Comments

Matti Lehtimäki Oct. 7, 2012, 7:16 p.m. UTC | #1
On 10/07/2012 09:59 PM, Mariusz Bialonczyk wrote:
> Hi,
> I've been using vdr for very long time (since 1.2.1 afair), but the
> polish epg problem is unfortunately still here in recent versions.
> I made a deep analysis of the problem and here are the details.
> Polish broadcasters are ignorants regarding dvb standards!
> It's very sad but it's true :(
> Of course e-mails to them about it doesn't give an any effect...
> There are two kind of problems with polish providers on HotBird 13E:
> First problem is that similar to one handled by CharsetOverride:
> Part of the channels are encoded in ISO-8859-2 while not announce that,
> this can be handled with VDR_CHARSET_OVERRIDE correctly.
> The other part cannot be currently handled correctly in vdr without patching:
> Some channels are using ISO6937 while announcing ISO-8859-5! (sic!)
>
> There are also providers which are respecting standards,
> but the above bad cases are for two main polish digital platforms,
> so it would be great if vdr finally would handle it correctly.

The EPGFixer-plugin has the capability to fix character set problem you 
have described. It can be found at 
http://projects.vdr-developer.org/projects/plg-epgfixer.
  
Mariusz Bialonczyk Oct. 7, 2012, 7:30 p.m. UTC | #2
On 10/07/2012 09:16 PM, Matti Lehtimäki wrote:
> The EPGFixer-plugin has the capability to fix character set problem you have described. It can be found at http://projects.vdr-developer.org/projects/plg-epgfixer.
Thank you for this tip, but I am rather interested to fix the problem in the mainline.
  
Klaus Schmidinger Oct. 8, 2012, 9:12 a.m. UTC | #3
On 07.10.2012 20:59, Mariusz Bialonczyk wrote:
> Hi,
> I've been using vdr for very long time (since 1.2.1 afair), but the
> polish epg problem is unfortunately still here in recent versions.
> I made a deep analysis of the problem and here are the details.
> Polish broadcasters are ignorants regarding dvb standards!
> It's very sad but it's true :(
> Of course e-mails to them about it doesn't give an any effect...
> There are two kind of problems with polish providers on HotBird 13E:
> First problem is that similar to one handled by CharsetOverride:
> Part of the channels are encoded in ISO-8859-2 while not announce that,
> this can be handled with VDR_CHARSET_OVERRIDE correctly.
> The other part cannot be currently handled correctly in vdr without patching:
> Some channels are using ISO6937 while announcing ISO-8859-5! (sic!)
>
> There are also providers which are respecting standards,
> but the above bad cases are for two main polish digital platforms,
> so it would be great if vdr finally would handle it correctly.
>
> I have two propositions to solve the problem:
> 1. check if VDR_CHARSET_OVERRIDE is set to ISO-8859-2 and based on
> this information, force apply following change:
> diff --git a/libsi/si.c b/libsi/si.c
> index 80d34d1..bc34bd7 100644
> --- a/libsi/si.c
> +++ b/libsi/si.c
> @@ -373,6 +373,8 @@ const char *getCharacterTable(const unsigned char *&buffer, int &length, bool *i
>         length -= 1;
>         if (isSingleByte)
>            *isSingleByte = tag <= SingleByteLimit;
> +      if (tag == 0x01 /* ISO8859-5 */)
> +         return cs6937;
>         return CharacterTables1[tag];
>      }
>      return cs;
> 2. add additional VDR_CHARSET_OVERRIDE option, eg:
> VDR_CHARSET_OVERRIDE=PL
> this could also return cs6937 when ISO8859-5 is defined (like above).
>
> Please tell me what you think about it.

Well, it's one thing to assume a certain character set if the broadcaster
omits the tag byte. But it's a whole different story to ignore a tag byte
that is actually present.

I suggest you use the EPGFixer-plugin as suggested by Matti Lehtimäki in
his reply to your post.

Klaus
  

Patch

diff --git a/libsi/si.c b/libsi/si.c
index 80d34d1..bc34bd7 100644
--- a/libsi/si.c
+++ b/libsi/si.c
@@ -373,6 +373,8 @@  const char *getCharacterTable(const unsigned char *&buffer, int &length, bool *i
       length -= 1;
       if (isSingleByte)
          *isSingleByte = tag <= SingleByteLimit;
+      if (tag == 0x01 /* ISO8859-5 */)
+         return cs6937;
       return CharacterTables1[tag];
    }
    return cs;