summaryrefslogtreecommitdiff
path: root/community/mpv/mpv-0.3.1-always_respect_sector_size.patch
blob: 82c474081d7674f0348dd3b400e52b4a2edbcfba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
From b04b48fc10dabb1d1b26ff519f55dcafb320985e Mon Sep 17 00:00:00 2001
From: wm4 <wm4@nowhere>
Date: Thu, 2 Jan 2014 00:39:14 +0100
Subject: [PATCH] stream: always respect sector_size, fixes cdda://

Streams like CDDA have special requirements in what quantities data can
be read: you can only read a sector at once, not more and not less. The
stream_peek() function didn't respect that and set less (used internal
buffer size of 2048 bytes, instead of CD sector size of 2352 bytes), so
no data was read and EOF was accidentally set, making playback with
cdda:// fail.

This is a regression since commit 9a723f, but that commit merely exposed
the issue (the redundant seek would clear the EOF flag).
---
 stream/stream.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/stream/stream.c b/stream/stream.c
index 3332e66..b48de57 100644
--- a/stream/stream.c
+++ b/stream/stream.c
@@ -562,7 +562,7 @@ struct bstr stream_peek(stream_t *s, int len)
         while (buf_valid < len) {
             int chunk = MPMAX(len - buf_valid, STREAM_BUFFER_SIZE);
             if (s->sector_size)
-                chunk = STREAM_BUFFER_SIZE;
+                chunk = s->sector_size;
             assert(buf_valid + chunk <= TOTAL_BUFFER_SIZE);
             int read = stream_read_unbuffered(s, &s->buffer[buf_valid], chunk);
             if (read == 0)
-- 
1.8.5.1