[svn] / trunk / xvidcore / dshow / src / CXvidDecoder.cpp Repository:
ViewVC logotype

Diff of /trunk/xvidcore/dshow/src/CXvidDecoder.cpp

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1916, Wed Dec 22 15:21:13 2010 UTC revision 2018, Wed Jun 15 19:09:17 2011 UTC
# Line 3  Line 3 
3   *  XVID MPEG-4 VIDEO CODEC   *  XVID MPEG-4 VIDEO CODEC
4   *  - Xvid Decoder part of the DShow Filter  -   *  - Xvid Decoder part of the DShow Filter  -
5   *   *
6   *  Copyright(C) 2002-2010 Peter Ross <pross@xvid.org>   *  Copyright(C) 2002-2011 Peter Ross <pross@xvid.org>
7   *               2003-2010 Michael Militzer <michael@xvid.org>   *               2003-2011 Michael Militzer <michael@xvid.org>
8   *   *
9   *  This program is free software ; you can redistribute it and/or modify   *  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   *  it under the terms of the GNU General Public License as published by
# Line 20  Line 20 
20   *  along with this program ; if not, write to the Free Software   *  along with this program ; if not, write to the Free Software
21   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
22   *   *
23   * $Id: CXvidDecoder.cpp,v 1.25 2010-12-22 15:21:13 Isibaar Exp $   * $Id$
24   *   *
25   ****************************************************************************/   ****************************************************************************/
26    
# Line 36  Line 36 
36          C:\DX90SDK\Samples\C++\DirectShow\BaseClasses\Debug          C:\DX90SDK\Samples\C++\DirectShow\BaseClasses\Debug
37  */  */
38    
39    #ifdef ENABLE_MFT
40  #define XVID_USE_MFT  #define XVID_USE_MFT
41    #endif
42    
43  #define XVID_USE_TRAYICON  #define XVID_USE_TRAYICON
44    
45  #include <windows.h>  #include <windows.h>
# Line 87  Line 90 
90          { &MEDIATYPE_Video, &CLSID_DIVX_UC },          { &MEDIATYPE_Video, &CLSID_DIVX_UC },
91          { &MEDIATYPE_Video, &CLSID_DX50 },          { &MEDIATYPE_Video, &CLSID_DX50 },
92          { &MEDIATYPE_Video, &CLSID_DX50_UC },          { &MEDIATYPE_Video, &CLSID_DX50_UC },
93            { &MEDIATYPE_Video, &CLSID_3IVX },
94            { &MEDIATYPE_Video, &CLSID_3IVX_UC },
95            { &MEDIATYPE_Video, &CLSID_3IV0 },
96            { &MEDIATYPE_Video, &CLSID_3IV0_UC },
97            { &MEDIATYPE_Video, &CLSID_3IV1 },
98            { &MEDIATYPE_Video, &CLSID_3IV1_UC },
99            { &MEDIATYPE_Video, &CLSID_3IV2 },
100            { &MEDIATYPE_Video, &CLSID_3IV2_UC },
101            { &MEDIATYPE_Video, &CLSID_LMP4 },
102            { &MEDIATYPE_Video, &CLSID_LMP4_UC },
103            { &MEDIATYPE_Video, &CLSID_RMP4 },
104            { &MEDIATYPE_Video, &CLSID_RMP4_UC },
105            { &MEDIATYPE_Video, &CLSID_SMP4 },
106            { &MEDIATYPE_Video, &CLSID_SMP4_UC },
107            { &MEDIATYPE_Video, &CLSID_HDX4 },
108            { &MEDIATYPE_Video, &CLSID_HDX4_UC },
109          { &MEDIATYPE_Video, &CLSID_MP4V },          { &MEDIATYPE_Video, &CLSID_MP4V },
110    { &MEDIATYPE_Video, &CLSID_MP4V_UC },    { &MEDIATYPE_Video, &CLSID_MP4V_UC },
111  };  };
# Line 128  Line 147 
147  {  {
148          &CLSID_XVID,                    // Filter CLSID          &CLSID_XVID,                    // Filter CLSID
149          XVID_NAME_L,                    // Filter name          XVID_NAME_L,                    // Filter name
150          MERIT_PREFERRED,                // Its merit          MERIT_PREFERRED+2,              // Its merit
151          sizeof(psudPins) / sizeof(AMOVIESETUP_PIN),     // Number of pins          sizeof(psudPins) / sizeof(AMOVIESETUP_PIN),     // Number of pins
152          psudPins                                // Pin details          psudPins                                // Pin details
153  };  };
# Line 294  Line 313 
313    
314  /* constructor */  /* constructor */
315    
 #define XVID_DLL_NAME "xvidcore.dll"  
   
316  CXvidDecoder::CXvidDecoder(LPUNKNOWN punk, HRESULT *phr) :  CXvidDecoder::CXvidDecoder(LPUNKNOWN punk, HRESULT *phr) :
317      CVideoTransformFilter(NAME("CXvidDecoder"), punk, CLSID_XVID), m_hdll (NULL)      CVideoTransformFilter(TEXT("CXvidDecoder"), punk, CLSID_XVID), m_hdll (NULL)
318  {  {
319          DPRINTF("Constructor");          DPRINTF("Constructor");
320    
# Line 339  Line 356 
356          m_hdll = LoadLibrary(XVID_DLL_NAME);          m_hdll = LoadLibrary(XVID_DLL_NAME);
357          if (m_hdll == NULL) {          if (m_hdll == NULL) {
358                  DPRINTF("dll load failed");                  DPRINTF("dll load failed");
359                  MessageBox(0, XVID_DLL_NAME " not found","Error", MB_TOPMOST);                  MessageBox(0, XVID_DLL_NAME TEXT(" not found"), TEXT("Error"), MB_TOPMOST);
360                  return E_FAIL;                  return E_FAIL;
361          }          }
362    
# Line 347  Line 364 
364          if (xvid_global_func == NULL) {          if (xvid_global_func == NULL) {
365          FreeLibrary(m_hdll);          FreeLibrary(m_hdll);
366          m_hdll = NULL;          m_hdll = NULL;
367                  MessageBox(0, "xvid_global() not found", "Error", MB_TOPMOST);                  MessageBox(0, TEXT("xvid_global() not found"), TEXT("Error"), MB_TOPMOST);
368                  return E_FAIL;                  return E_FAIL;
369          }          }
370    
# Line 356  Line 373 
373          xvid_global_func = NULL;          xvid_global_func = NULL;
374          FreeLibrary(m_hdll);          FreeLibrary(m_hdll);
375          m_hdll = NULL;          m_hdll = NULL;
376                  MessageBox(0, "xvid_decore() not found", "Error", MB_TOPMOST);                  MessageBox(0, TEXT("xvid_decore() not found"), TEXT("Error"), MB_TOPMOST);
377                  return E_FAIL;                  return E_FAIL;
378          }          }
379    
# Line 366  Line 383 
383          xvid_decore_func = NULL;          xvid_decore_func = NULL;
384          FreeLibrary(m_hdll);          FreeLibrary(m_hdll);
385          m_hdll = NULL;          m_hdll = NULL;
386                  MessageBox(0, "xvid_global() failed", "Error", MB_TOPMOST);                  MessageBox(0, TEXT("xvid_global() failed"), TEXT("Error"), MB_TOPMOST);
387                  return E_FAIL;                  return E_FAIL;
388          }          }
389    
# Line 376  Line 393 
393          xvid_decore_func = NULL;          xvid_decore_func = NULL;
394          FreeLibrary(m_hdll);          FreeLibrary(m_hdll);
395          m_hdll = NULL;          m_hdll = NULL;
396                  MessageBox(0, "xvid_global() failed", "Error", MB_TOPMOST);                  MessageBox(0, TEXT("xvid_global() failed"), TEXT("Error"), MB_TOPMOST);
397                  return E_FAIL;                  return E_FAIL;
398          }          }
399    
# Line 603  Line 620 
620    {    {
621    case FOURCC_mp4v:    case FOURCC_mp4v:
622          case FOURCC_MP4V:          case FOURCC_MP4V:
623            case FOURCC_lmp4 :
624            case FOURCC_LMP4 :
625            case FOURCC_rmp4 :
626            case FOURCC_RMP4 :
627            case FOURCC_smp4 :
628            case FOURCC_SMP4 :
629            case FOURCC_hdx4 :
630            case FOURCC_HDX4 :
631                  if (!(g_config.supported_4cc & SUPPORT_MP4V)) {                  if (!(g_config.supported_4cc & SUPPORT_MP4V)) {
632                          CloseLib();                          CloseLib();
633                          return VFW_E_TYPE_NOT_ACCEPTED;                          return VFW_E_TYPE_NOT_ACCEPTED;
634                  }                  }
635                  break;                  break;
636            case FOURCC_divx :
637          case FOURCC_DIVX :          case FOURCC_DIVX :
638            case FOURCC_dx50 :
639            case FOURCC_DX50 :
640                  if (!(g_config.supported_4cc & SUPPORT_DIVX)) {                  if (!(g_config.supported_4cc & SUPPORT_DIVX)) {
641                          CloseLib();                          CloseLib();
642                          return VFW_E_TYPE_NOT_ACCEPTED;                          return VFW_E_TYPE_NOT_ACCEPTED;
643                  }                  }
644                  break;                  break;
645          case FOURCC_DX50 :          case FOURCC_3ivx :
646                  if (!(g_config.supported_4cc & SUPPORT_DX50)) {          case FOURCC_3IVX :
647            case FOURCC_3iv0 :
648            case FOURCC_3IV0 :
649            case FOURCC_3iv1 :
650            case FOURCC_3IV1 :
651            case FOURCC_3iv2 :
652            case FOURCC_3IV2 :
653                    if (!(g_config.supported_4cc & SUPPORT_3IVX)) {
654                          CloseLib();                          CloseLib();
655                          return VFW_E_TYPE_NOT_ACCEPTED;                          return VFW_E_TYPE_NOT_ACCEPTED;
656                  }                  }
657            case FOURCC_xvid :
658          case FOURCC_XVID :          case FOURCC_XVID :
659                  break;                  break;
660    
# Line 779  Line 815 
815  /* (internal function) change colorspace */  /* (internal function) change colorspace */
816  #define CALC_BI_STRIDE(width,bitcount)  ((((width * bitcount) + 31) & ~31) >> 3)  #define CALC_BI_STRIDE(width,bitcount)  ((((width * bitcount) + 31) & ~31) >> 3)
817    
818  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format)  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format, int noflip)
819  {  {
820          DWORD biWidth;          DWORD biWidth;
821    
# Line 802  Line 838 
838                  return S_FALSE;                  return S_FALSE;
839          }          }
840    
841            if (noflip) rgb_flip = 0;
842    
843          if (subtype == CLSID_MEDIASUBTYPE_IYUV)          if (subtype == CLSID_MEDIASUBTYPE_IYUV)
844          {          {
845                  DPRINTF("IYUV");                  DPRINTF("IYUV");
# Line 875  Line 913 
913    
914          if (direction == PINDIR_OUTPUT)          if (direction == PINDIR_OUTPUT)
915          {          {
916                  return ChangeColorspace(*pmt->Subtype(), *pmt->FormatType(), pmt->Format());                  return ChangeColorspace(*pmt->Subtype(), *pmt->FormatType(), pmt->Format(), 0);
917          }          }
918    
919          return S_OK;          return S_OK;
# Line 910  Line 948 
948                  wc.hInstance = (HINSTANCE) g_xvid_hInst;                  wc.hInstance = (HINSTANCE) g_xvid_hInst;
949                  wc.hbrBackground = (HBRUSH) GetStockObject(NULL_BRUSH);                  wc.hbrBackground = (HBRUSH) GetStockObject(NULL_BRUSH);
950                  wc.lpszMenuName = NULL;                  wc.lpszMenuName = NULL;
951                  wc.lpszClassName = "XVID_MSG_WINDOW";                  wc.lpszClassName = TEXT("XVID_MSG_WINDOW");
952                  wc.hIcon = NULL;                  wc.hIcon = NULL;
953                  wc.hIconSm = NULL;                  wc.hIconSm = NULL;
954                  wc.hCursor = NULL;                  wc.hCursor = NULL;
955                  RegisterClassEx(&wc);                  RegisterClassEx(&wc);
956    
957                  MSG_hwnd = CreateWindowEx(0, "XVID_MSG_WINDOW", NULL, 0, CW_USEDEFAULT,                  MSG_hwnd = CreateWindowEx(0, TEXT("XVID_MSG_WINDOW"), NULL, 0, CW_USEDEFAULT,
958                                    CW_USEDEFAULT, 0, 0, HWND_MESSAGE, NULL, (HINSTANCE) g_xvid_hInst, NULL);                                    CW_USEDEFAULT, 0, 0, HWND_MESSAGE, NULL, (HINSTANCE) g_xvid_hInst, NULL);
959    
960                  /* display the tray icon */                  /* display the tray icon */
# Line 928  Line 966 
966                  nid.uID = 1456;                  nid.uID = 1456;
967                  nid.uCallbackMessage = WM_ICONMESSAGE;                  nid.uCallbackMessage = WM_ICONMESSAGE;
968                  nid.hIcon = LoadIcon(g_xvid_hInst, MAKEINTRESOURCE(IDI_ICON));                  nid.hIcon = LoadIcon(g_xvid_hInst, MAKEINTRESOURCE(IDI_ICON));
969                  strcpy_s(nid.szTip, 19, "Xvid Video Decoder");                  lstrcpy(nid.szTip, TEXT("Xvid Video Decoder"));
970                  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;                  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
971    
972                  Shell_NotifyIcon(NIM_ADD, &nid);                  Shell_NotifyIcon(NIM_ADD, &nid);
# Line 1012  Line 1050 
1050          {          {
1051                  HRESULT result;                  HRESULT result;
1052    
1053                  result = ChangeColorspace(mtOut->subtype, mtOut->formattype, mtOut->pbFormat);                  result = ChangeColorspace(mtOut->subtype, mtOut->formattype, mtOut->pbFormat, 0);
1054                  DeleteMediaType(mtOut);                  DeleteMediaType(mtOut);
1055    
1056                  if (result != S_OK)                  if (result != S_OK)
# Line 1333  Line 1371 
1371          bs_guid_table[i++] = (GUID *)&CLSID_XVID;          bs_guid_table[i++] = (GUID *)&CLSID_XVID;
1372          bs_guid_table[i++] = (GUID *)&CLSID_XVID_UC;          bs_guid_table[i++] = (GUID *)&CLSID_XVID_UC;
1373    
1374          if (g_config.supported_4cc & SUPPORT_DX50) {          if (g_config.supported_4cc & SUPPORT_3IVX) {
1375                  bs_guid_table[i++] = (GUID *)&CLSID_DX50;                  bs_guid_table[i++] = (GUID *)&CLSID_3IVX;
1376                  bs_guid_table[i++] = (GUID *)&CLSID_DX50_UC;                  bs_guid_table[i++] = (GUID *)&CLSID_3IVX_UC;
1377                    bs_guid_table[i++] = (GUID *)&CLSID_3IV0;
1378                    bs_guid_table[i++] = (GUID *)&CLSID_3IV0_UC;
1379                    bs_guid_table[i++] = (GUID *)&CLSID_3IV1;
1380                    bs_guid_table[i++] = (GUID *)&CLSID_3IV1_UC;
1381                    bs_guid_table[i++] = (GUID *)&CLSID_3IV2;
1382                    bs_guid_table[i++] = (GUID *)&CLSID_3IV2_UC;
1383          }          }
1384          if (g_config.supported_4cc & SUPPORT_DIVX) {          if (g_config.supported_4cc & SUPPORT_DIVX) {
1385                  bs_guid_table[i++] = (GUID *)&CLSID_DIVX;                  bs_guid_table[i++] = (GUID *)&CLSID_DIVX;
1386                  bs_guid_table[i++] = (GUID *)&CLSID_DIVX_UC;                  bs_guid_table[i++] = (GUID *)&CLSID_DIVX_UC;
1387                    bs_guid_table[i++] = (GUID *)&CLSID_DX50;
1388                    bs_guid_table[i++] = (GUID *)&CLSID_DX50_UC;
1389          }          }
1390          if (g_config.supported_4cc & SUPPORT_MP4V) {          if (g_config.supported_4cc & SUPPORT_MP4V) {
1391                  bs_guid_table[i++] = (GUID *)&CLSID_MP4V;                  bs_guid_table[i++] = (GUID *)&CLSID_MP4V;
1392                  bs_guid_table[i++] = (GUID *)&CLSID_MP4V_UC;                  bs_guid_table[i++] = (GUID *)&CLSID_MP4V_UC;
1393                    bs_guid_table[i++] = (GUID *)&CLSID_LMP4;
1394                    bs_guid_table[i++] = (GUID *)&CLSID_LMP4_UC;
1395                    bs_guid_table[i++] = (GUID *)&CLSID_RMP4;
1396                    bs_guid_table[i++] = (GUID *)&CLSID_RMP4_UC;
1397                    bs_guid_table[i++] = (GUID *)&CLSID_SMP4;
1398                    bs_guid_table[i++] = (GUID *)&CLSID_SMP4_UC;
1399                    bs_guid_table[i++] = (GUID *)&CLSID_HDX4;
1400                    bs_guid_table[i++] = (GUID *)&CLSID_HDX4_UC;
1401          }          }
1402    
1403          const GUID *subtype;          const GUID *subtype;
# Line 1577  Line 1631 
1631                          hr = MFCreateAMMediaTypeFromMFMediaType(pType, GUID_NULL, &am);                          hr = MFCreateAMMediaTypeFromMFMediaType(pType, GUID_NULL, &am);
1632    
1633                          if (SUCCEEDED(hr)) {                          if (SUCCEEDED(hr)) {
1634                                  if (FAILED(ChangeColorspace(am->subtype, am->formattype, am->pbFormat))) {                                  if (FAILED(ChangeColorspace(am->subtype, am->formattype, am->pbFormat, 1))) {
1635                                          DPRINTF("(MFT)InternalCheckOutputType (MF_E_INVALIDTYPE)");                                          DPRINTF("(MFT)InternalCheckOutputType (MF_E_INVALIDTYPE)");
1636                                          return MF_E_INVALIDTYPE;                                          return MF_E_INVALIDTYPE;
1637                                  }                                  }
# Line 1606  Line 1660 
1660                  wc.hInstance = (HINSTANCE) g_xvid_hInst;                  wc.hInstance = (HINSTANCE) g_xvid_hInst;
1661                  wc.hbrBackground = (HBRUSH) GetStockObject(NULL_BRUSH);                  wc.hbrBackground = (HBRUSH) GetStockObject(NULL_BRUSH);
1662                  wc.lpszMenuName = NULL;                  wc.lpszMenuName = NULL;
1663                  wc.lpszClassName = "XVID_MSG_WINDOW";                  wc.lpszClassName = TEXT("XVID_MSG_WINDOW");
1664                  wc.hIcon = NULL;                  wc.hIcon = NULL;
1665                  wc.hIconSm = NULL;                  wc.hIconSm = NULL;
1666                  wc.hCursor = NULL;                  wc.hCursor = NULL;
1667                  RegisterClassEx(&wc);                  RegisterClassEx(&wc);
1668    
1669                  MSG_hwnd = CreateWindowEx(0, "XVID_MSG_WINDOW", NULL, 0, CW_USEDEFAULT,                  MSG_hwnd = CreateWindowEx(0, TEXT("XVID_MSG_WINDOW"), NULL, 0, CW_USEDEFAULT,
1670                                    CW_USEDEFAULT, 0, 0, HWND_MESSAGE, NULL, (HINSTANCE) g_xvid_hInst, NULL);                                    CW_USEDEFAULT, 0, 0, HWND_MESSAGE, NULL, (HINSTANCE) g_xvid_hInst, NULL);
1671    
1672                  /* display the tray icon */                  /* display the tray icon */
# Line 1624  Line 1678 
1678                  nid.uID = 1456;                  nid.uID = 1456;
1679                  nid.uCallbackMessage = WM_ICONMESSAGE;                  nid.uCallbackMessage = WM_ICONMESSAGE;
1680                  nid.hIcon = LoadIcon(g_xvid_hInst, MAKEINTRESOURCE(IDI_ICON));                  nid.hIcon = LoadIcon(g_xvid_hInst, MAKEINTRESOURCE(IDI_ICON));
1681                  strcpy_s(nid.szTip, 19, "Xvid Video Decoder");                  lstrcpy(nid.szTip, TEXT("Xvid Video Decoder"));
1682                  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;                  nid.uFlags = NIF_MESSAGE | NIF_ICON | NIF_TIP;
1683    
1684                  Shell_NotifyIcon(NIM_ADD, &nid);                  Shell_NotifyIcon(NIM_ADD, &nid);
# Line 1853  Line 1907 
1907          EnterCriticalSection(&m_mft_lock);          EnterCriticalSection(&m_mft_lock);
1908    
1909          HRESULT hr = S_OK;          HRESULT hr = S_OK;
1910          IMFMediaBuffer *pBuffer;          IMFMediaBuffer *pBuffer = NULL;
1911    
1912          if (SUCCEEDED(hr)) {          if (SUCCEEDED(hr)) {
1913                  hr = pSample->ConvertToContiguousBuffer(&pBuffer);                  hr = pSample->ConvertToContiguousBuffer(&pBuffer);
# Line 2107  Line 2161 
2161          }          }
2162    
2163          if (m_hdll == NULL) {          if (m_hdll == NULL) {
2164                  HRESULT hr = OpenLib();                  HRESULT hr2 = OpenLib();
2165    
2166                  if (FAILED(hr) || (m_hdll == NULL)) // Paranoid checks.                  if (FAILED(hr2) || (m_hdll == NULL)) // Paranoid checks.
2167                          hr = MF_E_INVALIDTYPE;                          hr = MF_E_INVALIDTYPE;
2168          }          }
2169    
# Line 2143  Line 2197 
2197                  hr = pmt->GetGUID(MF_MT_SUBTYPE, &subtype);                  hr = pmt->GetGUID(MF_MT_SUBTYPE, &subtype);
2198          }          }
2199    
2200          if (subtype == CLSID_MP4V || subtype == CLSID_MP4V_UC) {          if (subtype == CLSID_MP4V || subtype == CLSID_MP4V_UC ||
2201                subtype == CLSID_LMP4 || subtype == CLSID_LMP4_UC ||
2202                subtype == CLSID_RMP4 || subtype == CLSID_RMP4_UC ||
2203                subtype == CLSID_SMP4 || subtype == CLSID_SMP4_UC ||
2204                subtype == CLSID_HDX4 || subtype == CLSID_HDX4_UC) {
2205                  if (!(g_config.supported_4cc & SUPPORT_MP4V)) {                  if (!(g_config.supported_4cc & SUPPORT_MP4V)) {
2206                          CloseLib();                          CloseLib();
2207                          hr = MF_E_INVALIDTYPE;                          hr = MF_E_INVALIDTYPE;
# Line 2158  Line 2216 
2216                  else m_create.fourcc = FOURCC_DIVX;                  else m_create.fourcc = FOURCC_DIVX;
2217          }          }
2218          else if (subtype == CLSID_DX50 || subtype == CLSID_DX50_UC) {          else if (subtype == CLSID_DX50 || subtype == CLSID_DX50_UC) {
2219                  if (!(g_config.supported_4cc & SUPPORT_DX50)) {                  if (!(g_config.supported_4cc & SUPPORT_DIVX)) {
2220                          CloseLib();                          CloseLib();
2221                          hr = MF_E_INVALIDTYPE;                          hr = MF_E_INVALIDTYPE;
2222                  }                  }
2223                  else m_create.fourcc = FOURCC_DX50;                  else m_create.fourcc = FOURCC_DX50;
2224          }          }
2225            else if (subtype == CLSID_3IVX || subtype == CLSID_3IVX_UC ||
2226                     subtype == CLSID_3IV0 || subtype == CLSID_3IV0_UC ||
2227                     subtype == CLSID_3IV1 || subtype == CLSID_3IV1_UC ||
2228                     subtype == CLSID_3IV2 || subtype == CLSID_3IV2_UC) {
2229                    if (!(g_config.supported_4cc & SUPPORT_3IVX)) {
2230                            CloseLib();
2231                            hr = MF_E_INVALIDTYPE;
2232                    }
2233                    else m_create.fourcc = FOURCC_3IVX;
2234            }
2235          else if (subtype == CLSID_XVID || subtype == CLSID_XVID_UC) {          else if (subtype == CLSID_XVID || subtype == CLSID_XVID_UC) {
2236                  m_create.fourcc = FOURCC_XVID;                  m_create.fourcc = FOURCC_XVID;
2237          }          }

Legend:
Removed from v.1916  
changed lines
  Added in v.2018

No admin address has been configured
ViewVC Help
Powered by ViewVC 1.0.4