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

midi

开发平台:

Unix_Linux

  1. /*****************************************************************************
  2.  * mms.h: MMS access plug-in
  3.  *****************************************************************************
  4.  * Copyright (C) 2001, 2002 the VideoLAN team
  5.  * $Id: 7252665548a6bbc19b4c2988f111a5338420062a $
  6.  *
  7.  * Authors: Laurent Aimar <fenrir@via.ecp.fr>
  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. #ifndef _MMSTU_H_
  24. #define _MMSTU_H_ 1
  25. #define MMS_PACKET_ANY          0
  26. #define MMS_PACKET_CMD          1
  27. #define MMS_PACKET_HEADER       2
  28. #define MMS_PACKET_MEDIA        3
  29. #define MMS_PACKET_UDP_TIMING   4
  30. #define MMS_CMD_HEADERSIZE  48
  31. #define MMS_BUFFER_SIZE 100000
  32. struct access_sys_t
  33. {
  34.     int         i_proto;        /* MMS_PROTO_TCP, MMS_PROTO_UDP */
  35.     int         i_handle_tcp;   /* TCP socket for communication with server */
  36.     int         i_handle_udp;   /* Optional UDP socket for data(media/header packet) */
  37.                                 /* send by server */
  38.     char        sz_bind_addr[NI_MAXNUMERICHOST]; /* used by udp */
  39.     vlc_url_t   url;
  40.     asf_header_t    asfh;
  41.     unsigned    i_timeout;
  42.     /* */
  43.     uint8_t     buffer_tcp[MMS_BUFFER_SIZE];
  44.     int         i_buffer_tcp;
  45.     uint8_t     buffer_udp[MMS_BUFFER_SIZE];
  46.     int         i_buffer_udp;
  47.     /* data necessary to send data to server */
  48.     guid_t      guid;
  49.     int         i_command_level;
  50.     int         i_seq_num;
  51.     uint32_t    i_header_packet_id_type;
  52.     uint32_t    i_media_packet_id_type;
  53.     int         i_packet_seq_num;
  54.     uint8_t     *p_cmd;     /* latest command read */
  55.     size_t      i_cmd;      /* allocated at the begining */
  56.     uint8_t     *p_header;  /* allocated by mms_ReadPacket */
  57.     size_t      i_header;
  58.     uint8_t     *p_media;   /* allocated by mms_ReadPacket */
  59.     size_t      i_media;
  60.     size_t      i_media_used;
  61.     /* extracted information */
  62.     int         i_command;
  63.     /* from 0x01 answer (not yet set) */
  64.     char        *psz_server_version;
  65.     char        *psz_tool_version;
  66.     char        *psz_update_player_url;
  67.     char        *psz_encryption_type;
  68.     /* from 0x06 answer */
  69.     uint32_t    i_flags_broadcast;
  70.     uint32_t    i_media_length;
  71.     size_t      i_packet_length;
  72.     uint32_t    i_packet_count;
  73.     int         i_max_bit_rate;
  74.     size_t      i_header_size;
  75.     /* misc */
  76.     bool  b_seekable;
  77.     vlc_mutex_t lock_netwrite;
  78.     struct mmstu_keepalive_t *p_keepalive;
  79. };
  80. typedef struct mmstu_keepalive_t
  81. {
  82.     access_t    *p_access;
  83.     vlc_mutex_t  lock;
  84.     vlc_cond_t   wait;
  85.     vlc_thread_t handle;
  86.     bool         b_paused;
  87. } mmstu_keepalive_t;
  88. #endif