Re: Is this a bug?(About multi-sections)

Jean-Paul Saman <[email protected]>
Newsgroups gmane.comp.video.videolan.libdvbpsi.devel
Message-ID <CAK9US3AYdu0Z65od7BfPGhr7oj8xOzGcT8QOx4q7NgQXVvh_nQ@mail.gmail.com>
HI,



On Wed, Dec 5, 2012 at 8:45 AM, jiangpengfei <[email protected]>wrote:

> Hi everyone:****
>
> I tested the libdvbpsi v1.0.0 pre2 in my project today, I found there is a
> problem when libdvbpsi handles a table which split into multi-sections.***
> *
>
> My network is a DVB network, and there is a NIT split into two
> sections(the last section number is 1). In the test, I found only the
> information in the last section of NIT had been handled in the most
> conditions, the sec0’s data couldn’t be handled correctly. After read
> libdvbpsi’s source code, I found this function:
> dvbpsi_decoder_psi_sections_completed verifies if a table’s sections have
> been gathered completely. But I think this
> condition(p_decoder->i_last_section_number == p->i_number) is not perfect,
> because if the first section I received is last section of table, this
> condition will be true and will active the callback I registered. So I
> change the function implement to the following:
>
It does not sound logical to transmit the last part of a multi section psi
before sending other parts. I'll check with the official standards if this
behaviour is allowed.
Does your own equipment generate this transport stream with multi-section
psi tables?

Could you provide me with a sample file?

Kind regards,

Jean-Paul Saman.

> ****
>
> bool dvbpsi_decoder_psi_sections_completed(dvbpsi_decoder_t* p_decoder)***
> *
>
> {****
>
>     assert(p_decoder);****
>
>     assert(p_decoder->i_last_section_number <= 255);****
>
> ** **
>
>     bool b_complete = true;****
>
> ** **
>
> /*     dvbpsi_psi_section_t *p = p_decoder->p_sections;****
>
> *     while (p)****
>
> *     {****
>
> *         if (p_decoder->i_last_section_number == p->i_number)****
>
> *             b_complete = true;****
>
> *         p = p->p_next;****
>
> *     }****
>
> */****
>
>     int i;****
>
> ** **
>
>     for(i = 0; i <= p_decoder->i_last_section_number; i ++)****
>
>     {****
>
>         dvbpsi_psi_section_t * p = p_decoder->p_sections;****
>
> ** **
>
>         while(p)****
>
>         {****
>
>             if(i == p->i_number)****
>
>                 break;****
>
> ** **
>
>             p   =   p->p_next;****
>
>         }****
>
> ** **
>
>         if(p == NULL)****
>
>             b_complete  =   false;****
>
>     }****
>
> ** **
>
>     return b_complete;****
>
> }****
>
> ** **
>
> After recompile, the libdvbpsi can handle my NIT correctly. ****
>
> I’m a newer of libdvbpsi, I don’t want change any code of it, so can
> anyone tell me this is a bug or I misunderstand something?****
>
> ** **
>
> Fred from China. ****
>
> _______________________________________________
> libdvbpsi-devel mailing list
> [email protected]
> http://mailman.videolan.org/listinfo/libdvbpsi-devel
>
>

_______________________________________________
libdvbpsi-devel mailing list
[email protected]
http://mailman.videolan.org/listinfo/libdvbpsi-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.