comparison searching.c @ 90:eeabf5a51b2b src

Improve chapter selection functions.
author jcdutton
date Tue, 03 Sep 2002 07:50:45 +0000
parents 0fbef4901e2c
children 3e6970dbe8d6
comparison
equal deleted inserted replaced
89:0fbef4901e2c 90:eeabf5a51b2b
226 return S_ERR; 226 return S_ERR;
227 227
228 return S_OK; 228 return S_OK;
229 } 229 }
230 230
231 dvdnav_status_t dvdnav_prev_part_search(dvdnav_t *this) {
232
233 if((!this) || (!this->vm) )
234 return S_ERR;
235
236 vm_prev_part(this->vm);
237 /* FIXME: handle errors */
238 return S_OK;
239 }
240
241 dvdnav_status_t dvdnav_next_part_search(dvdnav_t *this) {
242 if((!this) || (!this->vm) )
243 return S_ERR;
244
245 vm_next_part(this->vm);
246 /* FIXME: handle errors */
247 return S_OK;
248 }
249
250 dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *this) { 231 dvdnav_status_t dvdnav_prev_pg_search(dvdnav_t *this) {
251 dvd_state_t *state; 232 dvd_state_t *state;
252 233
253 if((!this) || (!this->vm) ) 234 if((!this) || (!this->vm) )
254 return S_ERR; 235 return S_ERR;
312 pthread_mutex_lock(&this->vm_lock); 293 pthread_mutex_lock(&this->vm_lock);
313 state = &(this->vm->state); 294 state = &(this->vm->state);
314 if (vm_menu_call(this->vm, menu, 0)) 295 if (vm_menu_call(this->vm, menu, 0))
315 this->vm->hop_channel++; 296 this->vm->hop_channel++;
316 pthread_mutex_unlock(&this->vm_lock); 297 pthread_mutex_unlock(&this->vm_lock);
317 return S_OK;
318 }
319
320 dvdnav_status_t dvdnav_current_title_info(dvdnav_t *this, int *tt, int *pr) {
321 int vts_ttn = 0;
322 int vts, i;
323 domain_t domain;
324 tt_srpt_t* srpt;
325
326 if(!this)
327 return S_ERR;
328
329 if(!tt || !pr) {
330 printerr("Passed a NULL pointer");
331 }
332
333 if(tt)
334 *tt = -1;
335 if(*pr)
336 *pr = -1;
337
338 domain = this->vm->state.domain;
339 if((domain == FP_DOMAIN) || (domain == VMGM_DOMAIN)) {
340 /* Not in a title */
341 return S_OK;
342 }
343
344 vts_ttn = this->vm->state.VTS_TTN_REG;
345 vts = this->vm->state.vtsN;
346
347 /* FIXME: pr should be found by searching the VTS_SRPT table. Not just the pgN */
348 if(pr) {
349 *pr = this->vm->state.pgN;
350 }
351
352 /* Search TT_SRPT for title */
353 if(!(vm_get_vmgi(this->vm))) {
354 printerr("Oh poo, no SRPT");
355 return S_ERR;
356 }
357
358 srpt = vm_get_vmgi(this->vm)->tt_srpt;
359 for(i=0; i<srpt->nr_of_srpts; i++) {
360 title_info_t* info = &(srpt->title[i]);
361 if((info->title_set_nr == vts) && (info->vts_ttn == vts_ttn)) {
362 if(tt)
363 *tt = i+1;
364 }
365 }
366
367 return S_OK; 298 return S_OK;
368 } 299 }
369 300
370 static char __title_str[] = "DVDNAV"; 301 static char __title_str[] = "DVDNAV";
371 302