From 46f3b7d26327254bc471987d257bf62ad6f1eeca Mon Sep 17 00:00:00 2001 From: reimar Date: Tue, 27 Apr 2010 19:04:23 +0000 Subject: Move variable declaration into the block where it is actually used. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31103 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libvo/x11_common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libvo/x11_common.c b/libvo/x11_common.c index 6a0ad3776e..57ff565b2d 100644 --- a/libvo/x11_common.c +++ b/libvo/x11_common.c @@ -368,9 +368,9 @@ static void init_atoms(void) void update_xinerama_info(void) { xinerama_x = xinerama_y = 0; #ifdef CONFIG_XINERAMA - int screen = xinerama_screen; - if (screen >= -1 && XineramaIsActive(mDisplay)) + if (xinerama_screen >= -1 && XineramaIsActive(mDisplay)) { + int screen = xinerama_screen; XineramaScreenInfo *screens; int num_screens; -- cgit v1.2.3 From 3517a9b72b06aeb962487e9d0025e22cd6d0f575 Mon Sep 17 00:00:00 2001 From: iive Date: Tue, 27 Apr 2010 22:06:29 +0000 Subject: New hack for vobsub packet merging. It seems that if there is no padding between packets then they actually belong to one subtitle picture. The new hack seems to work far more reliable than the (already removed) old one. Patch by Ubitux (gmail) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@31104 b3059339-0415-0410-9bf9-f77b7e298cf2 --- vobsub.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/vobsub.c b/vobsub.c index eeb8592607..f14e72f7d3 100644 --- a/vobsub.c +++ b/vobsub.c @@ -285,6 +285,8 @@ typedef struct { unsigned char *packet; unsigned int packet_reserve; unsigned int packet_size; + int padding_was_here; + int merge; } mpeg_t; static mpeg_t *mpeg_open(const char *filename) @@ -297,6 +299,8 @@ static mpeg_t *mpeg_open(const char *filename) res->packet = NULL; res->packet_size = 0; res->packet_reserve = 0; + res->padding_was_here = 1; + res->merge = 0; res->stream = rar_open(filename, "rb"); err = res->stream == NULL; if (err) @@ -368,10 +372,13 @@ static int mpeg_run(mpeg_t *mpeg) return -1; } else abort(); + if (!mpeg->padding_was_here) + mpeg->merge = 1; break; case 0xbd: /* packet */ if (rar_read(buf, 2, 1, mpeg->stream) != 1) return -1; + mpeg->padding_was_here = 0; len = buf[0] << 8 | buf[1]; idx = mpeg_tell(mpeg); c = rar_getc(mpeg->stream); @@ -454,6 +461,7 @@ static int mpeg_run(mpeg_t *mpeg) len = buf[0] << 8 | buf[1]; if (len > 0 && rar_seek(mpeg->stream, len, SEEK_CUR)) return -1; + mpeg->padding_was_here = 1; break; default: if (0xc0 <= buf[3] && buf[3] < 0xf0) { @@ -1026,6 +1034,11 @@ void *vobsub_open(const char *const name, const char *const ifo, last_pts_diff = pkt->pts100 - mpg->pts; else pkt->pts100 = mpg->pts; + if (mpg->merge) { + packet_t *last = &queue->packets[queue->current_index - 1]; + pkt->pts100 = last->pts100; + mpg->merge = 0; + } /* FIXME: should not use mpg_sub internal informations, make a copy */ pkt->data = mpg->packet; pkt->size = mpg->packet_size; -- cgit v1.2.3