Mercurial > libdvdnav.hg
diff dvdnav.c @ 266:21ba13a7b77a src
Implement:
uint16_t dvdnav_audio_stream_to_format(dvdnav_t *self, uint8_t stream);
| author | jcdutton |
|---|---|
| date | Thu, 14 Dec 2006 13:28:07 +0000 |
| parents | 99d33725395d |
| children | 77e472cef5f8 |
line wrap: on
line diff
--- a/dvdnav.c Mon Oct 03 21:07:14 2005 +0000 +++ b/dvdnav.c Thu Dec 14 13:28:07 2006 +0000 @@ -879,6 +879,48 @@ return attr.lang_code; } +uint16_t dvdnav_audio_stream_format(dvdnav_t *this, uint8_t stream) { + audio_attr_t attr; + uint16_t format; + + if(!this) { + printerr("Passed a NULL pointer."); + return -1; /* 0xffff */ + } + if(!this->started) { + printerr("Virtual DVD machine not started."); + return -1; /* 0xffff */ + } + + pthread_mutex_lock(&this->vm_lock); + attr = vm_get_audio_attr(this->vm, stream); + pthread_mutex_unlock(&this->vm_lock); + + switch(attr.audio_format) { + case 0: + format = DVDNAV_FORMAT_AC3; + break; + case 2: /* MPEG-1 or MPEG-2 without extension bitstream. */ + case 3: /* MPEG-2 with extension bitstream. */ + format = DVDNAV_FORMAT_MPEGAUDIO; + break; + case 4: + format = DVDNAV_FORMAT_LPCM; + break; + case 6: + format = DVDNAV_FORMAT_DTS; + break; + case 7: + format = DVDNAV_FORMAT_SDDS; + break; + default: + format = 0xffff; + break; + } + + return format; +} + uint16_t dvdnav_spu_stream_to_lang(dvdnav_t *this, uint8_t stream) { subp_attr_t attr;
