home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / wvis0626.zip / warpvision_20020626.zip / codecs.c < prev    next >
C/C++ Source or Header  |  2002-06-24  |  7KB  |  209 lines

  1. /*
  2.  * WarpVision codecs
  3.  *
  4.  * Copyleft Alex Strelnikov.
  5.  *
  6.  * WarpVision is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * WarpVision is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20. */
  21.  
  22. #include <os2.h>
  23. #include <mmio.h>
  24.  
  25. #include <stdio.h>
  26. #include <stdlib.h>
  27. #include <string.h>
  28.  
  29. #include "codecs.h"
  30.  
  31. codecs_st *find_audio_codec(ULONG fourcc)
  32. {
  33.     static codecs_st codec;
  34.  
  35.     switch(fourcc)
  36.     {
  37.         case 0x2000:
  38.             strcpy(codec.codec_name, "Dolby AC-3");
  39.             codec.codec_type = AUDIO_AC3;
  40.             codec.codec_supported = TRUE;
  41.         break;
  42.  
  43.         case 0x50:
  44.         case 0x55:
  45.             strcpy(codec.codec_name, "MPEG Layer-1,2,3");
  46.             codec.codec_type = AUDIO_MPEG;
  47.             codec.codec_supported = TRUE;
  48.         break;
  49.  
  50.         case 0x01:
  51.             strcpy(codec.codec_name, "Uncompressed PCM");
  52.             codec.codec_type = AUDIO_PCM;
  53.             codec.codec_supported = TRUE;
  54.         break;
  55.  
  56.         case 0x160:
  57.         case 0x161:
  58.             strcpy(codec.codec_name, "DivX audio (not supported)");
  59.             codec.codec_type = AUDIO_DIVX;
  60.             codec.codec_supported = FALSE;
  61.         break;
  62.  
  63.         case 0x02:
  64.             strcpy(codec.codec_name, "ADPCM (not supported)");
  65.             codec.codec_type = AUDIO_ADPCM;
  66.             codec.codec_supported = FALSE;
  67.         break;
  68.  
  69.         case 0x06:
  70.             strcpy(codec.codec_name, "RIFF ALAW (not supported)");
  71.             codec.codec_type = AUDIO_ALAW;
  72.             codec.codec_supported = FALSE;
  73.         break;
  74.  
  75.         case 0x07:
  76.             strcpy(codec.codec_name, "RIFF MULAW (not supported)");
  77.             codec.codec_type = AUDIO_MULAW;
  78.             codec.codec_supported = FALSE;
  79.         break;
  80.  
  81.         case 0x11:
  82.             strcpy(codec.codec_name, "IMA ADPCM (not supported)");
  83.             codec.codec_type = AUDIO_IMAADPCM;
  84.             codec.codec_supported = FALSE;
  85.         break;
  86.  
  87.         default:
  88.             strcpy(codec.codec_name, "Unknown audio codec");
  89.             codec.codec_supported = FALSE;
  90.         break;
  91.     }
  92.  
  93.     return &codec;
  94. }
  95.  
  96. codecs_st *find_video_codec(ULONG fourcc)
  97. {
  98.     static codecs_st codec;
  99.  
  100.     switch(fourcc)
  101.     {
  102.         case mmioFOURCC('D', 'I', 'V', 'X'):
  103.         case mmioFOURCC('d', 'i', 'v', 'x'):
  104.         case mmioFOURCC('D', 'I', 'V', '1'):
  105.         case mmioFOURCC('d', 'i', 'v', '1'):
  106.         case mmioFOURCC('M', 'P', '4', 'S'):
  107.         case mmioFOURCC('m', 'p', '4', 's'):
  108.         case mmioFOURCC('X', 'V', 'I', 'D'):
  109.         case mmioFOURCC('x', 'v', 'i', 'd'):
  110.         case mmioFOURCC('X', 'v', 'i', 'D'):
  111.         case mmioFOURCC('D', 'X', '5', '0'):
  112.             strcpy(codec.codec_name, "FFmpeg OpenDivX (MPEG-4 v2)");
  113.             codec.codec_type = VIDEO_ODIVX;
  114.             codec.codec_supported = TRUE;
  115.         break;
  116.  
  117.         case mmioFOURCC('D', 'I', 'V', '3'):
  118.         case mmioFOURCC('d', 'i', 'v', '3'):
  119.         case mmioFOURCC('D', 'I', 'V', '4'):
  120.         case mmioFOURCC('d', 'i', 'v', '4'):
  121.         case mmioFOURCC('M', 'P', 'G', '3'):
  122.         case mmioFOURCC('m', 'p', 'g', '3'):
  123.         case mmioFOURCC('M', 'P', '4', '3'):
  124.         case mmioFOURCC('m', 'p', '4', '3'):
  125.         case mmioFOURCC('D', 'I', 'V', '5'):
  126.         case mmioFOURCC('d', 'i', 'v', '5'):
  127.         case mmioFOURCC('D', 'I', 'V', '6'):
  128.         case mmioFOURCC('d', 'i', 'v', '6'):
  129.         case mmioFOURCC('A', 'P', '4', '1'):
  130.             strcpy(codec.codec_name, "FFmpeg DivX ;-) (MS MPEG-4 v3)");
  131.             codec.codec_type = VIDEO_DIVX;
  132.             codec.codec_supported = TRUE;
  133.         break;
  134.  
  135.         case 0x10000001:
  136.         case 0x10000002:
  137.             strcpy(codec.codec_name, "libmpeg2 MPEG-1/2");
  138.             codec.codec_type = VIDEO_MPEG;
  139.             codec.codec_supported = TRUE;
  140.         break;
  141.  
  142.         case mmioFOURCC('M', 'J', 'P', 'G'):
  143.             strcpy(codec.codec_name, "FFmpeg MJPEG");
  144.             codec.codec_type = VIDEO_MJPG;
  145.             codec.codec_supported = TRUE;
  146.         break;
  147.  
  148.         case mmioFOURCC('M', 'P', 'G', '4'):
  149.         case mmioFOURCC('m', 'p', 'g', '4'):
  150.             strcpy(codec.codec_name, "FFmpeg MPEG-4 v1");
  151.             codec.codec_type = VIDEO_MP4V1;
  152.             codec.codec_supported = TRUE;
  153.         break;
  154.  
  155.         case mmioFOURCC('M', 'P', '4', '2'):
  156.         case mmioFOURCC('m', 'p', '4', '2'):
  157.             strcpy(codec.codec_name, "FFmpeg MPEG-4 v2");
  158.             codec.codec_type = VIDEO_MP4V2;
  159.             codec.codec_supported = TRUE;
  160.         break;
  161.  
  162.         case mmioFOURCC('I', 'V', '3', '1'):
  163.         case mmioFOURCC('i', 'v', '3', '1'):
  164.             strcpy(codec.codec_name, "Intel Indeo3 (not supported)");
  165.             codec.codec_type = VIDEO_INDEO3;
  166.             codec.codec_supported = FALSE;
  167.         break;
  168.  
  169.         case mmioFOURCC('I', 'V', '4', '1'):
  170.         case mmioFOURCC('i', 'v', '4', '1'):
  171.             strcpy(codec.codec_name, "Intel Indeo4 (not supported)");
  172.             codec.codec_type = VIDEO_INDEO4;
  173.             codec.codec_supported = FALSE;
  174.         break;
  175.  
  176.         case mmioFOURCC('I', 'V', '5', '0'):
  177.         case mmioFOURCC('i', 'v', '5', '0'):
  178.             strcpy(codec.codec_name, "Intel Indeo5 (not supported)");
  179.             codec.codec_type = VIDEO_INDEO5;
  180.             codec.codec_supported = FALSE;
  181.         break;
  182.  
  183.         case mmioFOURCC('C', 'V', 'I', 'D'):
  184.         case mmioFOURCC('c', 'v', 'i', 'd'):
  185.             strcpy(codec.codec_name, "Cinepak Video (not supported)");
  186.             codec.codec_type = VIDEO_CINEPAK;
  187.             codec.codec_supported = FALSE;
  188.         break;
  189.  
  190.         case mmioFOURCC('W', 'M', 'V', '1'):
  191.             strcpy(codec.codec_name, "Windows Media Video 7");
  192.             codec.codec_type = VIDEO_WMV1;
  193.             codec.codec_supported = TRUE;
  194.         break;
  195.  
  196.         case mmioFOURCC('W', 'M', 'V', '2'):
  197.             strcpy(codec.codec_name, "Windows Media Video 8 (not supported)");
  198.             codec.codec_type = VIDEO_WMV2;
  199.             codec.codec_supported = TRUE;
  200.         break;
  201.  
  202.         default:
  203.             strcpy(codec.codec_name, "Unknown video codec");
  204.             codec.codec_supported = FALSE;
  205.         break;
  206.     }
  207.  
  208.     return &codec;
  209. }