changeset 11153:cb82b062188f

Support for VobSub-in-Matroska; parts outside of demux_mkv.cpp.
author mosu
date Thu, 16 Oct 2003 21:06:43 +0000
parents 03c259451c37
children 0e9ea2a3a220
files libmpdemux/matroska.h mplayer.c
diffstat 2 files changed, 20 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/matroska.h	Thu Oct 16 16:31:56 2003 +0000
+++ b/libmpdemux/matroska.h	Thu Oct 16 21:06:43 2003 +0000
@@ -44,5 +44,12 @@
 #define MKV_S_TEXTASCII  "S_TEXT/ASCII"
 #define MKV_S_TEXTUTF8   "S_TEXT/UTF8"
 #define MKV_S_TEXTSSA    "S_TEXT/SSA"
+#define MKV_S_VOBSUB     "S_VOBSUB"
+
+typedef struct {
+  char type;                    // t = text, v = VobSub
+  unsigned int palette[16];     // for VobSubs
+  int width, height;            // for VobSubs
+} mkv_sh_sub_t;
 
 #endif /* __MATROSKA_H */
--- a/mplayer.c	Thu Oct 16 16:31:56 2003 +0000
+++ b/mplayer.c	Thu Oct 16 21:06:43 2003 +0000
@@ -104,6 +104,9 @@
 static int last_dvb_step = 1;
 #endif
 
+#ifdef HAVE_MATROSKA
+#include "libmpdemux/matroska.h"
+#endif
 
 //**************************************************************************//
 //             Playtree
@@ -1602,6 +1605,16 @@
 }
 #endif
 
+#ifdef HAVE_MATROSKA
+if ((vo_spudec == NULL) && (demuxer->type == DEMUXER_TYPE_MATROSKA) &&
+    (d_dvdsub->sh != NULL) && (((mkv_sh_sub_t *)d_dvdsub->sh)->type == 'v')) {
+  current_module = "spudec_init_matroska";
+  vo_spudec = spudec_new_scaled(((mkv_sh_sub_t *)d_dvdsub->sh)->palette,
+                                ((mkv_sh_sub_t *)d_dvdsub->sh)->width,
+                                ((mkv_sh_sub_t *)d_dvdsub->sh)->height);
+}
+#endif
+
 if (vo_spudec==NULL) {
   current_module="spudec_init_normal";
   vo_spudec=spudec_new_scaled(NULL, sh_video->disp_w, sh_video->disp_h);