comparison stream/stream_dvdnav.c @ 21613:8547ae79e74b

simplified aid management in dvdnav_lang_from_aid(); patch by Joakim Patte
author nicodvb
date Fri, 15 Dec 2006 23:12:50 +0000
parents 4bfdaf8bcae5
children a6486d2975d2
comparison
equal deleted inserted replaced
21612:853c5dbaa91e 21613:8547ae79e74b
525 int dvdnav_lang_from_aid(stream_t *stream, int aid, unsigned char *buf) { 525 int dvdnav_lang_from_aid(stream_t *stream, int aid, unsigned char *buf) {
526 uint8_t lg; 526 uint8_t lg;
527 uint16_t lang; 527 uint16_t lang;
528 dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv; 528 dvdnav_priv_t * priv=(dvdnav_priv_t*)stream->priv;
529 529
530 if(aid >= 0x80 && aid < 0x88)
531 aid -= 0x80;
532 else if(aid >= 0x88 && aid <= 0x8F)
533 aid -= 0x88;
534 else if(aid >= 0xA0 && aid <= 0xAF)
535 aid -= 0xA0;
536 if(aid < 0) 530 if(aid < 0)
537 return 0; 531 return 0;
538 lg = dvdnav_get_audio_logical_stream(priv->dvdnav, aid); 532 lg = dvdnav_get_audio_logical_stream(priv->dvdnav, aid & 0x7);
539 if(lg == 0xff) return 0; 533 if(lg == 0xff) return 0;
540 lang = dvdnav_audio_stream_to_lang(priv->dvdnav, lg); 534 lang = dvdnav_audio_stream_to_lang(priv->dvdnav, lg);
541 if(lang == 0xffff) return 0; 535 if(lang == 0xffff) return 0;
542 buf[0] = lang >> 8; 536 buf[0] = lang >> 8;
543 buf[1] = lang & 0xFF; 537 buf[1] = lang & 0xFF;