[svn] / branches / dev-api-3 / dshow / src / CXvidDecoder.cpp Repository:
ViewVC logotype

Diff of /branches/dev-api-3/dshow/src/CXvidDecoder.cpp

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

revision 613, Mon Oct 28 11:18:05 2002 UTC revision 632, Thu Nov 7 10:34:14 2002 UTC
# Line 385  Line 385 
385  #endif  #endif
386    
387          case 7:          case 7:
388  #ifdef ENABLE_RGB555  #ifdef ENABLE_RGB565
389                  vih->bmiHeader.biCompression = BI_RGB;                  vih->bmiHeader.biCompression = BI_RGB;
390                  vih->bmiHeader.biBitCount = 16;                  vih->bmiHeader.biBitCount = 16;
391                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB555);                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB565);
392                  break;                  break;
393  #endif  #endif
394    
395          case 8:          case 8:
396  #ifdef ENABLE_RGB565  #ifdef ENABLE_RGB555
397                  vih->bmiHeader.biCompression = BI_RGB;                  vih->bmiHeader.biCompression = BI_RGB;
398                  vih->bmiHeader.biBitCount = 16;                  vih->bmiHeader.biBitCount = 16;
399                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB565);                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB555);
400                  break;                  break;
401  #endif  #endif
402    
# Line 419  Line 419 
419    
420  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format)  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format)
421  {  {
422            int rgb_flip;
423    
424            if (formattype == FORMAT_VideoInfo)
425            {
426                    VIDEOINFOHEADER * vih = (VIDEOINFOHEADER * )format;
427                    //m_frame.stride = vih->bmiHeader.biWidth;
428                    // dev-api-3:
429                    m_frame.stride = (((vih->bmiHeader.biWidth * vih->bmiHeader.biBitCount) + 31) & ~31) >> 3;
430                    rgb_flip = (vih->bmiHeader.biHeight < 0 ? 0 : XVID_CSP_VFLIP);
431            }
432            else if (formattype == FORMAT_VideoInfo2)
433            {
434                    VIDEOINFOHEADER2 * vih2 = (VIDEOINFOHEADER2 * )format;
435                    //m_frame.stride = vih2->bmiHeader.biWidth;
436                    // dev-api-3:
437                    m_frame.stride = (((vih2->bmiHeader.biWidth * vih2->bmiHeader.biBitCount) + 31) & ~31) >> 3;
438                    rgb_flip = (vih2->bmiHeader.biHeight < 0 ? 0 : XVID_CSP_VFLIP);
439            }
440            else
441            {
442                    return S_FALSE;
443            }
444    
445          if (subtype == MEDIASUBTYPE_IYUV)          if (subtype == MEDIASUBTYPE_IYUV)
446          {          {
447                  DEBUG("IYUV");                  DEBUG("IYUV");
# Line 447  Line 470 
470          else if (subtype == MEDIASUBTYPE_RGB32)          else if (subtype == MEDIASUBTYPE_RGB32)
471          {          {
472                  DEBUG("RGB32");                  DEBUG("RGB32");
473                  m_frame.colorspace = XVID_CSP_VFLIP | XVID_CSP_RGB32;                  m_frame.colorspace = rgb_flip | XVID_CSP_RGB32;
474          }          }
475          else if (subtype == MEDIASUBTYPE_RGB24)          else if (subtype == MEDIASUBTYPE_RGB24)
476          {          {
477                  DEBUG("RGB24");                  DEBUG("RGB24");
478                  m_frame.colorspace = XVID_CSP_VFLIP | XVID_CSP_RGB24;                  m_frame.colorspace = rgb_flip | XVID_CSP_RGB24;
479          }          }
480          else if (subtype == MEDIASUBTYPE_RGB555)          else if (subtype == MEDIASUBTYPE_RGB555)
481          {          {
482                  DEBUG("RGB555");                  DEBUG("RGB555");
483                  m_frame.colorspace = XVID_CSP_VFLIP | XVID_CSP_RGB555;                  m_frame.colorspace = rgb_flip | XVID_CSP_RGB555;
484          }          }
485          else if (subtype == MEDIASUBTYPE_RGB565)          else if (subtype == MEDIASUBTYPE_RGB565)
486          {          {
487                  DEBUG("RGB565");                  DEBUG("RGB565");
488                  m_frame.colorspace = XVID_CSP_VFLIP | XVID_CSP_RGB565;                  m_frame.colorspace = rgb_flip | XVID_CSP_RGB565;
489          }          }
490          else if (subtype == GUID_NULL)          else if (subtype == GUID_NULL)
491          {          {
# Line 473  Line 496 
496                  return S_FALSE;                  return S_FALSE;
497          }          }
498    
   
         if (formattype == FORMAT_VideoInfo)  
         {  
                 VIDEOINFOHEADER * vih = (VIDEOINFOHEADER * )format;  
                 m_frame.stride = vih->bmiHeader.biWidth;  
                 // dev-api-3: m_frame.stride = (((vih->bmiHeader.biWidth * vih->bmiHeader.biBitCount) + 31) & ~31) >> 3;  
         }  
         else if (formattype == FORMAT_VideoInfo2)  
         {  
                 VIDEOINFOHEADER2 * vih2 = (VIDEOINFOHEADER2 * )format;  
                 m_frame.stride = vih2->bmiHeader.biWidth;  
                 // dev-api-3: m_frame.stride = (((vih2->bmiHeader.biWidth * vih2->bmiHeader.biBitCount) + 31) & ~31) >> 3;  
         }  
         else  
         {  
                 return S_FALSE;  
         }  
   
499          return S_OK;          return S_OK;
500    
501  }  }

Legend:
Removed from v.613  
changed lines
  Added in v.632

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