319 |
switch(iPosition) |
switch(iPosition) |
320 |
{ |
{ |
321 |
case 0 : |
case 0 : |
322 |
|
vih->bmiHeader.biCompression = MEDIASUBTYPE_IYUV.Data1; |
323 |
|
vih->bmiHeader.biBitCount = 12; |
324 |
|
mtOut->SetSubtype(&MEDIASUBTYPE_IYUV); |
325 |
|
break; |
326 |
|
|
327 |
|
case 1 : |
328 |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YV12.Data1; |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YV12.Data1; |
329 |
vih->bmiHeader.biBitCount = 12; |
vih->bmiHeader.biBitCount = 12; |
330 |
mtOut->SetSubtype(&MEDIASUBTYPE_YV12); |
mtOut->SetSubtype(&MEDIASUBTYPE_YV12); |
331 |
break; |
break; |
332 |
|
|
333 |
case 1: |
case 2: |
334 |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YUY2.Data1; |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YUY2.Data1; |
335 |
vih->bmiHeader.biBitCount = 16; |
vih->bmiHeader.biBitCount = 16; |
336 |
mtOut->SetSubtype(&MEDIASUBTYPE_YUY2); |
mtOut->SetSubtype(&MEDIASUBTYPE_YUY2); |
337 |
break; |
break; |
338 |
|
|
339 |
case 2: |
case 3 : |
340 |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YVYU.Data1; |
vih->bmiHeader.biCompression = MEDIASUBTYPE_YVYU.Data1; |
341 |
vih->bmiHeader.biBitCount = 16; |
vih->bmiHeader.biBitCount = 16; |
342 |
mtOut->SetSubtype(&MEDIASUBTYPE_YVYU); |
mtOut->SetSubtype(&MEDIASUBTYPE_YVYU); |
343 |
break; |
break; |
344 |
|
|
345 |
case 3: |
case 4 : |
346 |
vih->bmiHeader.biCompression = MEDIASUBTYPE_UYVY.Data1; |
vih->bmiHeader.biCompression = MEDIASUBTYPE_UYVY.Data1; |
347 |
vih->bmiHeader.biBitCount = 16; |
vih->bmiHeader.biBitCount = 16; |
348 |
mtOut->SetSubtype(&MEDIASUBTYPE_UYVY); |
mtOut->SetSubtype(&MEDIASUBTYPE_UYVY); |
349 |
break; |
break; |
350 |
|
|
351 |
case 4: |
case 5 : |
352 |
vih->bmiHeader.biCompression = BI_RGB; |
vih->bmiHeader.biCompression = BI_RGB; |
353 |
vih->bmiHeader.biBitCount = 32; |
vih->bmiHeader.biBitCount = 32; |
354 |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB32); |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB32); |
355 |
break; |
break; |
356 |
|
|
357 |
case 5: |
case 6 : |
358 |
vih->bmiHeader.biCompression = BI_RGB; |
vih->bmiHeader.biCompression = BI_RGB; |
359 |
vih->bmiHeader.biBitCount = 24; |
vih->bmiHeader.biBitCount = 24; |
360 |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB24); |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB24); |
361 |
break; |
break; |
362 |
|
|
363 |
case 6: |
case 7 : |
364 |
vih->bmiHeader.biCompression = BI_RGB; |
vih->bmiHeader.biCompression = BI_RGB; |
365 |
vih->bmiHeader.biBitCount = 16; |
vih->bmiHeader.biBitCount = 16; |
366 |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB555); |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB555); |
367 |
break; |
break; |
368 |
|
|
369 |
case 7: |
case 8 : |
370 |
vih->bmiHeader.biCompression = BI_RGB; |
vih->bmiHeader.biCompression = BI_RGB; |
371 |
vih->bmiHeader.biBitCount = 16; |
vih->bmiHeader.biBitCount = 16; |
372 |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB565); |
mtOut->SetSubtype(&MEDIASUBTYPE_RGB565); |
391 |
|
|
392 |
HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format) |
HRESULT CXvidDecoder::ChangeColorspace(GUID subtype, GUID formattype, void * format) |
393 |
{ |
{ |
394 |
if (subtype == MEDIASUBTYPE_YV12) |
if (subtype == MEDIASUBTYPE_IYUV) |
395 |
|
{ |
396 |
|
DEBUG("IYUV"); |
397 |
|
m_frame.colorspace = XVID_CSP_I420; |
398 |
|
} |
399 |
|
else if (subtype == MEDIASUBTYPE_YV12) |
400 |
{ |
{ |
401 |
DEBUG("YV12"); |
DEBUG("YV12"); |
402 |
m_frame.colorspace = XVID_CSP_YV12; |
m_frame.colorspace = XVID_CSP_YV12; |