Commit 57527c54 authored by Björn Stenberg's avatar Björn Stenberg Committed by Ilkka Ollakka

dvbsub.c : Don't fill region if page_state == 0

My interpretation of ETSI EN 300 743 is that the region_fill_flag of a region
composition segment should not cause the region to be filled when the containing
page composition segment has its' page_state variable set to 0 (page update).
Signed-off-by: default avatarIlkka Ollakka <ileoo@videolan.org>
parent 3a3c9aa6
...@@ -840,7 +840,8 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) ...@@ -840,7 +840,8 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
int i_segment_length, i_processed_length, i_id, i_version; int i_segment_length, i_processed_length, i_id, i_version;
int i_width, i_height, i_level_comp, i_depth, i_clut; int i_width, i_height, i_level_comp, i_depth, i_clut;
int i_8_bg, i_4_bg, i_2_bg; int i_8_bg, i_4_bg, i_2_bg;
bool b_fill; bool b_region_fill, b_fill = false;
dvbsub_page_t *p_page = p_sys->p_page;
i_segment_length = bs_read( s, 16 ); i_segment_length = bs_read( s, 16 );
i_id = bs_read( s, 8 ); i_id = bs_read( s, 8 );
...@@ -877,7 +878,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) ...@@ -877,7 +878,7 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
/* Region attributes */ /* Region attributes */
p_region->i_id = i_id; p_region->i_id = i_id;
p_region->i_version = i_version; p_region->i_version = i_version;
b_fill = bs_read( s, 1 ); b_region_fill = bs_read( s, 1 );
bs_skip( s, 3 ); /* Reserved */ bs_skip( s, 3 ); /* Reserved */
i_width = bs_read( s, 16 ); i_width = bs_read( s, 16 );
...@@ -917,6 +918,10 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s ) ...@@ -917,6 +918,10 @@ static void decode_region_composition( decoder_t *p_dec, bs_t *s )
p_region->i_depth = 0; p_region->i_depth = 0;
b_fill = true; b_fill = true;
} }
else
if (b_region_fill && p_page->i_state != 0)
b_fill = true;
if( p_region->i_depth && if( p_region->i_depth &&
( ( p_region->i_depth != i_depth ) || ( ( p_region->i_depth != i_depth ) ||
( p_region->i_level_comp != i_level_comp ) || ( p_region->i_level_comp != i_level_comp ) ||
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment