summaryrefslogtreecommitdiffstats
path: root/sub/sd_lavc.c
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2014-01-29 16:52:40 +0100
committerwm4 <wm4@nowhere>2014-01-29 16:52:40 +0100
commit46c9dfe2e7f2b8e2e1fb4a1ef0bb9de0bdd5a8b3 (patch)
treedd838c5ac0a58d925883d260ed09f8788853c0e0 /sub/sd_lavc.c
parentcd2cfc80564175ab6a52814d48cd29e21506770d (diff)
downloadmpv-46c9dfe2e7f2b8e2e1fb4a1ef0bb9de0bdd5a8b3.tar.bz2
mpv-46c9dfe2e7f2b8e2e1fb4a1ef0bb9de0bdd5a8b3.tar.xz
sd_lavc: skip 0 sized sub-bitmaps
Not everything in the OSD path handles 0x0 sized sub-bitmaps well. At least the code implementing --sub-gray had severe problems with it. Fix this by skipping such bitmaps.
Diffstat (limited to 'sub/sd_lavc.c')
-rw-r--r--sub/sd_lavc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/sub/sd_lavc.c b/sub/sd_lavc.c
index f0fa183419..9f57d9ec38 100644
--- a/sub/sd_lavc.c
+++ b/sub/sd_lavc.c
@@ -182,11 +182,13 @@ static void decode(struct sd *sd, struct demux_packet *packet)
sub.num_rects);
for (int i = 0; i < sub.num_rects; i++) {
struct AVSubtitleRect *r = sub.rects[i];
- struct sub_bitmap *b = &priv->inbitmaps[i];
- struct osd_bmp_indexed *img = &priv->imgs[i];
+ struct sub_bitmap *b = &priv->inbitmaps[priv->count];
+ struct osd_bmp_indexed *img = &priv->imgs[priv->count];
if (!(r->flags & AV_SUBTITLE_FLAG_FORCED) &&
opts->forced_subs_only)
continue;
+ if (r->w == 0 || r->h == 0)
+ continue;
img->bitmap = r->pict.data[0];
assert(r->nb_colors > 0);
assert(r->nb_colors * 4 <= sizeof(img->palette));