changeset 3048:b01551d725d4

add subtitle language detect.
author pontscho
date Wed, 21 Nov 2001 10:30:59 +0000
parents ef3b9b104648
children 2d2a1358d563
files libmpdemux/open.c libmpdemux/stream.h
diffstat 2 files changed, 43 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/libmpdemux/open.c	Wed Nov 21 09:48:52 2001 +0000
+++ b/libmpdemux/open.c	Wed Nov 21 10:30:59 2001 +0000
@@ -208,7 +208,6 @@
     /**
      * Check number of audio channels and types
      */
-//    fprintf( stderr,"[open] nr_audio streams: %d\n",vts_file->vtsi_mat->nr_of_vts_audio_streams );
     {
      int ac3aid = 128;
      int mpegaid = 0;
@@ -264,7 +263,41 @@
 	  d->nr_of_channels++;
 	 }
       }
-     mp_msg(MSGT_OPEN,MSGL_V,"[open] %d audio channel found on disk.\n",d->nr_of_channels );
+     mp_msg(MSGT_OPEN,MSGL_V,"[open] number of audio channels on disk: %d.\n",d->nr_of_channels );
+    }
+
+    /**
+     * Check number of subtitles and language
+     */
+    {
+     int i;
+
+     d->nr_of_subtitles=0;
+     for ( i=0;i<32;i++ )
+      if ( vts_file->vts_pgcit->pgci_srp[0].pgc->subp_control[i] & 0x80000000 )
+       {
+        subp_attr_t * subtitle = &vts_file->vtsi_mat->vts_subp_attr[i];
+	int language = 0;
+	char tmp[] = "unknown";
+	
+	if ( subtitle->type == 1 )
+	 {
+	  language=subtitle->lang_code;
+	  tmp[0]=language>>8;
+	  tmp[1]=language&0xff;
+	  tmp[2]=0;
+	 }
+	 
+	d->subtitles[ d->nr_of_subtitles ].language=language;
+	d->subtitles[ d->nr_of_subtitles ].id=d->nr_of_subtitles;
+	
+        mp_msg(MSGT_OPEN,MSGL_V,"[open] subtitle ( sid ): %d language: %s\n",
+	  d->nr_of_subtitles,
+	  tmp
+	  );
+        d->nr_of_subtitles++;
+       }
+     mp_msg(MSGT_OPEN,MSGL_V,"[open] number of subtitles on disk: %d\n",d->nr_of_subtitles );
     }
 
     /**
--- a/libmpdemux/stream.h	Wed Nov 21 09:48:52 2001 +0000
+++ b/libmpdemux/stream.h	Wed Nov 21 10:30:59 2001 +0000
@@ -178,6 +178,11 @@
 } audio_stream_t;
 
 typedef struct {
+ int id; // 0 - 31
+ int language;
+} subtitle_t;
+
+typedef struct {
   dvd_reader_t *dvd;
   dvd_file_t *title;
   ifo_handle_t *vmg_file;
@@ -196,6 +201,9 @@
 // audio datas
   int nr_of_channels;
   audio_stream_t audio_streams[8];
+// subtitles
+  int nr_of_subtitles;
+  subtitle_t subtitles[32];
 } dvd_priv_t;
 
 #endif