annotate stream/stream_bluray.c @ 32676:db882cd69776

Do not #define _WIN32 on the command line for Cygwin. Newer Cygwin versions no longer do this and hopefully we should be able to survive without this hack as well. This change necessitates adapting two #ifdefs in the MPlayer codebase. It is committed untested as I do not have access to a Cygwin system.
author diego
date Thu, 06 Jan 2011 12:42:59 +0000
parents 4189a8951568
children 277ec491a8a7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
1 /*
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
2 * Copyright (C) 2010 Benjamin Zores <ben@geexbox.org>
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
3 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
4 * This file is part of MPlayer.
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
5 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
6 * MPlayer is free software; you can redistribute it and/or modify
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
7 * it under the terms of the GNU General Public License as published by
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
8 * the Free Software Foundation; either version 2 of the License, or
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
9 * (at your option) any later version.
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
10 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
11 * MPlayer is distributed in the hope that it will be useful,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
14 * GNU General Public License for more details.
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
15 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
16 * You should have received a copy of the GNU General Public License along
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
17 * with MPlayer; if not, write to the Free Software Foundation, Inc.,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
18 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
19 */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
20
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
21 /*
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
22 * Blu-ray parser/reader using libbluray
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
23 * Use 'git clone git://git.videolan.org/libbluray' to get it.
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
24 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
25 * TODO:
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
26 * - Add libbdnav support for menus navigation
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
27 * - Add AACS/BD+ protection detection
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
28 * - Add descrambled keys database support (KEYDB.cfg)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
29 *
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
30 */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
31
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
32 #include <libbluray/bluray.h>
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
33
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
34 #include "config.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
35 #include "libavutil/common.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
36 #include "libmpdemux/demuxer.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
37 #include "mp_msg.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
38 #include "help_mp.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
39 #include "m_struct.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
40 #include "m_option.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
41 #include "stream.h"
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
42
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
43 #define BLURAY_SECTOR_SIZE 6144
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
44
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
45 #define BLURAY_DEFAULT_ANGLE 0
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
46 #define BLURAY_DEFAULT_CHAPTER 0
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
47 #define BLURAY_DEFAULT_TITLE 0
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
48
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
49 int bluray_angle = 0;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
50 int bluray_chapter = 0;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
51
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
52 struct bluray_priv_s {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
53 BLURAY *bd;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
54 int current_angle;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
55 int current_chapter;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
56 int current_title;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
57 };
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
58
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
59 static struct stream_priv_s {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
60 int title;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
61 char *device;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
62 } bluray_stream_priv_dflts = {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
63 BLURAY_DEFAULT_TITLE,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
64 NULL
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
65 };
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
66
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
67 #define ST_OFF(f) M_ST_OFF(struct stream_priv_s,f)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
68 static const m_option_t bluray_stream_opts_fields[] = {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
69 { "hostname", ST_OFF(title), CONF_TYPE_INT, M_OPT_RANGE, 0, 99999, NULL},
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
70 { "filename", ST_OFF(device), CONF_TYPE_STRING, 0, 0 ,0, NULL},
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
71 { NULL, NULL, 0, 0, 0, 0, NULL }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
72 };
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
73
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
74 static const struct m_struct_st bluray_stream_opts = {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
75 "bluray",
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
76 sizeof(struct stream_priv_s),
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
77 &bluray_stream_priv_dflts,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
78 bluray_stream_opts_fields
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
79 };
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
80
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
81 static void bluray_stream_close(stream_t *s)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
82 {
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
83 struct bluray_priv_s *b = s->priv;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
84
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
85 bd_close(b->bd);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
86 b->bd = NULL;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
87 free(b);
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
88 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
89
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
90 static int bluray_stream_seek(stream_t *s, off_t pos)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
91 {
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
92 struct bluray_priv_s *b = s->priv;
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
93 off_t p;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
94
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
95 p = bd_seek(b->bd, pos);
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
96 if (p == -1)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
97 return 0;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
98
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
99 s->pos = p;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
100 return 1;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
101 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
102
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
103 static int bluray_stream_fill_buffer(stream_t *s, char *buf, int len)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
104 {
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
105 struct bluray_priv_s *b = s->priv;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
106
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
107 return bd_read(b->bd, buf, len);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
108 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
109
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
110 static int bluray_stream_control(stream_t *s, int cmd, void *arg)
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
111 {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
112 struct bluray_priv_s *b = s->priv;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
113
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
114 switch (cmd) {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
115
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
116 case STREAM_CTRL_GET_NUM_CHAPTERS: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
117 BLURAY_TITLE_INFO *ti;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
118
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
119 ti = bd_get_title_info(b->bd, b->current_title);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
120 if (!ti)
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
121 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
122
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
123 *((unsigned int *) arg) = ti->chapter_count;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
124 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
125
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
126 return 1;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
127 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
128
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
129 case STREAM_CTRL_GET_CURRENT_CHAPTER: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
130 *((unsigned int *) arg) = b->current_chapter;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
131 return 1;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
132 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
133
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
134 case STREAM_CTRL_SEEK_TO_CHAPTER: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
135 BLURAY_TITLE_INFO *ti;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
136 int chapter = *((unsigned int *) arg);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
137 int64_t pos;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
138 int r;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
139
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
140 ti = bd_get_title_info(b->bd, b->current_title);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
141 if (!ti)
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
142 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
143
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
144 if (chapter < 0 || chapter > ti->chapter_count) {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
145 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
146 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
147 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
148
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
149 pos = bd_chapter_pos(b->bd, chapter);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
150 r = bluray_stream_seek(s, pos);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
151 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
152
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
153 return r ? 1 : STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
154 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
155
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
156 case STREAM_CTRL_GET_NUM_ANGLES: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
157 BLURAY_TITLE_INFO *ti;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
158
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
159 ti = bd_get_title_info(b->bd, b->current_title);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
160 if (!ti)
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
161 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
162
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
163 *((int *) arg) = ti->angle_count;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
164 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
165
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
166 return 1;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
167 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
168
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
169 case STREAM_CTRL_GET_ANGLE: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
170 *((int *) arg) = b->current_angle;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
171 return 1;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
172 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
173
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
174 case STREAM_CTRL_SET_ANGLE: {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
175 BLURAY_TITLE_INFO *ti;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
176 int angle = *((int *) arg);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
177
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
178 ti = bd_get_title_info(b->bd, b->current_title);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
179 if (!ti)
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
180 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
181
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
182 if (angle < 0 || angle > ti->angle_count) {
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
183 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
184 return STREAM_UNSUPPORTED;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
185 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
186
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
187 b->current_angle = angle;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
188 bd_seamless_angle_change(b->bd, angle);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
189 bd_free_title_info(ti);
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
190
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
191 return 1;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
192 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
193
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
194 default:
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
195 break;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
196 }
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
197
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
198 return STREAM_UNSUPPORTED;
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
199 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
200
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
201 static int bluray_stream_open(stream_t *s, int mode,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
202 void *opts, int *file_format)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
203 {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
204 struct stream_priv_s *p = opts;
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
205 struct bluray_priv_s *b;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
206
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
207 BLURAY_TITLE_INFO *info = NULL;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
208 BLURAY *bd;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
209
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
210 int title, title_guess, title_count;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
211 uint64_t title_size;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
212
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
213 unsigned int chapter = 0, angle = 0;
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
214 uint64_t max_duration = 0;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
215 int64_t chapter_pos = 0;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
216
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
217 char *device = NULL;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
218 int i;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
219
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
220 /* find the requested device */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
221 if (p->device)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
222 device = p->device;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
223 else if (bluray_device)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
224 device = bluray_device;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
225
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
226 if (!device) {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
227 mp_msg(MSGT_OPEN, MSGL_ERR, MSGTR_BlurayNoDevice);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
228 return STREAM_UNSUPPORTED;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
229 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
230
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
231 /* open device */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
232 bd = bd_open(device, NULL);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
233 if (!bd) {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
234 mp_msg(MSGT_OPEN, MSGL_ERR, MSGTR_CantOpenBluray, device);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
235 return STREAM_UNSUPPORTED;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
236 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
237
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
238 /* check for available titles on disc */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
239 title_count = bd_get_titles(bd, TITLES_RELEVANT);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
240 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BLURAY_TITLES=%d\n", title_count);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
241 if (!title_count) {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
242 mp_msg(MSGT_OPEN, MSGL_ERR, MSGTR_BlurayNoTitles);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
243 bd_close(bd);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
244 return STREAM_UNSUPPORTED;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
245 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
246
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
247 /* parse titles information */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
248 title_guess = BLURAY_DEFAULT_TITLE;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
249 for (i = 0; i < title_count; i++) {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
250 BLURAY_TITLE_INFO *ti;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
251 int sec, msec;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
252
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
253 ti = bd_get_title_info(bd, i);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
254 if (!ti)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
255 continue;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
256
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
257 sec = ti->duration / 90000;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
258 msec = (ti->duration - sec) % 1000;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
259
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
260 mp_msg(MSGT_IDENTIFY, MSGL_INFO,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
261 "ID_BLURAY_TITLE_%d_CHAPTERS=%d\n", i + 1, ti->chapter_count);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
262 mp_msg(MSGT_IDENTIFY, MSGL_INFO,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
263 "ID_BLURAY_TITLE_%d_ANGLE=%d\n", i + 1, ti->angle_count);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
264 mp_msg(MSGT_IDENTIFY, MSGL_V,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
265 "ID_BLURAY_TITLE_%d_LENGTH=%d.%03d\n", i + 1, sec, msec);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
266
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
267 /* try to guess which title may contain the main movie */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
268 if (ti->duration > max_duration) {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
269 max_duration = ti->duration;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
270 title_guess = i;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
271 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
272
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
273 bd_free_title_info(ti);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
274 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
275
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
276 /* Select current title */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
277 title = p->title ? p->title - 1: title_guess;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
278 title = FFMIN(title, title_count - 1);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
279
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
280 bd_select_title(bd, title);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
281
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
282 title_size = bd_get_title_size(bd);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
283 mp_msg(MSGT_IDENTIFY, MSGL_INFO,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
284 "ID_BLURAY_CURRENT_TITLE=%d\n", title + 1);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
285
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
286 /* Get current title information */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
287 info = bd_get_title_info(bd, title);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
288 if (!info)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
289 goto err_no_info;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
290
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
291 /* Select chapter */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
292 chapter = bluray_chapter ? bluray_chapter : BLURAY_DEFAULT_CHAPTER;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
293 chapter = FFMIN(chapter, info->chapter_count);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
294
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
295 if (chapter)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
296 chapter_pos = bd_chapter_pos(bd, chapter);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
297
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
298 mp_msg(MSGT_IDENTIFY, MSGL_INFO,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
299 "ID_BLURAY_CURRENT_CHAPTER=%d\n", chapter + 1);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
300
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
301 /* Select angle */
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
302 angle = bluray_angle ? bluray_angle : BLURAY_DEFAULT_ANGLE;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
303 angle = FFMIN(angle, info->angle_count);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
304
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
305 if (angle)
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
306 bd_select_angle(bd, angle);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
307
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
308 mp_msg(MSGT_IDENTIFY, MSGL_INFO, "ID_BLURAY_CURRENT_ANGLE=%d\n", angle + 1);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
309
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
310 bd_free_title_info(info);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
311
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
312 err_no_info:
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
313 s->fill_buffer = bluray_stream_fill_buffer;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
314 s->seek = bluray_stream_seek;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
315 s->close = bluray_stream_close;
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
316 s->control = bluray_stream_control;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
317
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
318 b = calloc(1, sizeof(struct bluray_priv_s));
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
319 b->bd = bd;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
320 b->current_angle = angle;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
321 b->current_chapter = chapter;
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
322 b->current_title = title;
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
323
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
324 s->start_pos = chapter_pos;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
325 s->end_pos = title_size;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
326 s->sector_size = BLURAY_SECTOR_SIZE;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
327 s->flags = mode | MP_STREAM_SEEK;
31574
1d31cd52aa08 Implement slave mode compatible stream controls for Blu-ray.
ben
parents: 31565
diff changeset
328 s->priv = b;
31565
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
329 s->type = STREAMTYPE_BLURAY;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
330 s->url = strdup("br://");
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
331
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
332 mp_msg(MSGT_OPEN, MSGL_V, MSGTR_BlurayOK);
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
333
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
334 return STREAM_OK;
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
335 }
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
336
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
337 const stream_info_t stream_info_bluray = {
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
338 "Blu-ray Disc",
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
339 "bd",
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
340 "Benjamin Zores",
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
341 "Play Blu-ray discs through external libbluray",
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
342 bluray_stream_open,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
343 { "br", "bluray", NULL },
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
344 &bluray_stream_opts,
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
345 1
9a590e7aac57 Support for unencrypted Blu-ray playback through libbluray.
ben
parents:
diff changeset
346 };