summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DOCS/man/en/mplayer.rst35
-rw-r--r--Makefile33
-rw-r--r--command.c79
-rwxr-xr-xconfigure133
-rw-r--r--etc/input.conf14
-rw-r--r--input/input.c4
-rw-r--r--input/input.h11
-rw-r--r--libmpdemux/demuxer.c2
-rw-r--r--mp_core.h6
-rw-r--r--mplayer.c241
-rw-r--r--parser-mpcmd.c8
-rw-r--r--stream/stream.c8
-rw-r--r--stream/stream.h1
-rw-r--r--stream/stream_dvdnav.c1027
-rw-r--r--stream/stream_dvdnav.h49
-rw-r--r--sub/sub.c62
-rw-r--r--sub/sub.h6
17 files changed, 15 insertions, 1704 deletions
diff --git a/DOCS/man/en/mplayer.rst b/DOCS/man/en/mplayer.rst
index 3c1ffe43f1..89c125a1e0 100644
--- a/DOCS/man/en/mplayer.rst
+++ b/DOCS/man/en/mplayer.rst
@@ -9,7 +9,7 @@ Synopsis
| **mplayer** [options] files
| **mplayer** [options] {group of files and options}
| **mplayer** [br]://[title][/device] [options]
-| **mplayer** [dvd|dvdnav]://[title|[start\_title]-end\_title][/device] [options]
+| **mplayer** dvd://[title|[start\_title]-end\_title][/device] [options]
| **mplayer** \vcd://track[/device]
| **mplayer** \tv://[channel][/input_id] [options]
| **mplayer** radio://[channel|frequency][/capture] [options]
@@ -239,30 +239,6 @@ n
u
Change channel list.
-(The following keys are only valid if you compiled with dvdnav support: They
-are used to navigate the menus.)
-
-keypad 8
- Select button up.
-
-keypad 2
- Select button down.
-
-keypad 4
- Select button left.
-
-keypad 6
- Select button right.
-
-keypad 5
- Return to main menu.
-
-keypad 7
- Return to nearest menu (the order of preference is: chapter->title->root).
-
-keypad ENTER
- Confirm choice.
-
mouse control
-------------
@@ -410,12 +386,6 @@ option. To end the profile, start another one or use the profile name
| vf=pp=hb/vb/dr/al/fd
| alang=en
|
-| [protocol.dvdnav]
-| profile-desc="profile for dvdnav:// streams"
-| profile=protocol.dvd
-| mouse-movements=yes
-| nocache=yes
-|
| [extension.flv]
| profile-desc="profile for .flv files"
| flip=yes
@@ -680,9 +650,6 @@ Play DVD video from a directory with VOB files:
Copy a DVD title to hard disk, saving to file title1.vob :
``mplayer dvd://1 --dumpstream --dumpfile=title1.vob``
-Play a DVD with dvdnav from path /dev/sr1:
- ``mplayer dvdnav:////dev/sr1``
-
Stream from HTTP:
``mplayer http://mplayer.hq/example.avi``
diff --git a/Makefile b/Makefile
index a679e8e7ca..567f22114d 100644
--- a/Makefile
+++ b/Makefile
@@ -31,29 +31,8 @@ SRCS_COMMON-$(CDDA) += stream/stream_cdda.c \
SRCS_COMMON-$(CDDB) += stream/stream_cddb.c
SRCS_COMMON-$(DVBIN) += stream/dvb_tune.c \
stream/stream_dvb.c
-SRCS_COMMON-$(DVDNAV) += stream/stream_dvdnav.c
-SRCS_COMMON-$(DVDNAV_INTERNAL) += libdvdnav/dvdnav.c \
- libdvdnav/highlight.c \
- libdvdnav/navigation.c \
- libdvdnav/read_cache.c \
- libdvdnav/remap.c \
- libdvdnav/searching.c \
- libdvdnav/settings.c \
- libdvdnav/vm/decoder.c \
- libdvdnav/vm/vm.c \
- libdvdnav/vm/vmcmd.c \
-
SRCS_COMMON-$(DVDREAD) += stream/stream_dvd.c \
stream/stream_dvd_common.c
-SRCS_COMMON-$(DVDREAD_INTERNAL) += libdvdread4/bitreader.c \
- libdvdread4/dvd_input.c \
- libdvdread4/dvd_reader.c \
- libdvdread4/dvd_udf.c \
- libdvdread4/ifo_print.c \
- libdvdread4/ifo_read.c \
- libdvdread4/md5.c \
- libdvdread4/nav_print.c \
- libdvdread4/nav_read.c \
SRCS_COMMON-$(FAAD) += libmpcodecs/ad_faad.c
@@ -78,11 +57,6 @@ SRCS_COMMON-$(LIBDCA) += libmpcodecs/ad_libdca.c
SRCS_COMMON-$(LIBDV) += libmpcodecs/ad_libdv.c \
libmpcodecs/vd_libdv.c \
libmpdemux/demux_rawdv.c
-SRCS_COMMON-$(LIBDVDCSS_INTERNAL) += libdvdcss/css.c \
- libdvdcss/device.c \
- libdvdcss/error.c \
- libdvdcss/ioctl.c \
- libdvdcss/libdvdcss.c \
SRCS_COMMON-$(LIBMAD) += libmpcodecs/ad_libmad.c
@@ -518,13 +492,6 @@ libmpcodecs/vf_fspp.o libmpcodecs/vf_mcdeint.o libmpcodecs/vf_spp.o: CFLAGS := -
osdep/mplayer-rc.o: osdep/mplayer.exe.manifest
-libdvdcss/%: CFLAGS := -Ilibdvdcss -D_GNU_SOURCE -DVERSION=\"1.2.10\" $(CFLAGS_LIBDVDCSS) $(CFLAGS)
-libdvdnav/%: CFLAGS := -Ilibdvdnav -D_GNU_SOURCE -DHAVE_CONFIG_H -DVERSION=\"MPlayer-custom\" $(CFLAGS)
-libdvdread4/%: CFLAGS := -Ilibdvdread4 -D_GNU_SOURCE $(CFLAGS_LIBDVDCSS_DVDREAD) $(CFLAGS)
-
-stream/stream_dvdnav%: CFLAGS := $(CFLAGS_LIBDVDNAV) $(CFLAGS)
-
-
###### installation / clean / generic rules #######
diff --git a/command.c b/command.c
index 5c77480bfe..48606be43c 100644
--- a/command.c
+++ b/command.c
@@ -65,7 +65,6 @@
#ifdef CONFIG_DVDREAD
#include "stream/stream_dvd.h"
#endif
-#include "stream/stream_dvdnav.h"
#include "m_struct.h"
#include "screenshot.h"
@@ -1690,10 +1689,9 @@ static int mp_property_sub(m_option_t *prop, int action, void *arg,
}
}
#ifdef CONFIG_DVDREAD
- if (vo_spudec
- && (mpctx->stream->type == STREAMTYPE_DVD
- || mpctx->stream->type == STREAMTYPE_DVDNAV)
- && opts->sub_id < 0 && reset_spu) {
+ if (vo_spudec && (mpctx->stream->type == STREAMTYPE_DVD)
+ && opts->sub_id < 0 && reset_spu)
+ {
d_sub->id = -2;
d_sub->sh = NULL;
}
@@ -2513,36 +2511,6 @@ static bool set_property_command(MPContext *mpctx, mp_cmd_t *cmd)
return 1;
}
-#ifdef CONFIG_DVDNAV
-static const struct {
- const char *name;
- const enum mp_command_type cmd;
-} mp_dvdnav_bindings[] = {
- { "up", MP_CMD_DVDNAV_UP },
- { "down", MP_CMD_DVDNAV_DOWN },
- { "left", MP_CMD_DVDNAV_LEFT },
- { "right", MP_CMD_DVDNAV_RIGHT },
- { "menu", MP_CMD_DVDNAV_MENU },
- { "select", MP_CMD_DVDNAV_SELECT },
- { "prev", MP_CMD_DVDNAV_PREVMENU },
- { "mouse", MP_CMD_DVDNAV_MOUSECLICK },
-
- /*
- * keep old dvdnav sub-command options for a while in order not to
- * break slave-mode API too suddenly.
- */
- { "1", MP_CMD_DVDNAV_UP },
- { "2", MP_CMD_DVDNAV_DOWN },
- { "3", MP_CMD_DVDNAV_LEFT },
- { "4", MP_CMD_DVDNAV_RIGHT },
- { "5", MP_CMD_DVDNAV_MENU },
- { "6", MP_CMD_DVDNAV_SELECT },
- { "7", MP_CMD_DVDNAV_PREVMENU },
- { "8", MP_CMD_DVDNAV_MOUSECLICK },
- { NULL, 0 }
-};
-#endif
-
static const char *property_error_string(int error_value)
{
switch (error_value) {
@@ -3392,50 +3360,9 @@ void run_command(MPContext *mpctx, mp_cmd_t *cmd)
pointer_x = cmd->args[0].v.i;
pointer_y = cmd->args[1].v.i;
rescale_input_coordinates(mpctx, pointer_x, pointer_y, &dx, &dy);
-#ifdef CONFIG_DVDNAV
- if (mpctx->stream->type == STREAMTYPE_DVDNAV
- && dx > 0.0 && dy > 0.0) {
- int button = -1;
- pointer_x = (int) (dx * (double) sh_video->disp_w);
- pointer_y = (int) (dy * (double) sh_video->disp_h);
- mp_dvdnav_update_mouse_pos(mpctx->stream,
- pointer_x, pointer_y, &button);
- if (opts->osd_level > 1 && button > 0)
- set_osd_msg(mpctx, OSD_MSG_TEXT, 1, osd_duration,
- "Selected button number %d", button);
- }
-#endif
break;
}
-#ifdef CONFIG_DVDNAV
- case MP_CMD_DVDNAV: {
- int button = -1;
- int i;
- enum mp_command_type command = 0;
- if (mpctx->stream->type != STREAMTYPE_DVDNAV)
- break;
-
- for (i = 0; mp_dvdnav_bindings[i].name; i++)
- if (cmd->args[0].v.s &&
- !strcasecmp(cmd->args[0].v.s,
- mp_dvdnav_bindings[i].name))
- command = mp_dvdnav_bindings[i].cmd;
-
- mp_dvdnav_handle_input(mpctx->stream, command, &button);
- if (opts->osd_level > 1 && button > 0)
- set_osd_msg(mpctx, OSD_MSG_TEXT, 1, osd_duration,
- "Selected button number %d", button);
- break;
- }
-
- case MP_CMD_SWITCH_TITLE:
- if (mpctx->stream->type == STREAMTYPE_DVDNAV)
- mp_dvdnav_switch_title(mpctx->stream, cmd->args[0].v.i);
- break;
-
-#endif
-
case MP_CMD_VO_CMDLINE:
if (mpctx->video_out) {
char *s = cmd->args[0].v.s;
diff --git a/configure b/configure
index ce7c4488e7..9946ca8234 100755
--- a/configure
+++ b/configure
@@ -325,10 +325,7 @@ Optional features:
--enable-lcms2 enable LCMS2 support [autodetect]
--disable-vcd disable VCD support [autodetect]
--disable-bluray disable Blu-ray support [autodetect]
- --disable-dvdnav disable libdvdnav [autodetect]
--disable-dvdread disable libdvdread [autodetect]
- --disable-dvdread-internal disable internal libdvdread [autodetect]
- --disable-libdvdcss-internal disable internal libdvdcss [autodetect]
--disable-cddb disable cddb [autodetect]
--disable-sortsub disable subtitle sorting [enabled]
--disable-enca disable ENCA charset oracle library [autodetect]
@@ -425,7 +422,6 @@ Use these options if autodetection fails:
--extra-libs=FLAGS extra linker flags
--extra-libs-mplayer=FLAGS extra linker flags for MPlayer
- --with-dvdnav-config=PATH path to dvdnav-config
--with-dvdread-config=PATH path to dvdread-config
This configure script is NOT autoconf-based, even though its output is similar.
@@ -482,12 +478,8 @@ _ladspa=auto
_libbs2b=auto
_vcd=auto
_bluray=auto
-_dvdnav=auto
-_dvdnavconfig=dvdnav-config
_dvdreadconfig=dvdread-config
_dvdread=auto
-_dvdread_internal=auto
-_libdvdcss_internal=auto
_live=no
_nemesi=auto
_lcms2=auto
@@ -579,10 +571,6 @@ for ac_option do
--with-install=*)
_install=$(echo $ac_option | cut -d '=' -f 2 )
;;
-
- --with-dvdnav-config=*)
- _dvdnavconfig=$(echo $ac_option | cut -d '=' -f 2)
- ;;
--with-dvdread-config=*)
_dvdreadconfig=$(echo $ac_option | cut -d '=' -f 2)
;;
@@ -718,12 +706,6 @@ for ac_option do
--disable-bluray) _bluray=no ;;
--enable-dvdread) _dvdread=yes ;;
--disable-dvdread) _dvdread=no ;;
- --enable-dvdread-internal) _dvdread_internal=yes ;;
- --disable-dvdread-internal) _dvdread_internal=no ;;
- --enable-libdvdcss-internal) _libdvdcss_internal=yes ;;
- --disable-libdvdcss-internal) _libdvdcss_internal=no ;;
- --enable-dvdnav) _dvdnav=yes ;;
- --disable-dvdnav) _dvdnav=no ;;
--enable-live) _live=yes ;;
--disable-live) _live=no ;;
--enable-nemesi) _nemesi=yes ;;
@@ -2852,44 +2834,15 @@ else
fi
echores "$_bluray"
+
echocheck "dvdread"
-if test "$_dvdread_internal" = auto && test ! -f "libdvdread4/dvd_reader.c" ; then
- _dvdread_internal=no
-fi
-if test "$_dvdread_internal" = auto ; then
- _dvdread_internal=no
- _dvdread=no
- if (linux || freebsd || netbsd || openbsd || dragonfly) &&
- (test "$_dvd" = yes || test "$_cdrom" = yes || test "$_cdio" = yes ||
- test "$_dvdio" = yes || test "$_bsdi_dvd" = yes) ||
- darwin || win32; then
- _dvdread_internal=yes
- _dvdread=yes
- extra_cflags="-Ilibdvdread4 $extra_cflags"
- fi
-elif test "$_dvdread" = auto ; then
+if test "$_dvdread" = auto ; then
_dvdread=no
- if test "$_dl" = yes; then
- _dvdreadcflags=$($_dvdreadconfig --cflags 2> /dev/null)
- _dvdreadlibs=$($_dvdreadconfig --libs 2> /dev/null)
- if header_check dvdread/dvd_reader.h $_dvdreadcflags $_dvdreadlibs $_ld_dl ; then
- _dvdread=yes
- extra_cflags="$extra_cflags $_dvdreadcflags"
- extra_ldflags="$extra_ldflags $_dvdreadlibs"
- res_comment="external"
- fi
- fi
+ pkg_config_add 'dvdread >= 4.2.0' && _dvdread=yes
fi
-
-if test "$_dvdread_internal" = yes; then
+if test "$_dvdread" = yes ; then
def_dvdread='#define CONFIG_DVDREAD 1'
- inputmodules="dvdread(internal) $inputmodules"
- res_comment="internal"
-elif test "$_dvdread" = yes; then
- def_dvdread='#define CONFIG_DVDREAD 1'
- extra_ldflags="$extra_ldflags -ldvdread"
- inputmodules="dvdread(external) $inputmodules"
- res_comment="external"
+ inputmodules="dvdread $inputmodules"
else
def_dvdread='#undef CONFIG_DVDREAD'
noinputmodules="dvdread $noinputmodules"
@@ -2897,32 +2850,6 @@ fi
echores "$_dvdread"
-echocheck "internal libdvdcss"
-if test "$_libdvdcss_internal" = auto ; then
- _libdvdcss_internal=no
- test "$_dvdread_internal" = yes && test -d libdvdcss && _libdvdcss_internal=yes
-fi
-if test "$_libdvdcss_internal" = yes ; then
- if linux || netbsd || openbsd ; then
- def_dvd_linux='#define HAVE_LINUX_DVD_STRUCT 1'
- openbsd && def_dvd_openbsd='#define HAVE_OPENBSD_DVD_STRUCT 1'
- elif freebsd || dragonfly ; then
- def_dvd_bsd='#define HAVE_BSD_DVD_STRUCT 1'
- elif darwin ; then
- def_dvd_darwin='#define DARWIN_DVD_IOCTL'
- extra_ldflags="$extra_ldflags -framework IOKit -framework Carbon"
- elif cygwin ; then
- cflags_libdvdcss="-DSYS_CYGWIN -DWIN32"
- fi
- cflags_libdvdcss_dvdread="-Ilibdvdcss"
- def_dvdcss="#define HAVE_DVDCSS_DVDCSS_H 1"
- inputmodules="libdvdcss(internal) $inputmodules"
-else
- noinputmodules="libdvdcss(internal) $noinputmodules"
-fi
-echores "$_libdvdcss_internal"
-
-
echocheck "libcdio"
if test "$_libcdio" = auto ; then
_libcdio=no
@@ -3575,49 +3502,7 @@ CFLAGS="$CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE
CXXFLAGS=" $CFLAGS -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS"
-# This must be the last test to be performed. Any other tests following it
-# could fail due to linker errors. libdvdnavmini is intentionally not linked
-# against libdvdread (to permit MPlayer to use its own copy of the library).
-# So any compilation using the flags added here but not linking against
-# libdvdread can fail.
-echocheck "DVD support (libdvdnav)"
-if test "$_dvdread_internal" = yes && test ! -f "libdvdnav/dvdnav.c" ; then
- _dvdnav=no
-fi
-dvdnav_internal=no
-if test "$_dvdnav" = auto ; then
- if test "$_dvdread_internal" = yes ; then
- _dvdnav=yes
- dvdnav_internal=yes
- res_comment="internal"
- else
- $_dvdnavconfig --version --minilibs >> $TMPLOG 2>&1 || _dvdnav=no
- fi
-fi
-if test "$_dvdnav" = auto ; then
- _dvdnav=no
- _dvdnavdir=$($_dvdnavconfig --cflags)
- _dvdnavlibs=$($_dvdnavconfig --libs)
- statement_check_broken stdint.h dvdnav/dvdnav.h 'dvdnav_t *dvd = 0' $_dvdnavdir $_dvdnavlibs $_ld_dl $_ld_pthread && _dvdnav=yes
-fi
-if test "$_dvdnav" = yes ; then
- def_dvdnav='#define CONFIG_DVDNAV 1'
- if test "$dvdnav_internal" = yes ; then
- cflags_libdvdnav="-Ilibdvdnav"
- inputmodules="dvdnav(internal) $inputmodules"
- else
- extra_cflags="$extra_cflags $($_dvdnavconfig --cflags)"
- extra_ldflags="$extra_ldflags $($_dvdnavconfig --minilibs)"
- inputmodules="dvdnav $inputmodules"
- fi
-else
- def_dvdnav='#undef CONFIG_DVDNAV'
- noinputmodules="dvdnav $noinputmodules"
-fi
-echores "$_dvdnav"
-
# DO NOT ADD ANY TESTS THAT USE LINKER FLAGS HERE (like cc_check).
-# Read dvdnav comment above.
mak_enable () {
list=$(echo $1 | tr '[a-z]' '[A-Z]')
@@ -3667,7 +3552,6 @@ DEPFLAGS = $DEPFLAGS
CFLAGS_LIBDVDCSS = $cflags_libdvdcss
CFLAGS_LIBDVDCSS_DVDREAD = $cflags_libdvdcss_dvdread
-CFLAGS_LIBDVDNAV = $cflags_libdvdnav
EXTRALIBS = $extra_ldflags $_ld_static $_ld_lm $extra_libs
EXTRALIBS_MPLAYER = $libs_mplayer
@@ -3705,10 +3589,7 @@ DIRECT3D = $_direct3d
DIRECTFB = $_directfb
DIRECTX = $_directx
DVBIN = $_dvbin
-DVDNAV = $_dvdnav
-DVDNAV_INTERNAL = $dvdnav_internal
DVDREAD = $_dvdread
-DVDREAD_INTERNAL = $_dvdread_internal
DXR3 = $_dxr3
FAAD = $_faad
FTP = $_ftp
@@ -3731,7 +3612,6 @@ LIBBLURAY = $_bluray
LIBBS2B = $_libbs2b
LIBDCA = $_libdca
LIBDV = $_libdv
-LIBDVDCSS_INTERNAL = $_libdvdcss_internal
LIBMAD = $_mad
LIBNEMESI = $_nemesi
LCMS2 = $_lcms2
@@ -3835,8 +3715,6 @@ $def_translation
/* libdvdread */
#define STDC_HEADERS 1
#define HAVE_MEMCPY 1
-/* libdvdnav */
-#define READ_CACHE_TRACE 0
/* libdvdread */
#define HAVE_DLFCN_H 1
$def_dvdcss
@@ -3916,7 +3794,6 @@ $def_dvd_darwin
$def_dvd_linux
$def_dvd_openbsd
$def_dvdio
-$def_dvdnav
$def_dvdread
$def_vcd
diff --git a/etc/input.conf b/etc/input.conf
index 91eb098134..a7732acf01 100644
--- a/etc/input.conf
+++ b/etc/input.conf
@@ -135,20 +135,6 @@ n tv_step_norm
u tv_step_chanlist
#
-# DVDNAV
-# Requires dvdnav://
-#
-
-KP8 {dvdnav} dvdnav up
-KP2 {dvdnav} dvdnav down
-KP4 {dvdnav} dvdnav left
-KP6 {dvdnav} dvdnav right
-KP5 {dvdnav} dvdnav menu
-KP_ENTER {dvdnav} dvdnav select
-MOUSE_BTN0 {dvdnav} dvdnav mouse
-KP7 {dvdnav} dvdnav prev
-
-#
# Apple Remote section
#
diff --git a/input/input.c b/input/input.c
index 690321f7fe..98b135c349 100644
--- a/input/input.c
+++ b/input/input.c
@@ -197,10 +197,6 @@ static const mp_cmd_t mp_cmds[] = {
{ MP_CMD_RUN, "run", { ARG_STRING } },
{ MP_CMD_VF_CHANGE_RECTANGLE, "change_rectangle", { ARG_INT, ARG_INT } },
-#ifdef CONFIG_DVDNAV
- { MP_CMD_DVDNAV, "dvdnav", { ARG_STRING } },
-#endif
-
{ MP_CMD_GET_VO_FULLSCREEN, "get_vo_fullscreen", },
{ MP_CMD_GET_SUB_VISIBILITY, "get_sub_visibility", },
{ MP_CMD_KEYDOWN_EVENTS, "key_down_event", { ARG_INT } },
diff --git a/input/input.h b/input/input.h
index 0fccbb5233..04cefab46e 100644
--- a/input/input.h
+++ b/input/input.h
@@ -44,7 +44,6 @@ enum mp_command_type {
MP_CMD_TV_STEP_CHANNEL_LIST,
MP_CMD_VO_FULLSCREEN,
MP_CMD_SUB_POS,
- MP_CMD_DVDNAV,
MP_CMD_SCREENSHOT,
MP_CMD_PANSCAN,
MP_CMD_MUTE,
@@ -130,16 +129,6 @@ enum mp_command_type {
MP_CMD_SWITCH_TITLE,
MP_CMD_STOP,
- /// DVDNAV commands
- MP_CMD_DVDNAV_UP = 1000,
- MP_CMD_DVDNAV_DOWN,
- MP_CMD_DVDNAV_LEFT,
- MP_CMD_DVDNAV_RIGHT,
- MP_CMD_DVDNAV_MENU,
- MP_CMD_DVDNAV_SELECT,
- MP_CMD_DVDNAV_PREVMENU,
- MP_CMD_DVDNAV_MOUSECLICK,
-
/// DVB commands
MP_CMD_DVB_SET_CHANNEL = 5101,
diff --git a/libmpdemux/demuxer.c b/libmpdemux/demuxer.c
index 078699fad7..51d7a45cb4 100644
--- a/libmpdemux/demuxer.c
+++ b/libmpdemux/demuxer.c
@@ -1145,7 +1145,7 @@ int demux_seek(demuxer_t *demuxer, float rel_seek_secs, float audio_delay,
* (nothing actually implements DEMUXER_CTRL_RESYNC now).
*/
struct stream *stream = demuxer->stream;
- if (stream->type == STREAMTYPE_DVD || stream->type == STREAMTYPE_DVDNAV) {
+ if (stream->type == STREAMTYPE_DVD) {
double pts;
if (flags & SEEK_ABSOLUTE)
diff --git a/mp_core.h b/mp_core.h
index 466bbfdf04..6d19426295 100644
--- a/mp_core.h
+++ b/mp_core.h
@@ -214,12 +214,6 @@ typedef struct MPContext {
struct screenshot_ctx *screenshot_ctx;
-#ifdef CONFIG_DVDNAV
- struct mp_image *nav_smpi; ///< last decoded dvdnav video image
- unsigned char *nav_buffer; ///< last read dvdnav video frame
- unsigned char *nav_start; ///< pointer to last read video buffer
- int nav_in_size; ///< last read size
-#endif
} MPContext;
diff --git a/mplayer.c b/mplayer.c
index e280a1e20c..a15d9ea385 100644
--- a/mplayer.c
+++ b/mplayer.c
@@ -146,7 +146,6 @@ static int max_framesize = 0;
#ifdef CONFIG_DVDREAD
#include "stream/stream_dvd.h"
#endif
-#include "stream/stream_dvdnav.h"
#include "libmpcodecs/dec_audio.h"
#include "libmpcodecs/dec_video.h"
@@ -526,19 +525,6 @@ static void print_file_properties(struct MPContext *mpctx, const char *filename)
/// step size of mixer changes
int volstep = 3;
-#ifdef CONFIG_DVDNAV
-static void mp_dvdnav_context_free(MPContext *ctx)
-{
- if (ctx->nav_smpi)
- free_mp_image(ctx->nav_smpi);
- ctx->nav_smpi = NULL;
- free(ctx->nav_buffer);
- ctx->nav_buffer = NULL;
- ctx->nav_start = NULL;
- ctx->nav_in_size = 0;
-}
-#endif
-
static void uninit_subs(struct demuxer *demuxer)
{
for (int i = 0; i < MAX_S_STREAMS; i++) {
@@ -615,9 +601,6 @@ void uninit_player(struct MPContext *mpctx, unsigned int mask)
mpctx->initialized_flags &= ~INITIALIZED_VO;
vo_destroy(mpctx->video_out);
mpctx->video_out = NULL;
-#ifdef CONFIG_DVDNAV
- mp_dvdnav_context_free(mpctx);
-#endif
}
// Must be after libvo uninit, as few vo drivers (svgalib) have tty code.
@@ -953,13 +936,6 @@ void init_vo_spudec(struct MPContext *mpctx)
}
#endif
-#ifdef CONFIG_DVDNAV
- if (vo_spudec == NULL && mpctx->stream->type == STREAMTYPE_DVDNAV) {
- unsigned int *palette = mp_dvdnav_get_spu_clut(mpctx->stream);
- vo_spudec = spudec_new_scaled(palette, width, height, NULL, 0);
- }
-#endif
-
if (vo_spudec == NULL) {
sh_sub_t *sh = mpctx->d_sub->sh;
vo_spudec = spudec_new_scaled(NULL, width, height, sh->extradata,
@@ -1854,149 +1830,6 @@ static int select_subtitle(MPContext *mpctx)
return found;
}
-#ifdef CONFIG_DVDNAV
-#ifndef FF_B_TYPE
-#define FF_B_TYPE 3
-#endif
-/// store decoded video image
-static mp_image_t *mp_dvdnav_copy_mpi(mp_image_t *to_mpi,
- mp_image_t *from_mpi)
-{
- mp_image_t *mpi;
-
- /// Do not store B-frames
- if (from_mpi->pict_type == FF_B_TYPE)
- return to_mpi;
-
- if (to_mpi &&
- to_mpi->w == from_mpi->w &&
- to_mpi->h == from_mpi->h &&
- to_mpi->imgfmt == from_mpi->imgfmt)
- mpi = to_mpi;
- else {
- if (to_mpi)
- free_mp_image(to_mpi);
- if (from_mpi->w == 0 || from_mpi->h == 0)
- return NULL;
- mpi = alloc_mpi(from_mpi->w, from_mpi->h, from_mpi->imgfmt);
- }
-
- copy_mpi(mpi, from_mpi);
- return mpi;
-}
-
-static void mp_dvdnav_reset_stream(MPContext *ctx)
-{
- struct MPOpts *opts = &ctx->opts;
- if (ctx->sh_video) {
- /// clear video pts
- ctx->d_video->pts = 0.0f;
- ctx->sh_video->pts = 0.0f;
- ctx->sh_video->i_pts = 0.0f;
- ctx->sh_video->last_pts = 0.0f;
- ctx->sh_video->num_buffered_pts = 0;
- ctx->sh_video->num_frames = 0;
- ctx->sh_video->num_frames_decoded = 0;
- ctx->sh_video->timer = 0.0f;
- ctx->sh_video->stream_delay = 0.0f;
- ctx->sh_video->timer = 0;
- ctx->demuxer->stream_pts = MP_NOPTS_VALUE;
- }
-
- if (ctx->sh_audio) {
- /// free audio packets and reset
- ds_free_packs(ctx->d_audio);
- audio_delay -= ctx->sh_audio->stream_delay;
- ctx->delay = -audio_delay;
- ao_reset(ctx->ao);
- resync_audio_stream(ctx->sh_audio);
- }
-
- audio_delay = 0.0f;
- ctx->sub_counts[SUB_SOURCE_DEMUX] = mp_dvdnav_number_of_subs(ctx->stream);
- if (opts->sub_lang && opts->sub_id == dvdsub_lang_id) {
- dvdsub_lang_id = mp_dvdnav_sid_from_lang(ctx->stream, opts->sub_lang);
- if (dvdsub_lang_id != opts->sub_id) {
- opts->sub_id = dvdsub_lang_id;
- select_subtitle(ctx);
- }
- }
-
- /// clear all EOF related flags
- ctx->d_video->eof = ctx->d_audio->eof = ctx->stream->eof = 0;
-}
-
-/// Restore last decoded DVDNAV (still frame)
-static mp_image_t *mp_dvdnav_restore_smpi(struct MPContext *mpctx,
- int *in_size,
- unsigned char **start,
- mp_image_t *decoded_frame)
-{
- if (mpctx->stream->type != STREAMTYPE_DVDNAV)
- return decoded_frame;
-
- /// a change occurred in dvdnav stream
- if (mp_dvdnav_cell_has_changed(mpctx->stream, 0)) {
- mp_dvdnav_read_wait(mpctx->stream, 1, 1);
- mp_dvdnav_context_free(mpctx);
- mp_dvdnav_reset_stream(mpctx);
- mp_dvdnav_read_wait(mpctx->stream, 0, 1);
- mp_dvdnav_cell_has_changed(mpctx->stream, 1);
- }
-
- if (*in_size < 0) {
- float len;
-
- /// Display still frame, if any
- if (mpctx->nav_smpi && !mpctx->nav_buffer)
- decoded_frame = mpctx->nav_smpi;
-
- /// increment video frame : continue playing after still frame
- len = get_time_length(mpctx);
- if (mpctx->sh_video->pts >= len &&
- mpctx->sh_video->pts > 0.0 && len > 0.0) {
- mp_dvdnav_skip_still(mpctx->stream);
- mp_dvdnav_skip_wait(mpctx->stream);
- }
- mpctx->sh_video->pts += 1 / mpctx->sh_video->fps;
-
- if (mpctx->nav_buffer) {
- *start = mpctx->nav_start;
- *in_size = mpctx->nav_in_size;
- if (mpctx->nav_start)
- memcpy(*start, mpctx->nav_buffer, mpctx->nav_in_size);
- }
- }
-
- return decoded_frame;
-}
-
-/// Save last decoded DVDNAV (still frame)
-static void mp_dvdnav_save_smpi(struct MPContext *mpctx, int in_size,
- unsigned char *start,
- mp_image_t *decoded_frame)
-{
- if (mpctx->stream->type != STREAMTYPE_DVDNAV)
- return;
-
- free(mpctx->nav_buffer);
- mpctx->nav_buffer = NULL;
- mpctx->nav_start = NULL;
- mpctx->nav_in_size = -1;
-
- if (in_size > 0)
- mpctx->nav_buffer = malloc(in_size);
- if (mpctx->nav_buffer) {
- mpctx->nav_start = start;
- mpctx->nav_in_size = in_size;
- memcpy(mpctx->nav_buffer, start, in_size);
- }
-
- if (decoded_frame && mpctx->nav_smpi != decoded_frame)
- mpctx->nav_smpi = mp_dvdnav_copy_mpi(mpctx->nav_smpi, decoded_frame);
-}
-#endif /* CONFIG_DVDNAV */
-
/* Modify video timing to match the audio timeline. There are two main
* reasons this is needed. First, video and audio can start from different
* positions at beginning of file or after a seek (MPlayer starts both
@@ -2365,20 +2198,8 @@ static double update_video_nocorrect_pts(struct MPContext *mpctx)
while (!in_size)
in_size = video_read_frame(sh_video, &sh_video->next_frame_time,
&packet, force_fps);
- if (in_size < 0) {
-#ifdef CONFIG_DVDNAV
- if (mpctx->stream->type == STREAMTYPE_DVDNAV) {
- if (mp_dvdnav_is_eof(mpctx->stream))
- return -1;
- if (mpctx->d_video)
- mpctx->d_video->eof = 0;
- if (mpctx->d_audio)
- mpctx->d_audio->eof = 0;
- mpctx->stream->eof = 0;
- } else
-#endif
+ if (in_size < 0)
return -1;
- }
if (in_size > max_framesize)
max_framesize = in_size;
sh_video->timer += frame_time;
@@ -2389,16 +2210,8 @@ static double update_video_nocorrect_pts(struct MPContext *mpctx)
int framedrop_type = check_framedrop(mpctx, frame_time);
void *decoded_frame;
-#ifdef CONFIG_DVDNAV
- decoded_frame = mp_dvdnav_restore_smpi(mpctx, &in_size, &packet, NULL);
- if (in_size >= 0 && !decoded_frame)
-#endif
decoded_frame = decode_video(sh_video, sh_video->ds->current, packet,
in_size, framedrop_type, sh_video->pts);
-#ifdef CONFIG_DVDNAV
- // Save last still frame for future display
- mp_dvdnav_save_smpi(mpctx, in_size, packet, decoded_frame);
-#endif
if (decoded_frame) {
filter_video(sh_video, decoded_frame, sh_video->pts);
}
@@ -3195,30 +3008,6 @@ static void run_playloop(struct MPContext *mpctx)
break;
} // video
-#ifdef CONFIG_DVDNAV
- if (mpctx->stream->type == STREAMTYPE_DVDNAV) {
- nav_highlight_t hl;
- mp_dvdnav_get_highlight(mpctx->stream, &hl);
- if (!vo_spudec || !spudec_apply_palette_crop(vo_spudec, hl.palette, hl.sx, hl.sy, hl.ex, hl.ey)) {
- osd_set_nav_box(hl.sx, hl.sy, hl.ex, hl.ey);
- vo_osd_changed(OSDTYPE_DVDNAV);
- } else {
- osd_set_nav_box(0, 0, 0, 0);
- vo_osd_changed(OSDTYPE_DVDNAV);
- vo_osd_changed(OSDTYPE_SPU);
- }
-
- if (mp_dvdnav_stream_has_changed(mpctx->stream)) {
- double ar = -1.0;
- if (mpctx->sh_video &&
- stream_control(mpctx->demuxer->stream,
- STREAM_CTRL_GET_ASPECT_RATIO, &ar)
- != STREAM_UNSUPPORTED)
- mpctx->sh_video->stream_aspect = ar;
- }
- }
-#endif
-
if (mpctx->sh_audio && (mpctx->restart_playback ? !video_left :
mpctx->ao->untimed && (mpctx->delay <= 0 ||
!video_left))) {
@@ -3635,21 +3424,6 @@ static void play_current_file(struct MPContext *mpctx)
}
#endif
-#ifdef CONFIG_DVDNAV
- if (mpctx->stream->type == STREAMTYPE_DVDNAV) {
- if (opts->audio_lang && opts->audio_id == -1)
- opts->audio_id = mp_dvdnav_aid_from_lang(mpctx->stream,
- opts->audio_lang);
- dvdsub_lang_id = -3;
- if (opts->sub_lang && opts->sub_id == -1)
- dvdsub_lang_id = opts->sub_id = mp_dvdnav_sid_from_lang(
- mpctx->stream, opts->sub_lang);
- // setup global sub numbering
- mpctx->sub_counts[SUB_SOURCE_DEMUX] = mp_dvdnav_number_of_subs(
- mpctx->stream);
- }
-#endif
-
// CACHE2: initial prefill: 20% later: 5% (should be set by -cacheopts)
goto_enable_cache:
if (stream_cache_size > 0) {
@@ -3763,8 +3537,7 @@ goto_enable_cache:
demux_info_print(mpctx->demuxer);
//================= Read SUBTITLES (DVD & TEXT) =========================
- if (vo_spudec == NULL && (mpctx->stream->type == STREAMTYPE_DVD
- || mpctx->stream->type == STREAMTYPE_DVDNAV))
+ if (vo_spudec == NULL && (mpctx->stream->type == STREAMTYPE_DVD))
init_vo_spudec(mpctx);
open_subtitles_from_options(mpctx);
@@ -3844,8 +3617,6 @@ goto_enable_cache:
//TODO: add desired (stream-based) sections here
if (mpctx->stream->type == STREAMTYPE_TV)
mp_input_set_section(mpctx->input, "tv");