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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * asf.h: MMS access plug-in
  3.  *****************************************************************************
  4.  * Copyright (C) 2001-2004 VideoLAN
  5.  * $Id: asf.h 7903 2004-06-05 21:53:24Z fenrir $
  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., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. /****************************************************************************
  24.  * XXX:
  25.  *  Definitions and data duplicated from asf demuxers but I want access
  26.  * and demux plugins to be independant
  27.  *
  28.  ****************************************************************************/
  29. #define ASF_STREAM_VIDEO    0x0001
  30. #define ASF_STREAM_AUDIO    0x0002
  31. #define ASF_STREAM_UNKNOWN  0xffff
  32. typedef struct
  33. {
  34.     int i_cat;      /* ASF_STREAM_VIDEO, ASF_STREAM_AUDIO */
  35.     int i_bitrate;  /* -1 if unknown */
  36.     int i_selected;
  37. } asf_stream_t;
  38. typedef struct
  39. {
  40.     int64_t      i_file_size;
  41.     int64_t      i_data_packets_count;
  42.     int32_t      i_min_data_packet_size;
  43.     asf_stream_t stream[128];
  44. } asf_header_t;
  45. typedef struct guid_s
  46. {
  47.     uint32_t v1; /* le */
  48.     uint16_t v2; /* le */
  49.     uint16_t v3; /* le */
  50.     uint8_t  v4[8];
  51. } guid_t;
  52. void E_( GenerateGuid )     ( guid_t * );
  53. void E_( asf_HeaderParse )  ( asf_header_t *, uint8_t *, int );
  54. void E_( asf_StreamSelect ) ( asf_header_t *,
  55.                               int i_bitrate_max, vlc_bool_t b_all, vlc_bool_t b_audio,
  56.                               vlc_bool_t b_video );
  57. #define GUID_FMT "%8.8x-%4.4x-%4.4x-%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x%2.2x"
  58. #define GUID_PRINT( guid )  
  59.     (guid).v1,              
  60.     (guid).v2,              
  61.     (guid).v3,              
  62.     (guid).v4[0],(guid).v4[1],(guid).v4[2],(guid).v4[3],    
  63.     (guid).v4[4],(guid).v4[5],(guid).v4[6],(guid).v4[7]
  64. static const guid_t asf_object_header_guid =
  65. {
  66.     0x75B22630,
  67.     0x668E,
  68.     0x11CF,
  69.     { 0xA6,0xD9, 0x00,0xAA,0x00,0x62,0xCE,0x6C }
  70. };
  71. static const guid_t asf_object_file_properties_guid =
  72. {
  73.     0x8cabdca1,
  74.     0xa947,
  75.     0x11cf,
  76.     { 0x8e,0xe4, 0x00,0xC0,0x0C,0x20,0x53,0x65 }
  77. };
  78. static const guid_t asf_object_stream_properties_guid =
  79. {
  80.     0xB7DC0791,
  81.     0xA9B7,
  82.     0x11CF,
  83.     { 0x8E,0xE6, 0x00,0xC0,0x0C,0x20,0x53,0x65 }
  84. };
  85. static const guid_t asf_object_stream_type_audio =
  86. {
  87.     0xF8699E40,
  88.     0x5B4D,
  89.     0x11CF,
  90.     { 0xA8,0xFD, 0x00,0x80,0x5F,0x5C,0x44,0x2B }
  91. };
  92. static const guid_t asf_object_stream_type_video =
  93. {
  94.     0xbc19efc0,
  95.     0x5B4D,
  96.     0x11CF,
  97.     { 0xA8,0xFD, 0x00,0x80,0x5F,0x5C,0x44,0x2B }
  98. };
  99. static const guid_t asf_object_bitrate_properties_guid =
  100. {
  101.     0x7BF875CE,
  102.     0x468D,
  103.     0x11D1,
  104.     { 0x8D,0x82,0x00,0x60,0x97,0xC9,0xA2,0xB2 }
  105. };
  106. static const guid_t asf_object_bitrate_mutual_exclusion_guid =
  107. {
  108.     0xD6E229DC,
  109.     0x35DA,
  110.     0x11D1,
  111.     { 0x90,0x34,0x00,0xA0,0xC9,0x03,0x49,0xBE }
  112. };