mplayer - pozice titulku
Jindrich Makovicka
makovick na kmlinux.fjfi.cvut.cz
Středa Květen 29 17:04:39 CEST 2002
Tomas Konir wrote:
> On Wed, 29 May 2002, marek cervenka wrote:
>
>
>>zdravim,
>>
>>chtel bych se zeptat zda nekdo resil problem s umistenim titulku v
>>mplayeru
>>standartne mplayer zobrazuje titulky v OSD primo ve filmu
>>s pozici lze jeste hybat parametrem -subpos (nicmene to neni to prave
>>orechove)
>>vetsina filmu ma nahore a dole cerny pruh, v kterem by titulky byly
>>asi lepe citelnejsi (myslim ze na win to umi napr. mdvd)
>>
>>diky za pripadne info
>>
>
>
> Resil jsem to a napsal maly patch, ktery pridava dolu prostor na titulky.
> je napsany pro XV a X11, ale nemel jsem cas ho napsat tak, aby fungoval i
> pri pouziti GUI. Pridava dva parametry -subbox "siclo v % z vysky filmu) a
> -autosubbox (prida tak velky prostor, aby dosahl rozmery monitoru).
> K nalezeni je na http://molly.vabo.cz/~moje/mplayer-subbox.diff a je
> oproti CVS (zatim ho udrzuju). Titulky se daji nahoru a dolu posouvat
> klavesami 'r' a 't' (ale to umi mplayer sam o sobe).
>
> MOJE
>
>
Ja to resim jeste trivialnejsim patchem (viz priloha) - kdyz zadate
parametr -blackstripes, tak se obraz doplni o cerne pruhy (pokud je to
potreba). krome toho jeste pridava jeden OSD level navic, ktery
zobrazuje i procenta a delku videa. Je to sice prasarna, ale zase
funguje i s GUI.
--
Jindrich Makovicka
------------- další část ---------------
diff -ur vanilla/MPlayer-0.90pre4/cfg-mplayer.h MPlayer-0.90pre4/cfg-mplayer.h
--- vanilla/MPlayer-0.90pre4/cfg-mplayer.h Mon May 13 00:17:28 2002
+++ MPlayer-0.90pre4/cfg-mplayer.h Wed May 29 14:02:23 2002
@@ -98,6 +98,7 @@
/* from libvo/aspect.c */
extern float monitor_aspect;
+extern int black_stripes;
/* from dec_audio, currently used for ac3surround decoder only */
extern int audio_output_channels;
@@ -219,6 +220,7 @@
{"screenh", &vo_screenheight, CONF_TYPE_INT, CONF_RANGE, 0, 4096, NULL},
// set aspect ratio of monitor - usefull for 16:9 TVout
{"monitoraspect", &monitor_aspect, CONF_TYPE_FLOAT, CONF_RANGE, 0.2, 3.0, NULL},
+ {"blackstripes", &black_stripes, CONF_TYPE_FLAG, 0, 0, 1, NULL},
// video mode switching: (x11,xv,dga)
{"vm", &vidmode, CONF_TYPE_FLAG, 0, 0, 1, NULL},
{"novm", &vidmode, CONF_TYPE_FLAG, 0, 1, 0, NULL},
Only in MPlayer-0.90pre4: config.h
Only in MPlayer-0.90pre4: config.mak
Only in MPlayer-0.90pre4: help_mp.h
Only in MPlayer-0.90pre4/libao2: config.mak
Only in MPlayer-0.90pre4/libvo: config.mak
diff -ur vanilla/MPlayer-0.90pre4/mplayer.c MPlayer-0.90pre4/mplayer.c
--- vanilla/MPlayer-0.90pre4/mplayer.c Thu May 9 10:59:07 2002
+++ MPlayer-0.90pre4/mplayer.c Wed May 29 14:05:34 2002
@@ -171,6 +171,7 @@
int use_gui=0;
+#define MAX_OSD_LEVEL 3
int osd_level=2;
// seek:
@@ -259,6 +260,8 @@
char *vobsub_name=NULL;
/*DSP!!char *dsp=NULL;*/
+int black_stripes;
+
extern char *vo_subdevice;
extern char *ao_subdevice;
@@ -1256,6 +1259,15 @@
current_module="init_video_filters";
sh_video->vfilter=vf_open_filter(NULL,"vo",video_out);
+if (black_stripes) {
+ char exargs[100];
+ if (sh_video->aspect > 0.01) {
+ sprintf(exargs, "-1:%d:-1:-1:1", (int)((double)sh_video->disp_w/monitor_aspect/sh_video->aspect));
+ } else {
+ sprintf(exargs, "-1:%d:-1:-1:1", (int)((double)sh_video->disp_w/monitor_aspect));
+ }
+ sh_video->vfilter=vf_open_filter(sh_video->vfilter,"expand",exargs);
+}
sh_video->vfilter=append_filters(sh_video->vfilter);
current_module="init_video_codec";
@@ -2050,7 +2062,7 @@
break;
case 'o': // toggle OSD
if(sh_video)
- osd_level=(osd_level+1)%3;
+ osd_level=(osd_level+1)%(MAX_OSD_LEVEL+1);
break;
case 'z':
sub_delay -= 0.1;
@@ -2330,9 +2342,9 @@
if(sh_video) {
int v = cmd->args[0].v.i;
if(v < 0)
- osd_level=(osd_level+1)%3;
+ osd_level=(osd_level+1)%(MAX_OSD_LEVEL+1);
else
- osd_level= v > 2 ? 2 : v;
+ osd_level= v > MAX_OSD_LEVEL ? MAX_OSD_LEVEL : v;
} break;
case MP_CMD_VOLUME : {
int v = cmd->args[0].v.i;
@@ -2857,9 +2869,23 @@
if (osd_show_av_delay) {
sprintf(osd_text_tmp, "A-V delay: %d ms",(int)(audio_delay*1000));
osd_show_av_delay--;
- } else if(osd_level>=2)
- sprintf(osd_text_tmp,"%c %02d:%02d:%02d",osd_function,pts/3600,(pts/60)%60,pts%60);
- else osd_text_tmp[0]=0;
+ } else if(osd_level>=2) {
+ int len=(demuxer->movi_end-demuxer->movi_start)>>8;
+ int pos=((demuxer->file_format==DEMUXER_TYPE_AVI)?demuxer->filepos:d_video->pos)>>8;
+ char perc_text_tmp[50];
+ if (len && osd_level >= 3) {
+ sprintf(perc_text_tmp, " - %d%%", pos*100/len);
+ } else {
+ sprintf(perc_text_tmp, "");
+ }
+ if (demuxer->file_format == DEMUXER_TYPE_AVI && osd_level >= 3) {
+ int len=sh_video->video.dwLength/sh_video->fps;
+ sprintf(osd_text_tmp,"%c %02d:%02d:%02d|%02d:%02d:%02d%s",osd_function,pts/3600,(pts/60)%60,pts%60,
+ len/3600,(len/60)%60,len%60,perc_text_tmp);
+ } else {
+ sprintf(osd_text_tmp,"%c %02d:%02d:%02d%s",osd_function,pts/3600,(pts/60)%60,pts%60,perc_text_tmp);
+ }
+ } else osd_text_tmp[0]=0;
if(strcmp(vo_osd_text, osd_text_tmp)) {
strcpy(vo_osd_text, osd_text_tmp);
Only in MPlayer-0.90pre4: mplayer.c.orig
Only in MPlayer-0.90pre4: mplayer.diff
Only in MPlayer-0.90pre4: version.h
Další informace o konferenci Linux