diff dvdnav.c @ 55:5674fbd44f26 src

report all spu types (widescreen, letterbox and pan&scan), not widescreen only and report the stream's scale permissions to detect pan&scan material
author mroi
date Fri, 05 Jul 2002 14:18:55 +0000
parents cea44c0d638a
children 18af52093d13
line wrap: on
line diff
--- a/dvdnav.c	Fri Jul 05 01:42:30 2002 +0000
+++ b/dvdnav.c	Fri Jul 05 14:18:55 2002 +0000
@@ -102,7 +102,7 @@
   if(subp_num >= vtsi->vtsi_mat->nr_of_vts_subp_streams)
     return -1;
   
-  return vm_get_subp_stream(this->vm, subp_num);
+  return vm_get_subp_stream(this->vm, subp_num, 0);
 }
 
 static int8_t NLCK_dvdnav_get_active_spu_stream(dvdnav_t *this) {
@@ -134,6 +134,16 @@
   return retval;
 }
 
+uint8_t dvdnav_get_video_scale_permission(dvdnav_t *this) {
+  uint8_t         retval;
+  
+  pthread_mutex_lock(&this->vm_lock); 
+  retval = (uint8_t) vm_get_video_scale_permission(this->vm);
+  pthread_mutex_unlock(&this->vm_lock); 
+  
+  return retval;
+}
+
 dvdnav_status_t dvdnav_clear(dvdnav_t * this) {
   if (!this) {
     printerr("Passed a NULL pointer");
@@ -553,14 +563,16 @@
   }
   
   if(this->position_current.spu_channel != this->position_next.spu_channel) {
-    dvdnav_stream_change_event_t stream_change;
+    dvdnav_spu_stream_change_event_t stream_change;
     (*event) = DVDNAV_SPU_STREAM_CHANGE;
 #ifdef LOG_DEBUG
     fprintf(stderr,"libdvdnav:SPU_STREAM_CHANGE\n");
 #endif
-    (*len) = sizeof(dvdnav_stream_change_event_t);
-    stream_change.physical = vm_get_subp_active_stream( this->vm );
-    memcpy(buf, &(stream_change), sizeof( dvdnav_stream_change_event_t));
+    (*len) = sizeof(dvdnav_spu_stream_change_event_t);
+    stream_change.physical_wide = vm_get_subp_active_stream(this->vm, 0);
+    stream_change.physical_letterbox = vm_get_subp_active_stream(this->vm, 1);
+    stream_change.physical_pan_scan = vm_get_subp_active_stream(this->vm, 2);
+    memcpy(buf, &(stream_change), sizeof( dvdnav_spu_stream_change_event_t));
     this->position_current.spu_channel = this->position_next.spu_channel;
 #ifdef LOG_DEBUG
     fprintf(stderr,"libdvdnav:SPU_STREAM_CHANGE stream_id=%d returning S_OK\n",stream_change.physical);
@@ -570,14 +582,14 @@
   }
   
   if(this->position_current.audio_channel != this->position_next.audio_channel) {
-    dvdnav_stream_change_event_t stream_change;
+    dvdnav_audio_stream_change_event_t stream_change;
     (*event) = DVDNAV_AUDIO_STREAM_CHANGE;
 #ifdef LOG_DEBUG
     fprintf(stderr,"libdvdnav:AUDIO_STREAM_CHANGE\n");
 #endif
-    (*len) = sizeof(dvdnav_stream_change_event_t);
+    (*len) = sizeof(dvdnav_audio_stream_change_event_t);
     stream_change.physical= vm_get_audio_active_stream( this->vm );
-    memcpy(buf, &(stream_change), sizeof( dvdnav_stream_change_event_t));
+    memcpy(buf, &(stream_change), sizeof( dvdnav_audio_stream_change_event_t));
     this->position_current.audio_channel = this->position_next.audio_channel;
 #ifdef LOG_DEBUG
     fprintf(stderr,"libdvdnav:AUDIO_STREAM_CHANGE stream_id=%d returning S_OK\n",stream_change.physical);
@@ -942,6 +954,10 @@
 
 /*
  * $Log$
+ * Revision 1.25  2002/07/05 14:18:54  mroi
+ * report all spu types (widescreen, letterbox and pan&scan), not widescreen
+ * only and report the stream's scale permissions to detect pan&scan material
+ *
  * Revision 1.24  2002/07/05 01:42:30  jcdutton
  * Add more debug info for Menu language selection.
  * Only do vm_start when we have to.