[libdvbpsi-devel] [PATCH] Fix a parsing error in dr_02.c

Jean-Paul Saman jpsaman at videolan.org
Mon Jun 1 09:48:12 CEST 2015


Daniel,

On Sun, May 31, 2015 at 10:03 PM, Daniel Kamil Kozar <dkk089 at gmail.com>
wrote:

> b_mpeg2 in dvbpsi_vstream_dr_t corresponds to what the H.222.0 refers to
> as the "MPEG_1_only_flag". If the flag is not set, it means that no
> extra data is contained at the end of the descriptor. The code in
> dr_02.c did exactly the opposite.
> ---
>  src/descriptors/dr_02.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/descriptors/dr_02.c b/src/descriptors/dr_02.c
> index 774a1c0..1c35d83 100644
> --- a/src/descriptors/dr_02.c
> +++ b/src/descriptors/dr_02.c
> @@ -60,7 +60,7 @@ dvbpsi_vstream_dr_t *
> dvbpsi_DecodeVStreamDr(dvbpsi_descriptor_t * p_descriptor)
>    if(!p_decoded) return NULL;
>
>    /* Decode data and check the length */
> -  p_decoded->b_mpeg2 = !((p_descriptor->p_data[0] & 0x04) ? true : false);
> +  p_decoded->b_mpeg2 = (p_descriptor->p_data[0] & 0x04) ? true : false;
>    if(    (!p_decoded->b_mpeg2 && (p_descriptor->i_length != 1))
>        || (p_decoded->b_mpeg2 && (p_descriptor->i_length != 3)))
>    {
> --
> 2.4.2
>
>
Could you double check the specs, because it would mean a revert of
25cdb9fd, which I believe is correct in the mentioned specs.
That H.222.0 and " ISO/IEC 13818-1 : 2000, table 2-40 and 2.6.3" contradict
each other is quite unlikely IMHO.

$> git show 25cdb9fd
commit 25cdb9fd7ce804ec69b91fa1b0887435c474b32d
Author: Jean-Baptiste Kempf <jb at videolan.org>
Date:   Tue Aug 12 04:04:47 2014 +0200

    Correctly flag mpeg2 video data in video_stream_descriptor

    See ISO/IEC 13818-1 : 2000, table 2-40 and 2.6.3

    See https://trac.videolan.org/vlc/ticket/4200

    Signed-off-by: Jean-Paul Saman <jpsaman at videolan.org>

diff --git a/src/descriptors/dr_02.c b/src/descriptors/dr_02.c
index 1c35d83..774a1c0 100644
--- a/src/descriptors/dr_02.c
+++ b/src/descriptors/dr_02.c
@@ -60,7 +60,7 @@ dvbpsi_vstream_dr_t *
dvbpsi_DecodeVStreamDr(dvbpsi_descriptor_t * p_descriptor)
   if(!p_decoded) return NULL;

   /* Decode data and check the length */
-  p_decoded->b_mpeg2 = (p_descriptor->p_data[0] & 0x04) ? true : false;
+  p_decoded->b_mpeg2 = !((p_descriptor->p_data[0] & 0x04) ? true : false);
   if(    (!p_decoded->b_mpeg2 && (p_descriptor->i_length != 1))
       || (p_decoded->b_mpeg2 && (p_descriptor->i_length != 3)))
   {

Kind regards,

Jean-Paul Saman

> _______________________________________________
> libdvbpsi-devel mailing list
> libdvbpsi-devel at videolan.org
> https://mailman.videolan.org/listinfo/libdvbpsi-devel
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/libdvbpsi-devel/attachments/20150601/683a1111/attachment.html>


More information about the libdvbpsi-devel mailing list