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 */