diff options
| author | Jean-Michel Trivi <jmtrivi@google.com> | 2018-12-27 22:18:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2018-12-27 22:18:54 +0000 |
| commit | ecc96969d7db139242dbba9930857ed5ce955b29 (patch) | |
| tree | e78e88638c742d3dcd5f704d6ad50758d256a945 /libSBRdec/src/sbrdecoder.cpp | |
| parent | f828d3e16adfb4cb428b4f3a2c155f89853cebbe (diff) | |
| parent | 0cebd077b61cc0946ea4062bf816defdffaef72b (diff) | |
| download | fdk-aac-ecc96969d7db139242dbba9930857ed5ce955b29.tar.gz fdk-aac-ecc96969d7db139242dbba9930857ed5ce955b29.tar.bz2 fdk-aac-ecc96969d7db139242dbba9930857ed5ce955b29.zip | |
Merge changes I97471c4d,I8a8626a8,I1f176740,I10da23ee,I9f9064fb
* changes:
Apply sbrDecoder_Parse() function for all explict SBR elements
Call QMF transposer initialization only with successful SBR processing
Add error path to generateFixFixOnly()
Add missing break in order to avoid a fallthrough in setConcealMethod()
Add FDK_FALLTHROUGH macro to prevent implicit-fallthrough compiler warnings
Diffstat (limited to 'libSBRdec/src/sbrdecoder.cpp')
| -rw-r--r-- | libSBRdec/src/sbrdecoder.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libSBRdec/src/sbrdecoder.cpp b/libSBRdec/src/sbrdecoder.cpp index e2455da..4bc6f69 100644 --- a/libSBRdec/src/sbrdecoder.cpp +++ b/libSBRdec/src/sbrdecoder.cpp @@ -1150,6 +1150,11 @@ SBR_ERROR sbrDecoder_Parse(HANDLE_SBRDECODER self, HANDLE_FDK_BITSTREAM hBs, int lastSlot, lastHdrSlot = 0, thisHdrSlot = 0; + if (*count <= 0) { + setFrameErrorFlag(self->pSbrElement[elementIndex], FRAME_ERROR); + return SBRDEC_OK; + } + /* SBR sanity checks */ if (self == NULL) { errorStatus = SBRDEC_NOT_INITIALIZED; @@ -1677,6 +1682,9 @@ static SBR_ERROR sbrDecoder_DecodeElement( /* reset */ if (hSbrHeader->status & SBRDEC_HDR_STAT_RESET) { int ch; + int applySbrProc = (hSbrHeader->syncState == SBR_ACTIVE || + (hSbrHeader->frameErrorFlag == 0 && + hSbrHeader->syncState == SBR_HEADER)); for (ch = 0; ch < numElementChannels; ch++) { SBR_ERROR errorStatusTmp = SBRDEC_OK; @@ -1688,7 +1696,9 @@ static SBR_ERROR sbrDecoder_DecodeElement( hSbrHeader->syncState = UPSAMPLING; } } - hSbrHeader->status &= ~SBRDEC_HDR_STAT_RESET; + if (applySbrProc) { + hSbrHeader->status &= ~SBRDEC_HDR_STAT_RESET; + } } /* decoding */ |
