vcdplayer.h
上传用户:riyaled888
上传日期:2009-03-27
资源大小:7338k
文件大小:6k
源码类别:

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * Copyright (C) 2003, 2004 Rocky Bernstein (for VideoLAN)
  3.  * $Id: vcdplayer.h 8313 2004-07-29 15:18:04Z hartman $
  4.  *
  5.  * Authors: Rocky Bernstein <rocky@panix.com> 
  6.  *
  7.  * This program is free software; you can redistribute it and/or modify
  8.  * it under the terms of the GNU General Public License as published by
  9.  * the Free Software Foundation; either version 2 of the License, or
  10.  * (at your option) any later version.
  11.  *
  12.  * This program is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15.  * GNU General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU General Public License
  18.  * along with this program; if not, write to the Free Software
  19.  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  20.  *****************************************************************************/
  21. /* VCD Player header. More or less media-player independent */
  22. #ifndef _VCDPLAYER_H_
  23. #define _VCDPLAYER_H_
  24. #include <libvcd/info.h>
  25. #define INPUT_DBG_META        1 /* Meta information */
  26. #define INPUT_DBG_EVENT       2 /* input (keyboard/mouse) events */
  27. #define INPUT_DBG_MRL         4 /* MRL parsing */
  28. #define INPUT_DBG_EXT         8 /* Calls from external routines */
  29. #define INPUT_DBG_CALL       16 /* all calls */
  30. #define INPUT_DBG_LSN        32 /* LSN changes */
  31. #define INPUT_DBG_PBC        64 /* Playback control */
  32. #define INPUT_DBG_CDIO      128 /* Debugging from CDIO */
  33. #define INPUT_DBG_SEEK      256 /* Seeks to set location */
  34. #define INPUT_DBG_SEEK_CUR  512 /* Seeks to find current location */
  35. #define INPUT_DBG_STILL    1024 /* Still-frame */
  36. #define INPUT_DBG_VCDINFO  2048 /* Debugging from VCDINFO */
  37. #define INPUT_DEBUG 1
  38. #if INPUT_DEBUG
  39. #define dbg_print(mask, s, args...) 
  40.    if (p_vcd && p_vcd->i_debug & mask) 
  41.      msg_Dbg(p_input, "%s: "s, __func__ , ##args)
  42. #else
  43. #define dbg_print(mask, s, args...) 
  44. #endif
  45. #define LOG_ERR(args...)  msg_Err( p_input, args )
  46. #define LOG_WARN(args...) msg_Warn( p_input, args )
  47. /* vcdplayer_read return status */
  48. typedef enum {
  49.   READ_BLOCK,
  50.   READ_STILL_FRAME,
  51.   READ_ERROR,
  52.   READ_END,
  53. } vcdplayer_read_status_t;
  54. /*****************************************************************************
  55.  * thread_vcd_data_t: VCD information
  56.  *****************************************************************************/
  57. typedef struct thread_vcd_data_s
  58. {
  59.   vcdinfo_obj_t *vcd;                   /* CD device descriptor */
  60.   vlc_bool_t   in_still;              /*  true if in still */
  61.   vlc_bool_t   b_svd;                 /*  true if we have SVD info */
  62.   unsigned int num_tracks;              /* Nb of tracks (titles) */
  63.   unsigned int num_segments;            /* Nb of segments */
  64.   unsigned int num_entries;             /* Nb of entries */
  65.   unsigned int num_lids;                /* Nb of List IDs */
  66.   vcdinfo_itemid_t play_item;           /* play-item, VCDPLAYER_BAD_ENTRY 
  67.                                            if none */
  68.   int          cur_lid;                 /* LID that play item is in. Implies 
  69.                                            PBC is on. VCDPLAYER_BAD_ENTRY if 
  70.                                            not none or not in PBC */
  71. #if (defined LIBVCD_VERSION_NUM) && (LIBVCD_VERSION_NUM >= 21)
  72.   PsdListDescriptor_t pxd;              /* If PBC is on, the relevant 
  73.                                             PSD/PLD */
  74. #else
  75.   PsdListDescriptor pxd;                /* If PBC is on, the relevant
  76.                                            PSD/PLD */
  77. #endif
  78.   int          pdi;                     /* current pld index of pxd. -1 if 
  79.                                            no index*/
  80.   vcdinfo_itemid_t loop_item;           /* Where do we loop back to? 
  81.                                            Meaningful only in a selection 
  82.                                            list */
  83.   int          loop_count;              /* # of times play-item has been 
  84.                                            played. Meaningful only in a 
  85.                                            selection list.              */
  86.   track_t      cur_track;               /* Current track number */
  87.   lsn_t        cur_lsn;                 /* Current logical sector number */
  88.   lsn_t        end_lsn;                 /* LSN of end of current 
  89.                                            entry/segment/track. */
  90.   lsn_t        origin_lsn;              /* LSN of start of seek/slider */
  91.   lsn_t *      p_sectors;               /* Track sectors */
  92.   lsn_t *      p_entries;               /* Entry points */
  93.   lsn_t *      p_segments;              /* Segments */
  94.   vlc_bool_t   b_valid_ep;              /* Valid entry points flag */
  95.   vlc_bool_t   b_end_of_track;          /* If the end of track was reached */
  96.   int          i_debug;                 /* Debugging mask */
  97.   /* Probably gets moved into another structure...*/
  98.   intf_thread_t *         p_intf;
  99.   int                     i_audio_nb;
  100.   int                     i_still_time;
  101.   vlc_bool_t              b_end_of_cell;
  102.   
  103. } thread_vcd_data_t;
  104. /*!
  105.   Get the next play-item in the list given in the LIDs. Note play-item
  106.   here refers to list of play-items for a single LID It shouldn't be
  107.   confused with a user's list of favorite things to play or the 
  108.   "next" field of a LID which moves us to a different LID.
  109.  */
  110. vlc_bool_t vcdplayer_inc_play_item( input_thread_t *p_input );
  111. /*!
  112.   Return true if playback control (PBC) is on
  113. */
  114. vlc_bool_t vcdplayer_pbc_is_on(const thread_vcd_data_t *p_this);
  115. /*!
  116.   Play item assocated with the "default" selection.
  117.   Return false if there was some problem.
  118. */
  119. vlc_bool_t vcdplayer_play_default( input_thread_t * p_input );
  120. /*!
  121.   Play item assocated with the "next" selection.
  122.   Return false if there was some problem.
  123. */
  124. vlc_bool_t vcdplayer_play_next( input_thread_t * p_input );
  125. /*!
  126.   Play item assocated with the "prev" selection.
  127.   Return false if there was some problem.
  128. */
  129. vlc_bool_t vcdplayer_play_prev( input_thread_t * p_input );
  130. /*!
  131.   Play item assocated with the "return" selection.
  132.   Return false if there was some problem.
  133. */
  134. vlc_bool_t
  135. vcdplayer_play_return( input_thread_t * p_input );
  136. vcdplayer_read_status_t vcdplayer_pbc_nav ( input_thread_t * p_input );
  137. vcdplayer_read_status_t vcdplayer_non_pbc_nav ( input_thread_t * p_input );
  138. #endif /* _VCDPLAYER_H_ */
  139. /* 
  140.  * Local variables:
  141.  *  c-file-style: "gnu"
  142.  *  tab-width: 8
  143.  *  indent-tabs-mode: nil
  144.  * End:
  145.  */