[vlc-devel] [PATCH 05/11] Video output: support rotated movies
Matthias Keiser
matthias at tristan-inc.com
Thu Mar 13 14:49:02 CET 2014
Am 12.03.2014 um 21:59 schrieb Rémi Denis-Courmont <remi at remlab.net>:
> Le mercredi 12 mars 2014, 21:52:11 Matthias Keiser a écrit :
>> Am 12.03.2014 um 18:45 schrieb Rémi Denis-Courmont <remi at remlab.net>:
>>> Le jeudi 6 mars 2014, 01:12:26 Matthias Keiser a écrit :
>>>> ---
>>>> src/video_output/video_output.c | 5 ++++-
>>>> 1 file changed, 4 insertions(+), 1 deletion(-)
>>>>
>>>> diff --git a/src/video_output/video_output.c
>>>> b/src/video_output/video_output.c index 64bef99..a629e9f 100644
>>>> --- a/src/video_output/video_output.c
>>>> +++ b/src/video_output/video_output.c
>>>> @@ -918,6 +918,7 @@ static int ThreadDisplayRenderPicture(vout_thread_t
>>>> *vout, bool is_forced) vd->info.subpicture_chromas &&
>>>>
>>>> *vd->info.subpicture_chromas != 0;
>>>>
>>>> const bool do_early_spu = !do_dr_spu &&
>>>>
>>>> + vd->source.orientation ==
>>>> vd->fmt.orientation && //snapshots will be missing subpictures in this
>>>> case
>>>> (vd->info.is_slow ||
>>>
>>> Please wrap. I'm not sure why this is needed, so maybe this needs a bit
>>> more text in the commit message.
>>
>> Since snapshots are not filtered through the display filter chain, they are
>> never rotated. The means subpictures are oriented wrongly (no matter if we
>> do or don't call video_format_ApplyRotation before spu_Render).
>
> I don't really understand how this relates to the snippet.
Yes, it was wrong. I now simply check if vd->source.orientation != ORIENT_NORMAL and added a comment.
---
src/video_output/video_output.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/video_output/video_output.c b/src/video_output/video_output.c
index 64bef99..8088d95 100644
--- a/src/video_output/video_output.c
+++ b/src/video_output/video_output.c
@@ -917,7 +917,13 @@ static int ThreadDisplayRenderPicture(vout_thread_t *vout, bool is_forced)
const bool do_dr_spu = !do_snapshot &&
vd->info.subpicture_chromas &&
*vd->info.subpicture_chromas != 0;
+
+ //FIXME: Denying do_early_spu if vd->source.orientation != ORIENT_NORMAL
+ //will have the effect that snapshots miss the subpictures. We do this
+ //because there is currently no way to transform subpictures to match
+ //the source format.
const bool do_early_spu = !do_dr_spu &&
+ vd->source.orientation == ORIENT_NORMAL &&
(vd->info.is_slow ||
sys->display.use_dr ||
do_snapshot ||
@@ -964,8 +970,10 @@ static int ThreadDisplayRenderPicture(vout_thread_t *vout, bool is_forced)
}
}
+ video_format_t fmt_spu_rot;
+ video_format_ApplyRotation(&fmt_spu, &fmt_spu_rot);
subpicture_t *subpic = spu_Render(vout->p->spu,
- subpicture_chromas, &fmt_spu,
+ subpicture_chromas, &fmt_spu_rot,
&vd->source,
render_subtitle_date, render_osd_date,
do_snapshot);
--
1.8.3.4 (Apple Git-47)
More information about the vlc-devel
mailing list