comparison command.c @ 25462:3e033aabc9d2

Combine common code for check whether chapter is available.
author ulion
date Sat, 22 Dec 2007 06:20:48 +0000
parents 7ef04742572c
children 2a0982bac1b0
comparison
equal deleted inserted replaced
25461:7ef04742572c 25462:3e033aabc9d2
383 float next_pts = 0; 383 float next_pts = 0;
384 int chapter_num; 384 int chapter_num;
385 int step_all; 385 int step_all;
386 char *chapter_name = NULL; 386 char *chapter_name = NULL;
387 387
388 chapter = demuxer_get_current_chapter(mpctx->demuxer);
389 if (chapter < 0)
390 return M_PROPERTY_UNAVAILABLE;
391
388 switch (action) { 392 switch (action) {
389 case M_PROPERTY_GET: 393 case M_PROPERTY_GET:
390 chapter = demuxer_get_current_chapter(mpctx->demuxer);
391 if (chapter < 0)
392 return M_PROPERTY_UNAVAILABLE;
393 if (!arg) 394 if (!arg)
394 return M_PROPERTY_ERROR; 395 return M_PROPERTY_ERROR;
395 *(int *) arg = chapter; 396 *(int *) arg = chapter;
396 return M_PROPERTY_OK; 397 return M_PROPERTY_OK;
397 case M_PROPERTY_PRINT: { 398 case M_PROPERTY_PRINT: {
398 if (!arg) 399 if (!arg)
399 return M_PROPERTY_ERROR; 400 return M_PROPERTY_ERROR;
400 chapter = demuxer_get_current_chapter(mpctx->demuxer);
401 if (chapter < 0)
402 return M_PROPERTY_UNAVAILABLE;
403 chapter_name = demuxer_chapter_display_name(mpctx->demuxer, chapter); 401 chapter_name = demuxer_chapter_display_name(mpctx->demuxer, chapter);
404 if (!chapter_name) 402 if (!chapter_name)
405 return M_PROPERTY_UNAVAILABLE; 403 return M_PROPERTY_UNAVAILABLE;
406 *(char **) arg = chapter_name; 404 *(char **) arg = chapter_name;
407 return M_PROPERTY_OK; 405 return M_PROPERTY_OK;
408 } 406 }
409 case M_PROPERTY_SET: 407 case M_PROPERTY_SET:
410 if (!arg) 408 if (!arg)
411 return M_PROPERTY_ERROR; 409 return M_PROPERTY_ERROR;
412 M_PROPERTY_CLAMP(prop, *(int*)arg); 410 M_PROPERTY_CLAMP(prop, *(int*)arg);
413 chapter = demuxer_get_current_chapter(mpctx->demuxer);
414 if (chapter < 0)
415 return M_PROPERTY_UNAVAILABLE;
416 step_all = *(int *)arg - (chapter + 1); 411 step_all = *(int *)arg - (chapter + 1);
417 chapter += step_all; 412 chapter += step_all;
418 break; 413 break;
419 case M_PROPERTY_STEP_UP: 414 case M_PROPERTY_STEP_UP:
420 case M_PROPERTY_STEP_DOWN: { 415 case M_PROPERTY_STEP_DOWN: {
421 step_all = (arg && *(int*)arg != 0 ? *(int*)arg : 1) 416 step_all = (arg && *(int*)arg != 0 ? *(int*)arg : 1)
422 * (action == M_PROPERTY_STEP_UP ? 1 : -1); 417 * (action == M_PROPERTY_STEP_UP ? 1 : -1);
423 chapter = demuxer_get_current_chapter(mpctx->demuxer);
424 if (chapter < 0)
425 return M_PROPERTY_UNAVAILABLE;
426 chapter += step_all; 418 chapter += step_all;
427 if (chapter < 0) 419 if (chapter < 0)
428 chapter = 0; 420 chapter = 0;
429 break; 421 break;
430 } 422 }