diff searching.c @ 132:f22458f928b8 src

PGC based positioning
author mroi
date Sun, 23 Mar 2003 15:24:31 +0000
parents ada79e606d8d
children d09a81cf65ce
line wrap: on
line diff
--- a/searching.c	Fri Mar 21 18:06:44 2003 +0000
+++ b/searching.c	Sun Mar 23 15:24:31 2003 +0000
@@ -168,14 +168,19 @@
     return S_ERR;
   }
 
-  /* First find closest cell number in program */
-  first_cell_nr = state->pgc->program_map[state->pgN-1];
-  if(state->pgN < state->pgc->nr_of_programs) {
-    last_cell_nr = state->pgc->program_map[state->pgN] - 1;
+  if (this->pgc_based) {
+    first_cell_nr = 1;
+    last_cell_nr = state->pgc->nr_of_cells;
   } else {
-    last_cell_nr = state->pgc->nr_of_cells;
+    /* Find start cell of program. */
+    first_cell_nr = state->pgc->program_map[state->pgN-1];
+    /* Find end cell of program */
+    if(state->pgN < state->pgc->nr_of_programs)
+      last_cell_nr = state->pgc->program_map[state->pgN] - 1;
+    else
+      last_cell_nr = state->pgc->nr_of_cells;
   }
-    
+
   found = 0;
   for(cell_nr = first_cell_nr; (cell_nr <= last_cell_nr) && !found; cell_nr ++) {
     cell =  &(state->pgc->cell_playback[cell_nr-1]);
@@ -382,8 +387,6 @@
   uint32_t first_cell_nr;
   uint32_t last_cell_nr;
   cell_playback_t *cell;
-  cell_playback_t *first_cell;
-  cell_playback_t *last_cell;
   dvd_state_t *state;
 
   if(!this || !pos || !len) {
@@ -406,18 +409,19 @@
   /* Get current sector */
   cur_sector = this->vobu.vobu_start + this->vobu.blockN;
 
-  /* Find start cell of program. */
-  first_cell_nr = state->pgc->program_map[state->pgN-1];
-  first_cell = &(state->pgc->cell_playback[first_cell_nr-1]);
-  
-  /* Find end cell of program */
-  if(state->pgN < state->pgc->nr_of_programs) {
-    last_cell_nr = state->pgc->program_map[state->pgN] - 1;
+  if (this->pgc_based) {
+    first_cell_nr = 1;
+    last_cell_nr = state->pgc->nr_of_cells;
   } else {
-    last_cell_nr = state->pgc->nr_of_cells;
+    /* Find start cell of program. */
+    first_cell_nr = state->pgc->program_map[state->pgN-1];
+    /* Find end cell of program */
+    if(state->pgN < state->pgc->nr_of_programs)
+      last_cell_nr = state->pgc->program_map[state->pgN] - 1;
+    else
+      last_cell_nr = state->pgc->nr_of_cells;
   }
-  last_cell = &(state->pgc->cell_playback[last_cell_nr-1]);
-  
+
   *pos = -1;
   *len = 0;
   for (cell_nr = first_cell_nr; cell_nr <= last_cell_nr; cell_nr++) {