|
|
|
Lines 612-631
PRBool nsWebMReader::DecodeVideoFrame(PR
|
Link Here
|
|---|
|
| 612 |
if (r == -1) { |
612 |
if (r == -1) { |
| 613 |
return PR_FALSE; |
613 |
return PR_FALSE; |
| 614 |
} |
614 |
} |
| 615 |
|
615 |
|
| 616 |
vpx_codec_stream_info_t si; |
616 |
vpx_codec_stream_info_t si; |
| 617 |
memset(&si, 0, sizeof(si)); |
617 |
memset(&si, 0, sizeof(si)); |
| 618 |
si.sz = sizeof(si); |
618 |
si.sz = sizeof(si); |
| 619 |
vpx_codec_peek_stream_info(&vpx_codec_vp8_dx_algo, data, length, &si); |
619 |
vpx_codec_peek_stream_info(&vpx_codec_vp8_dx_algo, data, length, &si); |
| 620 |
if ((aKeyframeSkip && !si.is_kf) || (aKeyframeSkip && si.is_kf && tstamp_ms < aTimeThreshold)) { |
620 |
if (aKeyframeSkip && (!si.is_kf || tstamp_ms < aTimeThreshold)) { |
| 621 |
aKeyframeSkip = PR_TRUE; |
621 |
// Skipping to next keyframe... |
| 622 |
aParsed++; // Assume 1 frame per chunk. |
622 |
aParsed++; // Assume 1 frame per chunk. |
| 623 |
break; |
623 |
continue; |
| 624 |
} |
624 |
} |
| 625 |
|
625 |
|
| 626 |
if (aKeyframeSkip && si.is_kf) { |
626 |
if (aKeyframeSkip && si.is_kf) { |
| 627 |
aKeyframeSkip = PR_FALSE; |
627 |
aKeyframeSkip = PR_FALSE; |
| 628 |
} |
628 |
} |
| 629 |
|
629 |
|
| 630 |
if (vpx_codec_decode(&mVP8, data, length, NULL, 0)) { |
630 |
if (vpx_codec_decode(&mVP8, data, length, NULL, 0)) { |
| 631 |
return PR_FALSE; |
631 |
return PR_FALSE; |