mirror of
https://github.com/mpv-player/mpv
synced 2024-12-25 08:12:17 +00:00
better nav highlight handling
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@21216 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
f313243ca1
commit
42eecb4f1b
14
libvo/sub.c
14
libvo/sub.c
@ -9,7 +9,8 @@
|
||||
#endif
|
||||
|
||||
#ifdef USE_DVDNAV
|
||||
#include <dvdnav.h>
|
||||
#include "stream/stream.h"
|
||||
#include "stream/stream_dvdnav.h"
|
||||
#define OSD_NAV_BOX_ALPHA 0x7f
|
||||
#endif
|
||||
|
||||
@ -199,13 +200,14 @@ inline static void vo_update_text_osd(mp_osd_obj_t* obj,int dxs,int dys){
|
||||
|
||||
#ifdef USE_DVDNAV
|
||||
inline static void vo_update_nav (mp_osd_obj_t *obj, int dxs, int dys) {
|
||||
extern dvdnav_highlight_event_t dvd_nav_hl;
|
||||
nav_highlight_t hl;
|
||||
int len;
|
||||
|
||||
obj->bbox.x1 = obj->x = dvd_nav_hl.sx;
|
||||
obj->bbox.y1 = obj->y = dvd_nav_hl.sy;
|
||||
obj->bbox.x2 = dvd_nav_hl.ex;
|
||||
obj->bbox.y2 = dvd_nav_hl.ey;
|
||||
mp_dvdnav_get_highlight (&hl);
|
||||
obj->bbox.x1 = obj->x = hl.sx;
|
||||
obj->bbox.y1 = obj->y = hl.sy;
|
||||
obj->bbox.x2 = hl.ex;
|
||||
obj->bbox.y2 = hl.ey;
|
||||
|
||||
alloc_buf (obj);
|
||||
len = obj->stride * (obj->bbox.y2 - obj->bbox.y1);
|
||||
|
@ -183,6 +183,10 @@ static int max_framesize=0;
|
||||
#include "stream/stream_dvd.h"
|
||||
#endif
|
||||
|
||||
#ifdef USE_DVDNAV
|
||||
#include "stream/stream_dvdnav.h"
|
||||
#endif
|
||||
|
||||
#include "libmpcodecs/dec_audio.h"
|
||||
#include "libmpcodecs/dec_video.h"
|
||||
#include "libmpcodecs/mp_image.h"
|
||||
@ -4698,9 +4702,10 @@ if(auto_quality>0){
|
||||
|
||||
#ifdef USE_DVDNAV
|
||||
if (stream->type == STREAMTYPE_DVDNAV) {
|
||||
extern int dvd_nav_hl_on;
|
||||
nav_highlight_t hl;
|
||||
|
||||
if (dvd_nav_hl_on)
|
||||
mp_dvdnav_get_highlight (&hl);
|
||||
if (hl.sx != 0 && hl.sy != 0) /* highlighting on */
|
||||
vo_osd_changed (OSDTYPE_DVDNAV);
|
||||
}
|
||||
#endif
|
||||
|
@ -46,8 +46,7 @@ static struct m_struct_st stream_opts = {
|
||||
};
|
||||
|
||||
int dvd_nav_still=0; /* are we on a still picture? */
|
||||
dvdnav_highlight_event_t dvd_nav_hl;
|
||||
int dvd_nav_hl_on = 0;
|
||||
static dvdnav_highlight_event_t dvd_nav_hl;
|
||||
|
||||
static int seek(stream_t *s, off_t newpos);
|
||||
|
||||
@ -129,7 +128,6 @@ static void dvdnav_get_highlight (dvdnav_priv_t *priv, dvdnav_highlight_event_t
|
||||
|
||||
hlev->palette = (btni->btn_coln == 0) ? 0 :
|
||||
pnavpci->hli.btn_colit.btn_coli[btni->btn_coln - 1][0];
|
||||
dvd_nav_hl_on = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -137,7 +135,6 @@ static void dvdnav_get_highlight (dvdnav_priv_t *priv, dvdnav_highlight_event_t
|
||||
hlev->sx = hlev->ex = 0;
|
||||
hlev->sy = hlev->ey = 0;
|
||||
hlev->palette = hlev->buttonN = 0;
|
||||
dvd_nav_hl_on = 0;
|
||||
}
|
||||
}
|
||||
|
||||
@ -494,6 +491,12 @@ int dvdnav_number_of_subs(stream_t *stream) {
|
||||
return n;
|
||||
}
|
||||
|
||||
void mp_dvdnav_get_highlight (nav_highlight_t *hl) {
|
||||
hl->sx = dvd_nav_hl.sx;
|
||||
hl->sy = dvd_nav_hl.sy;
|
||||
hl->ex = dvd_nav_hl.ex;
|
||||
hl->ey = dvd_nav_hl.ey;
|
||||
}
|
||||
|
||||
stream_info_t stream_info_dvdnav = {
|
||||
"DVDNAV stream",
|
||||
|
@ -9,6 +9,11 @@ typedef struct {
|
||||
int len; /* bytes in details */
|
||||
} dvdnav_event_t;
|
||||
|
||||
typedef struct {
|
||||
uint16_t sx, sy;
|
||||
uint16_t ex, ey;
|
||||
} nav_highlight_t;
|
||||
|
||||
typedef struct {
|
||||
dvdnav_t * dvdnav; /* handle to libdvdnav stuff */
|
||||
char * filename; /* path */
|
||||
@ -26,5 +31,6 @@ int dvdnav_number_of_subs(stream_t *stream);
|
||||
int dvdnav_sid_from_lang(stream_t *stream, unsigned char *language);
|
||||
int mp_dvdnav_handle_input(stream_t *stream, int cmd, int *button);
|
||||
void mp_dvdnav_update_mouse_pos(stream_t *stream, int32_t x, int32_t y, int* button);
|
||||
void mp_dvdnav_get_highlight (nav_highlight_t *hl);
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user