[vlc-devel] [PATCH] fix teletext framing code in DVB PES packets ignored
Jean-Baptiste Kempf
jb at videolan.org
Fri Mar 20 16:10:48 CET 2015
OK.
On 20 Mar, Miha Sokolov wrote :
> Check the teletext framing code in PES buffer for each of the received lines
> and only copy those with correct framing code (p_block->p_buffer[3]) to the
> p_sliced buffer that is later forwarded to ZVBI vbi_decode. Invalid lines
> will not reach vbi_decode anymore.
>
> When also packets with erroneous framing code are sent to vbi_decode (often
> 0x00 with some noise), in most cases those are decoded as packet 1/2,
> causing the second text line on the teletext page to be overwritten with
> spaces. So we need to avoid sending such packets with invalid framing code
> to vbi_decode.
>
> close #14191
> ---
> modules/codec/zvbi.c | 23 +++++++++++++----------
> 1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/modules/codec/zvbi.c b/modules/codec/zvbi.c
> --- a/modules/codec/zvbi.c
> +++ b/modules/codec/zvbi.c
> @@ -331,17 +331,20 @@
>
> if( ( i_id == 0x02 || i_id == 0x03 ) && i_size >= 44 && i_lines < MAX_SLICES )
> {
> - unsigned line_offset = p_block->p_buffer[2] & 0x1f;
> - unsigned field_parity = p_block->p_buffer[2] & 0x20;
> + if(p_block->p_buffer[3] == 0xE4 ) /* framing_code */
> + {
> + unsigned line_offset = p_block->p_buffer[2] & 0x1f;
> + unsigned field_parity = p_block->p_buffer[2] & 0x20;
>
> - p_sliced[i_lines].id = VBI_SLICED_TELETEXT_B;
> - if( line_offset > 0 )
> - p_sliced[i_lines].line = line_offset + (field_parity ? 0 : 313);
> - else
> - p_sliced[i_lines].line = 0;
> - for( int i = 0; i < 42; i++ )
> - p_sliced[i_lines].data[i] = vbi_rev8( p_block->p_buffer[4 + i] );
> - i_lines++;
> + p_sliced[i_lines].id = VBI_SLICED_TELETEXT_B;
> + if( line_offset > 0 )
> + p_sliced[i_lines].line = line_offset + (field_parity ? 0 : 313);
> + else
> + p_sliced[i_lines].line = 0;
> + for( int i = 0; i < 42; i++ )
> + p_sliced[i_lines].data[i] = vbi_rev8( p_block->p_buffer[4 + i] );
> + i_lines++;
> + }
> }
>
> p_block->i_buffer -= 2 + i_size;
>
> --
> 2.1.3
>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
--
With my kindest regards,
--
Jean-Baptiste Kempf
http://www.jbkempf.com/ - +33 672 704 734
Sent from my Electronic Device
More information about the vlc-devel
mailing list