[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 392, Wed Sep 4 18:44:41 2002 UTC revision 613, Mon Oct 28 11:18:05 2002 UTC
# Line 290  Line 290 
290    
291  /* get list of supported output colorspaces */  /* get list of supported output colorspaces */
292    
293    #define ENABLE_IYUV
294    #define ENABLE_YV12
295    #define ENABLE_YUY2
296    #define ENABLE_UYVY
297    #define ENABLE_YVYU
298    #define ENABLE_RGB32
299    #define ENABLE_RGB24
300    #define ENABLE_RGB565
301    #define ENABLE_RGB555
302    
303  HRESULT CXvidDecoder::GetMediaType(int iPosition, CMediaType *mtOut)  HRESULT CXvidDecoder::GetMediaType(int iPosition, CMediaType *mtOut)
304  {  {
305          DEBUG("GetMediaType");          DEBUG("GetMediaType");
# Line 319  Line 329 
329          switch(iPosition)          switch(iPosition)
330          {          {
331          case 0  :          case 0  :
332    #ifdef ENABLE_IYUV
333                    vih->bmiHeader.biCompression = MEDIASUBTYPE_IYUV.Data1;
334                    vih->bmiHeader.biBitCount = 12;
335                    mtOut->SetSubtype(&MEDIASUBTYPE_IYUV);
336                    break;
337    #endif
338    
339            case 1:
340    #ifdef ENABLE_YV12
341                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YV12.Data1;                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YV12.Data1;
342                  vih->bmiHeader.biBitCount = 12;                  vih->bmiHeader.biBitCount = 12;
343                  mtOut->SetSubtype(&MEDIASUBTYPE_YV12);                  mtOut->SetSubtype(&MEDIASUBTYPE_YV12);
344                  break;                  break;
345    #endif
346    
347          case 1:          case 2:
348    #ifdef ENABLE_YUY2
349                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YUY2.Data1;                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YUY2.Data1;
350                  vih->bmiHeader.biBitCount = 16;                  vih->bmiHeader.biBitCount = 16;
351                  mtOut->SetSubtype(&MEDIASUBTYPE_YUY2);                  mtOut->SetSubtype(&MEDIASUBTYPE_YUY2);
352                  break;                  break;
353    #endif
354    
355          case 2:          case 3:
356    #ifdef ENABLE_YVYU
357                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YVYU.Data1;                  vih->bmiHeader.biCompression = MEDIASUBTYPE_YVYU.Data1;
358                  vih->bmiHeader.biBitCount = 16;                  vih->bmiHeader.biBitCount = 16;
359                  mtOut->SetSubtype(&MEDIASUBTYPE_YVYU);                  mtOut->SetSubtype(&MEDIASUBTYPE_YVYU);
360                  break;                  break;
361    #endif
362    
363          case 3:          case 4:
364    #ifdef ENABLE_UYVY
365                  vih->bmiHeader.biCompression = MEDIASUBTYPE_UYVY.Data1;                  vih->bmiHeader.biCompression = MEDIASUBTYPE_UYVY.Data1;
366                  vih->bmiHeader.biBitCount = 16;                  vih->bmiHeader.biBitCount = 16;
367                  mtOut->SetSubtype(&MEDIASUBTYPE_UYVY);                  mtOut->SetSubtype(&MEDIASUBTYPE_UYVY);
368                  break;                  break;
369    #endif
370    
371          case 4:          case 5:
372    #ifdef ENABLE_RGB32
373                  vih->bmiHeader.biCompression = BI_RGB;                  vih->bmiHeader.biCompression = BI_RGB;
374                  vih->bmiHeader.biBitCount = 32;                  vih->bmiHeader.biBitCount = 32;
375                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB32);                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB32);
376                  break;                  break;
377    #endif
378    
379          case 5:          case 6:
380    #ifdef ENABLE_RGB24
381                  vih->bmiHeader.biCompression = BI_RGB;                  vih->bmiHeader.biCompression = BI_RGB;
382                  vih->bmiHeader.biBitCount = 24;                  vih->bmiHeader.biBitCount = 24;
383                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB24);                  mtOut->SetSubtype(&MEDIASUBTYPE_RGB24);
384                  break;                  break;
385    #endif
386    
387          case 6:          case 7:
388    #ifdef ENABLE_RGB555
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_RGB555);
392                  break;                  break;
393    #endif
394    
395          case 7:          case 8:
396    #ifdef ENABLE_RGB565
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_RGB565);
400                  break;                  break;
401    #endif
402    
403          default :          default :
404                  return VFW_S_NO_MORE_ITEMS;                  return VFW_S_NO_MORE_ITEMS;
# Line 385  Line 419 
419    
420  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format)  HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format)
421  {  {
422          if (subtype == MEDIASUBTYPE_YV12)          if (subtype == MEDIASUBTYPE_IYUV)
423            {
424                    DEBUG("IYUV");
425                    m_frame.colorspace = XVID_CSP_I420;
426            }
427            else if (subtype == MEDIASUBTYPE_YV12)
428          {          {
429                  DEBUG("YV12");                  DEBUG("YV12");
430                  m_frame.colorspace = XVID_CSP_YV12;                  m_frame.colorspace = XVID_CSP_YV12;
# Line 439  Line 478 
478          {          {
479                  VIDEOINFOHEADER * vih = (VIDEOINFOHEADER * )format;                  VIDEOINFOHEADER * vih = (VIDEOINFOHEADER * )format;
480                  m_frame.stride = vih->bmiHeader.biWidth;                  m_frame.stride = vih->bmiHeader.biWidth;
481                    // dev-api-3: m_frame.stride = (((vih->bmiHeader.biWidth * vih->bmiHeader.biBitCount) + 31) & ~31) >> 3;
482          }          }
483          else if (formattype == FORMAT_VideoInfo2)          else if (formattype == FORMAT_VideoInfo2)
484          {          {
485                  VIDEOINFOHEADER2 * vih2 = (VIDEOINFOHEADER2 * )format;                  VIDEOINFOHEADER2 * vih2 = (VIDEOINFOHEADER2 * )format;
486                  m_frame.stride = vih2->bmiHeader.biWidth;                  m_frame.stride = vih2->bmiHeader.biWidth;
487                    // dev-api-3: m_frame.stride = (((vih2->bmiHeader.biWidth * vih2->bmiHeader.biBitCount) + 31) & ~31) >> 3;
488          }          }
489          else          else
490          {          {

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

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