clpi.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:3k
源码类别:

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * clpi.h: BluRay Disc CLPI
  3.  *****************************************************************************
  4.  * Copyright (C) 2009 the VideoLAN team
  5.  * $Id: c2385f7b4827ab7f05bc074c926596b3cae4c73d $
  6.  *
  7.  * Authors: Laurent Aimar <fenrir _AT_ videolan _DOT_ org>
  8.  *
  9.  * This program is free software; you can redistribute it and/or modify
  10.  * it under the terms of the GNU General Public License as published by
  11.  * the Free Software Foundation; either version 2 of the License, or
  12.  * (at your option) any later version.
  13.  *
  14.  * This program is distributed in the hope that it will be useful,
  15.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  17.  * GNU General Public License for more details.
  18.  *
  19.  * You should have received a copy of the GNU General Public License
  20.  * along with this program; if not, write to the Free Software
  21.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  22.  *****************************************************************************/
  23. typedef struct
  24. {
  25.     int     i_pcr_pid;
  26.     int64_t i_packet;   /* TS Packet number */
  27.     int64_t i_start;    /* Presentation start time in 45kHz */
  28.     int64_t i_end;      /* Presentation end time in 45kHz */
  29. } bd_clpi_stc_t;
  30. void bd_clpi_stc_Parse( bd_clpi_stc_t *p_stc, bs_t *s );
  31. typedef struct
  32. {
  33.     int i_pid;          /* PID of the associated stream */
  34.     int i_type;         /* Stream type of the associated stream */
  35. } bd_clpi_stream_t;
  36. void bd_clpi_stream_Parse( bd_clpi_stream_t *p_stream, bs_t *s );
  37. typedef struct
  38. {
  39.     bool    b_angle_point;  /* EP angle point change */
  40.     int64_t i_packet;       /* TS packet number */
  41.     int64_t i_pts;          /* PTS of the associated stream (90kHz, 33bits) */
  42. } bd_clpi_ep_t;
  43. typedef struct
  44. {
  45.     int i_pid;          /* PID of the associated stream */
  46.     int i_type;         /* Stream type of the associated stream */
  47.     int          i_ep;
  48.     bd_clpi_ep_t *p_ep;
  49. } bd_clpi_ep_map_t;
  50. void bd_clpi_ep_map_Clean( bd_clpi_ep_map_t *p_ep_map );
  51. int bd_clpi_ep_map_Parse( bd_clpi_ep_map_t *p_ep_map,
  52.                           bs_t *s, const int i_ep_map_start );
  53. typedef struct
  54. {
  55.     int              i_id;
  56.     int              i_stc;
  57.     bd_clpi_stc_t    *p_stc;
  58.     
  59.     int              i_pmt_pid;
  60.     int              i_stream;
  61.     bd_clpi_stream_t *p_stream;
  62.     int              i_ep_map;
  63.     bd_clpi_ep_map_t *p_ep_map;
  64. } bd_clpi_t;
  65. void bd_clpi_Clean( bd_clpi_t *p_clpi );
  66. int bd_clpi_Parse( bd_clpi_t *p_clpi, bs_t *s, int i_id );