Browse Source

vout_subpictures: remove write-only subpicture_t absolute flag

pull/162/head
Steve Lhomme 2 years ago
parent
commit
02fd6845d3
  1. 1
      include/vlc_subpicture.h
  2. 1
      modules/access/bluray.c
  3. 1
      modules/codec/arib/aribsub.c
  4. 1
      modules/codec/arib/libaribcaption.c
  5. 2
      modules/codec/avcodec/subtitle.c
  6. 1
      modules/codec/cc.c
  7. 1
      modules/codec/cea708.c
  8. 1
      modules/codec/dvbsub.c
  9. 3
      modules/codec/kate.c
  10. 1
      modules/codec/libass.c
  11. 2
      modules/codec/scte18.c
  12. 2
      modules/codec/scte27.c
  13. 2
      modules/codec/stl.c
  14. 1
      modules/codec/subsdec.c
  15. 1
      modules/codec/substx3g.c
  16. 1
      modules/codec/subsusf.c
  17. 1
      modules/codec/telx.c
  18. 2
      modules/codec/textst.c
  19. 1
      modules/codec/ttml/substtml.c
  20. 1
      modules/codec/webvtt/subsvtt.c
  21. 1
      modules/codec/zvbi.c
  22. 2
      modules/spu/audiobargraph_v.c
  23. 1
      modules/spu/dynamicoverlay/dynamicoverlay.c
  24. 2
      modules/spu/logo.c
  25. 2
      modules/spu/marq.c
  26. 1
      modules/spu/mosaic.c
  27. 2
      modules/spu/rss.c
  28. 4
      modules/spu/subsdelay.c
  29. 1
      src/misc/subpicture.c
  30. 1
      src/video_output/video_epg.c
  31. 2
      src/video_output/video_text.c
  32. 2
      src/video_output/video_widgets.c
  33. 11
      src/video_output/vout_subpictures.c

1
include/vlc_subpicture.h

@ -263,7 +263,6 @@ struct subpicture_t
* subtitle type. */
/**@{*/
bool b_subtitle; /**< the picture is a movie subtitle */
bool b_absolute; /**< position is absolute */
unsigned i_original_picture_width; /**< original width of the movie */
unsigned i_original_picture_height;/**< original height of the movie */
int i_alpha; /**< transparency */

1
modules/access/bluray.c

@ -1722,7 +1722,6 @@ static subpicture_t *bluraySubpictureCreate(bluray_overlay_t *p_ov)
p_pic->i_original_picture_width = p_ov->width;
p_pic->i_original_picture_height = p_ov->height;
p_pic->b_absolute = true;
vlc_mutex_init(&p_upd_sys->lock);
p_upd_sys->ref_cnt = 2;

1
modules/codec/arib/aribsub.c

@ -265,7 +265,6 @@ static subpicture_t *render( decoder_t *p_dec, arib_parser_t *p_parser,
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = i_duration ? p_block->i_pts + i_duration : 0;
p_spu->b_ephemer = i_duration == 0;
p_spu->b_absolute = true;
arib_spu_updater_sys_t *p_spu_sys = p_spu->updater.sys;

1
modules/codec/arib/libaribcaption.c

@ -261,7 +261,6 @@ static int Decode(decoder_t *p_dec, block_t *p_block)
}
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts;
p_spu->b_absolute = true;
p_spu->b_fade = p_sys->b_cfg_fadeout;
if (caption.wait_duration == ARIBCC_DURATION_INDEFINITE) {

2
modules/codec/avcodec/subtitle.c

@ -327,7 +327,6 @@ static subpicture_t *ConvertSubtitle(decoder_t *dec, AVSubtitle *ffsub, vlc_tick
// pts, ffsub->start_display_time, ffsub->end_display_time);
spu->i_start = pts + VLC_TICK_FROM_MS(ffsub->start_display_time);
spu->i_stop = pts + VLC_TICK_FROM_MS(ffsub->end_display_time);
spu->b_absolute = true; /* We have offset and size for subtitle */
spu->b_ephemer = p_sys->b_need_ephemer;
/* We only show subtitle for i_stop time only */
@ -364,4 +363,3 @@ static subpicture_t *ConvertSubtitle(decoder_t *dec, AVSubtitle *ffsub, vlc_tick
return spu;
}

1
modules/codec/cc.c

@ -504,7 +504,6 @@ static subpicture_t *Subtitle( decoder_t *p_dec, eia608_t *h, vlc_tick_t i_pts )
p_spu->i_start = i_pts;
p_spu->i_stop = i_pts + VLC_TICK_FROM_SEC(10); /* 10s max */
p_spu->b_ephemer = true;
p_spu->b_absolute = false;
subtext_updater_sys_t *p_spu_sys = p_spu->updater.sys;
decoder_sys_t *p_dec_sys = p_dec->p_sys;

1
modules/codec/cea708.c

@ -1117,7 +1117,6 @@ static subpicture_t *CEA708_BuildSubtitle( cea708_t *p_cea708 )
p_spu->i_stop = p_cea708->i_clock + VLC_TICK_FROM_SEC(10); /* 10s max */
p_spu->b_ephemer = true;
p_spu->b_absolute = false;
p_spu->b_subtitle = true;
return p_spu;

1
modules/codec/dvbsub.c

@ -1490,7 +1490,6 @@ static subpicture_t *render( decoder_t *p_dec )
if( !p_spu )
return NULL;
p_spu->b_absolute = p_sys->b_absolute;
/* Set the pf_render callback */
p_spu->i_start = p_sys->i_pts;
//p_spu->i_stop = (vlc_tick_t) 0;

3
modules/codec/kate.c

@ -1044,7 +1044,6 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts + vlc_tick_from_samples(ev->duration * p_sys->ki.gps_denominator, p_sys->ki.gps_numerator);
p_spu->b_ephemer = false;
p_spu->b_absolute = false;
#ifdef HAVE_TIGER
if( p_sys->b_use_tiger)
@ -1055,7 +1054,6 @@ static subpicture_t *DecodePacket( decoder_t *p_dec, kate_packet *p_kp, block_t
p_spu->i_stop = __MAX( p_sys->i_max_stop, p_spu->i_stop );
p_spu->b_ephemer = true;
p_spu->b_absolute = true;
/* add the event to tiger */
vlc_mutex_lock( &p_sys->lock );
@ -1181,7 +1179,6 @@ static subpicture_t *SetupSimpleKateSPU( decoder_t *p_dec, subpicture_t *p_spu,
p_bitmap_region->i_x = kin.region_x;
p_bitmap_region->i_y = kin.region_y;
}
p_spu->b_absolute = true;
}
kate_tracker_clear(&kin);

1
modules/codec/libass.c

@ -388,7 +388,6 @@ static int DecodeBlock( decoder_t *p_dec, block_t *p_block )
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = __MAX( p_sys->i_max_stop, p_block->i_pts + p_block->i_length );
p_spu->b_ephemer = true;
p_spu->b_absolute = true;
p_sys->i_max_stop = p_spu->i_stop;

2
modules/codec/scte18.c

@ -194,7 +194,6 @@ static int Decode( decoder_t *p_dec, block_t *p_block )
p_spu->i_stop = VLC_TICK_INVALID;
p_spu->b_ephemer = true;
p_spu->b_absolute = false;
p_spu_sys->region.b_absolute = false;
p_spu_sys->region.inner_align = SUBPICTURE_ALIGN_TOP;
@ -250,4 +249,3 @@ static void Close( vlc_object_t *p_object )
atsc_a65_handle_Release( p_sys->p_handle );
free( p_sys );
}

2
modules/codec/scte27.c

@ -389,7 +389,6 @@ static subpicture_t *DecodeSubtitleMessage(decoder_t *dec,
frame_duration = VLC_TICK_FROM_MS(40);
break;
}
sub->b_absolute = true;
region->b_absolute = true;
if (!pre_clear_display)
msg_Warn(dec, "SCTE-27 subtitles without pre_clear_display flag are not well supported");
@ -516,4 +515,3 @@ static void Close(vlc_object_t *object)
free(sys->segment_buffer);
free(sys);
}

2
modules/codec/stl.c

@ -410,8 +410,6 @@ static int Decode(decoder_t *p_dec, block_t *p_block)
{
FillSubpictureUpdater(p_group, p_sub->updater.sys );
p_sub->b_absolute = false;
if(p_group->i_end != VLC_TICK_INVALID && p_group->i_start >= p_block->i_dts)
{
p_sub->i_start = VLC_TICK_0 + p_group->i_start;

1
modules/codec/subsdec.c

@ -455,7 +455,6 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts + p_block->i_length;
p_spu->b_ephemer = (p_block->i_length == VLC_TICK_INVALID);
p_spu->b_absolute = false;
subtext_updater_sys_t *p_spu_sys = p_spu->updater.sys;

1
modules/codec/substx3g.c

@ -414,7 +414,6 @@ static int Decode( decoder_t *p_dec, block_t *p_block )
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts + p_block->i_length;
p_spu->b_ephemer = (p_block->i_length == VLC_TICK_INVALID);
p_spu->b_absolute = false;
p_spu_sys->region.b_absolute = false;
p_spu_sys->region.align = SUBPICTURE_ALIGN_BOTTOM;

1
modules/codec/subsusf.c

@ -263,7 +263,6 @@ static subpicture_t *ParseText( decoder_t *p_dec, block_t *p_block )
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts + p_block->i_length;
p_spu->b_ephemer = (p_block->i_length == VLC_TICK_INVALID);
p_spu->b_absolute = false;
if (p_sys->i_original_width > 0 && p_sys->i_original_height > 0)
{
p_spu->i_original_picture_width = p_sys->i_original_width;

1
modules/codec/telx.c

@ -747,7 +747,6 @@ static int Decode( decoder_t *p_dec, block_t *p_block )
p_spu->i_start = p_block->i_pts;
p_spu->i_stop = p_block->i_pts + p_block->i_length;
p_spu->b_ephemer = (p_block->i_length == 0);
p_spu->b_absolute = false;
dbg((p_dec, "%ld --> %ld", (long int) p_block->i_pts/100000, (long int)p_block->i_length/100000));
block_Release( p_block );

2
modules/codec/textst.c

@ -250,7 +250,6 @@ static int Decode(decoder_t *p_dec, block_t *p_block)
&p_spusys->region);
p_spusys->region.b_absolute = false;
p_sub->b_absolute = false;
decoder_QueueSub(p_dec, p_sub);
}
@ -276,4 +275,3 @@ static int Open(vlc_object_t *object)
return VLC_SUCCESS;
}

1
modules/codec/ttml/substtml.c

@ -1396,7 +1396,6 @@ static int ParseBlock( decoder_t *p_dec, const block_t *p_block )
p_spu->i_stop = p_sys->pes.i_offset +
VLC_TICK_0 + tt_time_Convert( &p_timings_array[i+1] ) - 1;
p_spu->b_ephemer = true;
p_spu->b_absolute = true;
if( !b_bitmap_regions ) /* TEXT regions */
TTMLRegionsToSpuTextRegions( p_dec, p_spu, p_regions );

1
modules/codec/webvtt/subsvtt.c

@ -1873,7 +1873,6 @@ static void RenderRegions( decoder_t *p_dec, vlc_tick_t i_nzstart, vlc_tick_t i_
p_spu->i_start = VLC_TICK_0 + i_nzstart;
p_spu->i_stop = VLC_TICK_0 + i_nzstop;
p_spu->b_ephemer = true; /* !important */
p_spu->b_absolute = false; /* can't be absolute as snap to lines can overlap ! */
subtext_updater_sys_t *p_spu_sys = p_spu->updater.sys;
p_spu_sys->p_default_style->f_font_relsize = WEBVTT_DEFAULT_LINE_HEIGHT_VH /

1
modules/codec/zvbi.c

@ -585,7 +585,6 @@ static subpicture_t *Subpicture( decoder_t *p_dec,
p_spu->i_start = i_pts;
p_spu->i_stop = b_text ? i_pts + VLC_TICK_FROM_SEC(10): 0;
p_spu->b_ephemer = true;
p_spu->b_absolute = b_text ? false : true;
if( !b_text )
p_region->i_align = i_align;

2
modules/spu/audiobargraph_v.c

@ -391,11 +391,9 @@ static subpicture_t *FilterSub(filter_t *p_filter, vlc_tick_t date)
if (p_sys->i_pos < 0) { /* set to an absolute xy */
p_region->i_align = SUBPICTURE_ALIGN_LEFT | SUBPICTURE_ALIGN_TOP;
p_region->b_absolute = true;
p_spu->b_absolute = true;
} else { /* set to one of the 9 relative locations */
p_region->i_align = p_sys->i_pos;
p_region->b_absolute = false;
p_spu->b_absolute = false;
}
p_region->i_x = p_sys->i_pos_x > 0 ? p_sys->i_pos_x : 0;

1
modules/spu/dynamicoverlay/dynamicoverlay.c

@ -346,7 +346,6 @@ static subpicture_t *Filter( filter_t *p_filter, vlc_tick_t date )
if( !p_spu )
return NULL;
p_spu->b_absolute = true;
p_spu->i_start = date;
p_spu->i_stop = 0;
p_spu->b_ephemer = true;

2
modules/spu/logo.c

@ -375,13 +375,11 @@ static subpicture_t *FilterSub( filter_t *p_filter, vlc_tick_t date )
{ /* set to an absolute xy */
p_region->i_align = SUBPICTURE_ALIGN_LEFT | SUBPICTURE_ALIGN_TOP;
p_region->b_absolute = true;
p_spu->b_absolute = true;
}
else
{ /* set to one of the 9 relative locations */
p_region->i_align = p_sys->i_pos;
p_region->b_absolute = false;
p_spu->b_absolute = false;
}
p_region->i_x = p_sys->i_pos_x > 0 ? p_sys->i_pos_x : 0;

2
modules/spu/marq.c

@ -306,13 +306,11 @@ static subpicture_t *Filter( filter_t *p_filter, vlc_tick_t date )
{ /* set to an absolute xy */
p_region->i_align = SUBPICTURE_ALIGN_LEFT | SUBPICTURE_ALIGN_TOP;
p_region->b_absolute = true;
p_spu->b_absolute = true;
}
else
{ /* set to one of the 9 relative locations */
p_region->i_align = p_sys->i_pos;
p_region->b_absolute = false;
p_spu->b_absolute = false;
}
p_region->i_x = p_sys->i_xoff;

1
modules/spu/mosaic.c

@ -461,7 +461,6 @@ static subpicture_t *Filter( filter_t *p_filter, vlc_tick_t date )
p_spu->i_stop = 0;
p_spu->b_ephemer = true;
p_spu->i_alpha = p_sys->i_alpha;
p_spu->b_absolute = false;
p_spu->i_original_picture_width = p_sys->i_width;
p_spu->i_original_picture_height = p_sys->i_height;

2
modules/spu/rss.c

@ -485,13 +485,11 @@ static subpicture_t *Filter( filter_t *p_filter, vlc_tick_t date )
{ /* set to an absolute xy */
region->i_align = SUBPICTURE_ALIGN_LEFT | SUBPICTURE_ALIGN_TOP;
region->b_absolute = true;
p_spu->b_absolute = true;
}
else
{ /* set to one of the 9 relative locations */
region->i_align = p_sys->i_pos;
region->b_absolute = false;
p_spu->b_absolute = false;
}
region->i_x = p_sys->i_xoff;
region->i_y = p_sys->i_yoff;

4
modules/spu/subsdelay.c

@ -1049,8 +1049,6 @@ static void SubpicLocalUpdate( subpicture_t* p_subpic, vlc_tick_t i_ts )
if( p_entry->b_update_position )
{
p_subpic->b_absolute = false;
if( p_region )
{
p_region->b_absolute = false;
@ -1064,8 +1062,6 @@ static void SubpicLocalUpdate( subpicture_t* p_subpic, vlc_tick_t i_ts )
}
else if( p_entry->b_last_region_saved )
{
p_subpic->b_absolute = true;
if( p_region )
{
p_region->b_absolute = true;

1
src/misc/subpicture.c

@ -49,7 +49,6 @@ subpicture_t *subpicture_New( const subpicture_updater_t *p_upd )
return NULL;
p_subpic->i_order = 0;
p_subpic->b_absolute = true;
p_subpic->b_fade = false;
p_subpic->b_subtitle = false;
p_subpic->i_alpha = 0xFF;

1
src/video_output/video_epg.c

@ -636,7 +636,6 @@ int vout_OSDEpg(vout_thread_t *vout, input_item_t *input)
subpic->i_start = now;
subpic->i_stop = now + VLC_TICK_FROM_SEC(3);
subpic->b_ephemer = true;
subpic->b_absolute = false;
subpic->b_fade = true;
subpic->b_subtitle = false;

2
src/video_output/video_text.c

@ -53,7 +53,6 @@ static void OSDTextUpdate(subpicture_t *subpic,
assert(fmt_dst->i_sar_den && fmt_dst->i_sar_num);
subpic->b_absolute = false;
subpic->i_original_picture_width = fmt_dst->i_visible_width * fmt_dst->i_sar_num / fmt_dst->i_sar_den;
subpic->i_original_picture_height = fmt_dst->i_visible_height;
@ -128,7 +127,6 @@ void vout_OSDText(vout_thread_t *vout, int channel,
subpic->i_start = vlc_tick_now();
subpic->i_stop = subpic->i_start + duration;
subpic->b_ephemer = true;
subpic->b_absolute = false;
subpic->b_fade = true;
vout_PutSubpicture(vout, subpic);

2
src/video_output/video_widgets.c

@ -326,7 +326,6 @@ static void OSDWidget(vout_thread_t *vout, int channel, int type, int position)
subpic->i_start = vlc_tick_now();
subpic->i_stop = subpic->i_start + VLC_TICK_FROM_MS(1200);
subpic->b_ephemer = true;
subpic->b_absolute = true;
subpic->b_fade = true;
vout_PutSubpicture(vout, subpic);
@ -341,4 +340,3 @@ void vout_OSDIcon(vout_thread_t *vout, int channel, short type )
{
OSDWidget(vout, channel, type, 0);
}

11
src/video_output/vout_subpictures.c

@ -695,7 +695,6 @@ static void SpuRegionPlace(int *x, int *y,
int i_align)
{
assert(region->i_x != INT_MAX && region->i_y != INT_MAX);
assert(subpic->b_absolute == region->b_absolute);
if (region->b_absolute) {
*x = region->i_x;
*y = region->i_y;
@ -740,9 +739,8 @@ static int SSizeCmp(ssize_t i0, ssize_t i1)
/**
* This function compares 2 subpictures using the following properties
* (ordered by priority)
* 1. absolute positioning
* 2. start time (display time)
* 3. creation order (per channel)
* 1. start time (display time)
* 2. creation order (per channel)
*
* It can be used by qsort.
*
@ -756,9 +754,7 @@ static int SpuRenderCmp(const void *s0, const void *s1)
subpicture_t *subpic1 = render_entry1->subpic;
int r;
r = IntegerCmp(!subpic0->b_absolute, !subpic1->b_absolute);
if (!r)
r = IntegerCmp(subpic0->i_start, subpic1->i_start);
r = IntegerCmp(subpic0->i_start, subpic1->i_start);
if (!r)
r = SSizeCmp(subpic0->i_channel, subpic1->i_channel);
if (!r)
@ -1476,7 +1472,6 @@ static vlc_render_subpicture *SpuRenderSubpictures(spu_t *spu,
region->i_x = cache_pos->x;
region->i_y = cache_pos->y;
region->b_absolute = true;
forced_subpic.b_absolute = true;
}
/* */

Loading…
Cancel
Save