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

多媒体

开发平台:

MultiPlatform

  1. /*****************************************************************************
  2.  * streamdata.h: streaming/transcoding data
  3.  *****************************************************************************
  4.  * Copyright (C) 2000-2004 VideoLAN
  5.  * $Id: wizard.cpp 7826 2004-05-30 14:43:12Z zorglub $
  6.  *
  7.  * Authors: Cl閙ent Stenac <zorglub@videolan.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., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
  22.  *****************************************************************************/
  23. #define MUXERS_NUMBER 9
  24. // Do not count dummy here !
  25. #define VCODECS_NUMBER 13
  26. #define ACODECS_NUMBER 9
  27. #define MUX_PS          0
  28. #define MUX_TS          1
  29. #define MUX_MPEG        2
  30. #define MUX_OGG         3
  31. #define MUX_RAW         4
  32. #define MUX_ASF         5
  33. #define MUX_AVI         6
  34. #define MUX_MP4         7
  35. #define MUX_MOV         8
  36. #define MUX_WAV         9
  37. /* Muxer / Codecs / Access_out compatibility tables */
  38. struct codec {
  39.     char *psz_display;
  40.     char *psz_codec;
  41.     char *psz_descr;
  42.     int muxers[MUXERS_NUMBER];
  43. };
  44. static struct codec vcodecs_array[] =
  45. {
  46.     { "MPEG-1 Video" , "mp1v" , N_("MPEG-1 Video codec"),
  47. //       {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
  48.        {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_RAW, -1,-1,-1,-1 } },
  49.     { "MPEG-2 Video" , "mp2v" , N_("MPEG-2 Video codec"),
  50. //       {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_AVI, MUX_RAW, -1,-1,-1 } },
  51.        {MUX_PS, MUX_TS, MUX_MPEG, MUX_OGG, MUX_RAW, -1,-1,-1,-1 } },
  52.     { "MPEG-4 Video" , "mp4v" , N_("MPEG-4 Video codec"),
  53. //       {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW, -1} },
  54.        {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_RAW, -1,-1} },
  55.     { "DIVX 1" ,"DIV1",N_("DivX first version") ,
  56. //       {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , MUX_AVI , -1,-1,-1,-1 } },
  57.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  58.     { "DIVX 2" ,"DIV2",N_("DivX second version") ,
  59.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  60.     { "DIVX 3" ,"DIV3",N_("DivX third version") ,
  61.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  62.     { "H 263" , "H263" , N_("H263 is a video codec optimized for videoconference (low rates)") ,
  63.        { MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
  64.     { "H 264" , "H264" , N_("H264 is a new video codec") ,
  65.        { MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
  66.     { "I 263", "I263", N_("I263 is an Intel conferencing codec") ,
  67.        { MUX_TS, MUX_AVI, -1,-1,-1,-1,-1,-1,-1 } },
  68.     { "WMV 1" , "WMV1", N_("WMV (Windows Media Video) 1") ,
  69.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  70.     { "WMV 2" , "WMV2", N_("WMV (Windows Media Video) 2") ,
  71.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  72.     { "MJPEG" , "MJPG", N_("MJPEG consists of a series of JPEG pictures") ,
  73.        {MUX_TS , MUX_MPEG , MUX_ASF , MUX_OGG , -1 , -1,-1,-1,-1 } },
  74.     { "Theora" , "theo", N_("Theora is a free general-purpose codec"),
  75.        {MUX_TS, -1,-1,-1,-1,-1,-1,-1,-1} },
  76.     { "Dummy", "dummy", N_("Dummy codec (do not transcode)") ,
  77.       {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_WAV,MUX_RAW,MUX_MOV}},
  78.     { NULL,NULL,NULL , {-1,-1,-1,-1,-1,-1,-1,-1,-1}} /* Do not remove me */
  79. };
  80. static struct codec acodecs_array[] =
  81. {
  82.     { "MPEG Audio" , "mpga" , N_("The standard MPEG audio (1/2) format") ,
  83. //       {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
  84.        {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1,-1} },
  85.     { "MP3" , "mp3" , N_("MPEG Audio Layer 3") ,
  86. //       {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
  87.        {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1, -1} },
  88.     { "MPEG 4 Audio" , "mp4a" , N_("Audio format for MPEG4") ,
  89.        {MUX_TS, MUX_MP4, -1,-1,-1,-1,-1,-1,-1 } },
  90.     { "A/52" , "a52" , N_("DVD audio format") ,
  91. //       {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_AVI,MUX_RAW, -1,-1} },
  92.        {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_OGG,MUX_RAW, -1,-1,-1} },
  93.     { "Vorbis" , "vorb" , N_("Vorbis is a free audio codec") ,
  94.        {MUX_OGG, -1,-1,-1,-1,-1,-1,-1,-1} },
  95.     { "FLAC" , "flac" , N_("FLAC is a lossless audio codec") ,
  96.        {MUX_OGG , MUX_RAW, -1,-1,-1,-1,-1,-1,-1} },
  97.     { "Speex" , "spx" , N_("A free audio codec dedicated to compression of voice") ,
  98.        {MUX_OGG, -1,-1,-1,-1,-1,-1,-1,-1} },
  99.     { "Uncompressed, integer" , "s16l" , N_("Uncompressed audio samples"),
  100.        {MUX_WAV, -1,-1,-1,-1,-1,-1,-1,-1} },
  101.     { "Uncompressed, floating" , "fl32" , N_("Uncompressed audio samples"),
  102.        {MUX_WAV, -1,-1,-1,-1,-1,-1,-1,-1} },
  103.     { "Dummy", "dummy", N_("Dummy codec (do not transcode)") ,
  104. //     {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_AVI,MUX_RAW,MUX_MOV}},
  105.      {MUX_PS,MUX_TS,MUX_MPEG,MUX_ASF,MUX_MP4,MUX_OGG,MUX_RAW,MUX_MOV,MUX_WAV}},
  106.     { NULL,NULL,NULL , {-1,-1,-1,-1,-1,-1,-1,-1,-1}} /* Do not remove me */
  107. };
  108. struct method {
  109.     char *psz_access;
  110.     char *psz_method;
  111.     char *psz_descr;
  112.     char *psz_address;
  113.     int   muxers[MUXERS_NUMBER];
  114. };
  115. static struct method methods_array[] =
  116. {
  117.     {"udp:",N_("UDP Unicast"), N_("Use this to stream to a single computer"),
  118.      N_("Enter the address of the computer to stream to"),
  119.      { MUX_TS, -1,-1,-1,-1,-1,-1,-1,-1 } },
  120.     {"udp:",N_("UDP Multicast"),
  121.      N_("Use this to stream to a dynamic group of computers on a "
  122.      "multicast-enabled network. This is the most efficient method "
  123.      "to stream to several computers, but it does not work over Internet."),
  124.      N_("Enter the multicast address to stream to in this field. "
  125.      "This must be an IP address between 224.0.0.0 an 239.255.255.255 "
  126.      "For a private use, enter an address beginning with 239.255."),
  127.      { MUX_TS, -1,-1,-1,-1,-1,-1,-1,-1 } },
  128.     {"http://",N_("HTTP"),
  129.      N_("Use this to stream to several computers. This method is "
  130.      "less efficient, as the server needs to send several times the "
  131.      "stream."),
  132.      N_("Enter the local addresses you want to listen to. Do not enter "
  133.      "anything if you want to listen to all adresses or if you don't "
  134.      "understand. This is generally the best thing to do. Other computers "
  135.      "can then access the stream at http://yourip:8080 by default"),
  136.      { MUX_TS, MUX_PS, MUX_MPEG, MUX_OGG, MUX_RAW, MUX_ASF, -1,-1,-1} },
  137.     { NULL, NULL,NULL,NULL , {-1,-1,-1,-1,-1,-1,-1,-1,-1}} /* Do not remove me */
  138. };
  139. struct encap {
  140.     int   id;
  141.     char *psz_mux;
  142.     char *psz_encap;
  143.     char *psz_descr;
  144. };
  145. static struct encap encaps_array[] =
  146. {
  147.     { MUX_PS, "ps","MPEG PS", N_("MPEG Program Stream") },
  148.     { MUX_TS, "ts","MPEG TS", N_("MPEG Transport Stream") },
  149.     { MUX_MPEG, "ps", "MPEG 1", N_("MPEG 1 Format") },
  150.     { MUX_OGG, "ogg", "OGG", N_("OGG") },
  151.     { MUX_RAW, "raw", "RAW", N_("RAW") },
  152.     { MUX_ASF, "asf","ASF", N_("ASF") },
  153. //    { MUX_AVI, "avi","AVI", N_("AVI") },
  154.     { MUX_MP4, "mp4","MP4", N_("MPEG4") },
  155.     { MUX_MOV, "mov","MOV", N_("MOV") },
  156.     { MUX_WAV, "wav","WAV", N_("WAV") },
  157.     { -1 , NULL,NULL , NULL } /* Do not remove me */
  158. };
  159. /* Bitrates arrays */
  160.     static const wxString vbitrates_array[] =
  161.     {
  162.         wxT("3072"),
  163.         wxT("2048"),
  164.         wxT("1024"),
  165.         wxT("768"),
  166.         wxT("512"),
  167.         wxT("384"),
  168.         wxT("256"),
  169.         wxT("192"),
  170.         wxT("128"),
  171.         wxT("96"),
  172.         wxT("64"),
  173.         wxT("32"),
  174.         wxT("16")
  175.     };
  176.     static const wxString abitrates_array[] =
  177.     {
  178.         wxT("512"),
  179.         wxT("256"),
  180.         wxT("192"),
  181.         wxT("128"),
  182.         wxT("96"),
  183.         wxT("64"),
  184.         wxT("32"),
  185.         wxT("16")
  186.     };