mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-27 02:30:35 +00:00
dvdspu: handle frame size event from upstream
An IDX file or codec_data normally contains the original frame size of the video. Allow upstream to provide this information by sending a custom event, which will allow scaling the overlay correctly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5827>
This commit is contained in:
parent
559c4b8429
commit
705ab7e35a
2 changed files with 10 additions and 2 deletions
|
@ -485,6 +485,11 @@ gstspu_vobsub_handle_dvd_event (GstDVDSpu * dvdspu, GstEvent * event)
|
|||
if (was_forced != forced_only)
|
||||
hl_change = TRUE;
|
||||
}
|
||||
} else if (strcmp (event_type, "dvd-set-frame-size") == 0) {
|
||||
gst_structure_get_int (structure, "width", &state->vobsub.frame_w);
|
||||
gst_structure_get_int (structure, "height", &state->vobsub.frame_h);
|
||||
GST_INFO_OBJECT (dvdspu, "Frame size is now %dx%d",
|
||||
state->vobsub.frame_w, state->vobsub.frame_h);
|
||||
}
|
||||
|
||||
gst_event_unref (event);
|
||||
|
@ -509,10 +514,12 @@ gstspu_vobsub_get_render_geometry (GstDVDSpu * dvdspu,
|
|||
}
|
||||
|
||||
if (display_width)
|
||||
*display_width = state->info.width;
|
||||
*display_width = state->vobsub.frame_w > 0 ?
|
||||
state->vobsub.frame_w : state->info.width;
|
||||
|
||||
if (display_height)
|
||||
*display_height = state->info.height;
|
||||
*display_height = state->vobsub.frame_h > 0 ?
|
||||
state->vobsub.frame_h : state->info.height;
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -56,6 +56,7 @@ struct SpuVobsubState {
|
|||
|
||||
SpuRect disp_rect;
|
||||
SpuRect hl_rect;
|
||||
gint frame_w, frame_h;
|
||||
|
||||
guint32 current_clut[16]; /* Colour lookup table from incoming events */
|
||||
|
||||
|
|
Loading…
Reference in a new issue