summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-21 10:30:59 +0000
committerpontscho <pontscho@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-21 10:30:59 +0000
commitb2a38b3ba0f5e60c34b257f9f788c227be991913 (patch)
treea3b31b319381a5c14f368037015cc311f78e8426
parent7fe0a4e7da17b0cc47a1277db464c6dcc5d0a2a8 (diff)
downloadmpv-b2a38b3ba0f5e60c34b257f9f788c227be991913.tar.bz2
mpv-b2a38b3ba0f5e60c34b257f9f788c227be991913.tar.xz
add subtitle language detect.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3049 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--libmpdemux/open.c37
-rw-r--r--libmpdemux/stream.h8
2 files changed, 43 insertions, 2 deletions
diff --git a/libmpdemux/open.c b/libmpdemux/open.c
index a41da05beb..bf1bd82012 100644
--- a/libmpdemux/open.c
+++ b/libmpdemux/open.c
@@ -208,7 +208,6 @@ if(dvd_title){
/**
* 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 @@ if(dvd_title){
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 );
}
/**
diff --git a/libmpdemux/stream.h b/libmpdemux/stream.h
index 749560b671..13541689e5 100644
--- a/libmpdemux/stream.h
+++ b/libmpdemux/stream.h
@@ -178,6 +178,11 @@ typedef struct {
} 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 @@ typedef struct {
// 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