changeset 31838:31ece8c6baed

Move initialization of vo_spudec further behind to avoid issues with PGS subtitles being scaled incorrectly.
author reimar
date Tue, 03 Aug 2010 17:09:16 +0000
parents 46c25393f99d
children 5edb6679ccad
files mpcommon.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/mpcommon.c	Tue Aug 03 17:01:13 2010 +0000
+++ b/mpcommon.c	Tue Aug 03 17:09:16 2010 +0000
@@ -133,8 +133,6 @@
     if (vo_config_count &&
         (vobsub_id >= 0 || type == 'v')) {
         int timestamp;
-        if (!vo_spudec)
-            vo_spudec = spudec_new(NULL);
         current_module = "spudec";
         /* Get a sub packet from the DVD or a vobsub */
         while(1) {
@@ -167,6 +165,12 @@
                 }
             }
             if (len<=0 || !packet) break;
+            // create it only here, since with some broken demuxers we might
+            // type = v but no DVD sub and we currently do not change the
+            // "original frame size" ever after init, leading to wrong-sized
+            // PGS subtitles.
+            if (!vo_spudec)
+                vo_spudec = spudec_new(NULL);
             if (vo_vobsub || timestamp >= 0)
                 spudec_assemble(vo_spudec, packet, len, timestamp);
         }