# HG changeset patch # User pontscho # Date 1006338659 0 # Node ID b01551d725d45bfb9a185611f54ab23007115588 # Parent ef3b9b1046483647b7ce1895ee3c22773b89b340 add subtitle language detect. diff -r ef3b9b104648 -r b01551d725d4 libmpdemux/open.c --- 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 ); } /** diff -r ef3b9b104648 -r b01551d725d4 libmpdemux/stream.h --- 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