[DVDnav-discuss] r913 - in trunk/libdvdnav2/src: dvdnav.c dvdnav.h

nicodvb subversion at mplayerhq.hu
Sun Apr 29 13:25:57 CEST 2007


Author: nicodvb
Date: Sun Apr 29 13:25:57 2007
New Revision: 913

Log:
implemented dvdnav_audio_stream_format() to identify the codec used

Modified:
   trunk/libdvdnav2/src/dvdnav.c
   trunk/libdvdnav2/src/dvdnav.h

Modified: trunk/libdvdnav2/src/dvdnav.c
==============================================================================
--- trunk/libdvdnav2/src/dvdnav.c	(original)
+++ trunk/libdvdnav2/src/dvdnav.c	Sun Apr 29 13:25:57 2007
@@ -879,6 +879,48 @@ uint16_t dvdnav_audio_stream_to_lang(dvd
   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;
   

Modified: trunk/libdvdnav2/src/dvdnav.h
==============================================================================
--- trunk/libdvdnav2/src/dvdnav.h	(original)
+++ trunk/libdvdnav2/src/dvdnav.h	Sun Apr 29 13:25:57 2007
@@ -70,6 +70,11 @@ typedef int32_t dvdnav_status_t;
 #define DVDNAV_STATUS_ERR 0
 #define DVDNAV_STATUS_OK  1
 
+#define DVDNAV_FORMAT_AC3 0
+#define DVDNAV_FORMAT_MPEGAUDIO 3
+#define DVDNAV_FORMAT_LPCM 4
+#define DVDNAV_FORMAT_DTS 5
+#define DVDNAV_FORMAT_SDDS 6
 
 /*********************************************************************
  * initialisation & housekeeping functions                           *
@@ -548,6 +553,12 @@ uint8_t dvdnav_get_video_scale_permissio
 uint16_t dvdnav_audio_stream_to_lang(dvdnav_t *self, uint8_t stream);
 
 /*
+ * Returns the format of *logical* audio stream 'stream'
+ * (returns 0xffff if no such stream).
+ */
+uint16_t dvdnav_audio_stream_format(dvdnav_t *self, uint8_t stream);
+
+/*
  * Converts a *logical* subpicture stream id into country code 
  * (returns 0xffff if no such stream).
  */



More information about the DVDnav-discuss mailing list