Mercurial > mplayer.hg
comparison stream/stream_dvdnav.c @ 21600:ca8327c8d1fb
added dvdnav_aid_from_lang() to support -alang
author | nicodvb |
---|---|
date | Thu, 14 Dec 2006 22:11:43 +0000 |
parents | a16219e6d656 |
children | 4bfdaf8bcae5 |
comparison
equal
deleted
inserted
replaced
21599:fe48c337a269 | 21600:ca8327c8d1fb |
---|---|
471 priv->mousex = x; | 471 priv->mousex = x; |
472 priv->mousey = y; | 472 priv->mousey = y; |
473 } | 473 } |
474 | 474 |
475 /** | 475 /** |
476 * \brief dvdnav_aid_from_lang() returns the audio id corresponding to the language code 'lang' | |
477 * \param stream: - stream pointer | |
478 * \param lang: 2-characters language code[s], eventually separated by spaces of commas | |
479 * \return -1 on error, current subtitle id if successful | |
480 */ | |
481 int dvdnav_aid_from_lang(stream_t *stream, unsigned char *language) { | |
482 dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; | |
483 int k; | |
484 uint8_t format, lg; | |
485 uint16_t lang, lcode;; | |
486 | |
487 #ifdef DVDNAV_FORMAT_AC3 | |
488 //this macro is defined only in libdvdnav-cvs | |
489 while(language && strlen(language)>=2) { | |
490 lcode = (language[0] << 8) | (language[1]); | |
491 for(k=0; k<32; k++) { | |
492 lg = dvdnav_get_audio_logical_stream(priv->dvdnav, k); | |
493 if(lg == 0xff) continue; | |
494 lang = dvdnav_audio_stream_to_lang(priv->dvdnav, lg); | |
495 if(lang != 0xFFFF && lang == lcode) { | |
496 format = dvdnav_audio_stream_format(priv->dvdnav, lg); | |
497 switch(format) { | |
498 case DVDNAV_FORMAT_AC3: | |
499 return k+128; | |
500 case DVDNAV_FORMAT_DTS: | |
501 return k+136; | |
502 case DVDNAV_FORMAT_LPCM: | |
503 return k+160; | |
504 case DVDNAV_FORMAT_MPEGAUDIO: | |
505 return k; | |
506 default: | |
507 return -1; | |
508 } | |
509 } | |
510 } | |
511 language += 2; | |
512 while(language[0]==',' || language[0]==' ') ++language; | |
513 } | |
514 #endif | |
515 return -1; | |
516 } | |
517 | |
518 | |
519 /** | |
476 * \brief dvdnav_sid_from_lang() returns the subtitle id corresponding to the language code 'lang' | 520 * \brief dvdnav_sid_from_lang() returns the subtitle id corresponding to the language code 'lang' |
477 * \param stream: - stream pointer | 521 * \param stream: - stream pointer |
478 * \param lang: 2-characters language code[s], eventually separated by spaces of commas | 522 * \param lang: 2-characters language code[s], eventually separated by spaces of commas |
479 * \return -1 on error, current subtitle id if successful | 523 * \return -1 on error, current subtitle id if successful |
480 */ | 524 */ |