| 693 | } |
| 694 | |
| 695 | DECODING_STATE CWelsDecoder::DecodeFrameNoDelay (const unsigned char* kpSrc, |
| 696 | const int kiSrcLen, |
| 697 | unsigned char** ppDst, |
| 698 | SBufferInfo* pDstInfo) { |
| 699 | int iRet = dsErrorFree; |
| 700 | if (m_iThreadCount >= 1) { |
| 701 | SET_EVENT (&m_sReleaseBufferEvent); |
| 702 | iRet = ThreadDecodeFrameInternal (kpSrc, kiSrcLen, ppDst, pDstInfo); |
| 703 | if (m_sReoderingStatus.iNumOfPicts) { |
| 704 | WAIT_EVENT (&m_sBufferingEvent, WELS_DEC_THREAD_WAIT_INFINITE); |
| 705 | RESET_EVENT (&m_sBufferingEvent); |
| 706 | RESET_EVENT (&m_sReleaseBufferEvent); |
| 707 | if (!m_sReoderingStatus.bHasBSlice) { |
| 708 | if (m_sReoderingStatus.iNumOfPicts > 1) { |
| 709 | ReleaseBufferedReadyPictureNoReorder (NULL, ppDst, pDstInfo); |
| 710 | } |
| 711 | } |
| 712 | else { |
| 713 | ReleaseBufferedReadyPictureReorder (NULL, ppDst, pDstInfo); |
| 714 | } |
| 715 | } |
| 716 | return (DECODING_STATE)iRet; |
| 717 | } |
| 718 | //SBufferInfo sTmpBufferInfo; |
| 719 | //unsigned char* ppTmpDst[3] = {NULL, NULL, NULL}; |
| 720 | iRet = (int)DecodeFrame2 (kpSrc, kiSrcLen, ppDst, pDstInfo); |
| 721 | //memcpy (&sTmpBufferInfo, pDstInfo, sizeof (SBufferInfo)); |
| 722 | //ppTmpDst[0] = ppDst[0]; |
| 723 | //ppTmpDst[1] = ppDst[1]; |
| 724 | //ppTmpDst[2] = ppDst[2]; |
| 725 | iRet |= DecodeFrame2 (NULL, 0, ppDst, pDstInfo); |
| 726 | //if ((pDstInfo->iBufferStatus == 0) && (sTmpBufferInfo.iBufferStatus == 1)) { |
| 727 | //memcpy (pDstInfo, &sTmpBufferInfo, sizeof (SBufferInfo)); |
| 728 | //ppDst[0] = ppTmpDst[0]; |
| 729 | //ppDst[1] = ppTmpDst[1]; |
| 730 | //ppDst[2] = ppTmpDst[2]; |
| 731 | //} |
| 732 | return (DECODING_STATE)iRet; |
| 733 | } |
| 734 | |
| 735 | DECODING_STATE CWelsDecoder::DecodeFrame2WithCtx (PWelsDecoderContext pDecContext, const unsigned char* kpSrc, |
| 736 | const int kiSrcLen, |
no outgoing calls
no test coverage detected