diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-03-25 19:30:12 +0100 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2014-03-25 19:30:12 +0100 |
commit | 05e6de86461b4ab0c55880db0c83d7a7bd6c5bc1 (patch) | |
tree | 9804f6b9519f508f79480b4a3390b357fc183b1a | |
parent | ab1f4c8796e0699b16eb95658fd534145af5600b (diff) | |
download | ODR-AudioEnc-05e6de86461b4ab0c55880db0c83d7a7bd6c5bc1.tar.gz ODR-AudioEnc-05e6de86461b4ab0c55880db0c83d7a7bd6c5bc1.tar.bz2 ODR-AudioEnc-05e6de86461b4ab0c55880db0c83d7a7bd6c5bc1.zip |
Write DSE at start of AU
To respect the ETSI standard for XPAD in DAB+
-rw-r--r-- | libAACenc/src/bitenc.cpp | 64 |
1 files changed, 36 insertions, 28 deletions
diff --git a/libAACenc/src/bitenc.cpp b/libAACenc/src/bitenc.cpp index 6f2c151..c7f698a 100644 --- a/libAACenc/src/bitenc.cpp +++ b/libAACenc/src/bitenc.cpp @@ -1302,6 +1302,41 @@ AAC_ENCODER_ERROR FDKaacEnc_WriteBitstream(HANDLE_TRANSPORTENC hTpEnc, frameBits = bitMarkUp = alignAnchor; +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +/// Block moved in order to write DSE at the beginning of the bit stream - Sergio Sagliocco (CSP) + + /* Add fill data / stuffing bits */ + n = qcOut->nExtensions; + +// if (!(syntaxFlags & AC_DAB)) { + qcOut->extension[n].type = EXT_FILL_DATA; + qcOut->extension[n].nPayloadBits = qcOut->totFillBits; + qcOut->nExtensions++; +// } else { +// doByteAlign = 0; +// } + if (syntaxFlags & AC_DAB) + doByteAlign = 0; + + /* Write global extension payload and fill data */ + for (n = 0; (n < qcOut->nExtensions) && (n < (2+2)); n++) + { + //fprintf(stderr,"SERGIO FDKaacEnc_WriteBitstream: call FDKaacEnc_writeExtensionData - 3 (%d)\n",n); + + FDKaacEnc_writeExtensionData( hTpEnc, + &qcOut->extension[n], + 0, + alignAnchor, + syntaxFlags, + aot, + epConfig ); + + /* For EXT_FIL or EXT_FILL_DATA we could do an additional sanity check here */ + } + + +//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + /* Channel element loop */ for (i=0; i<channelMapping->nElements; i++) { @@ -1362,7 +1397,7 @@ AAC_ENCODER_ERROR FDKaacEnc_WriteBitstream(HANDLE_TRANSPORTENC hTpEnc, if ( (syntaxFlags & AC_ER) && !(syntaxFlags & AC_DRM) ) { - UCHAR channelElementExtensionWritten[(8)][(1)]; /* 0: extension not touched, 1: extension already written */ + UCHAR channelElementExtensionWritten[(6)][(1)]; /* 0: extension not touched, 1: extension already written */ FDKmemclear(channelElementExtensionWritten, sizeof(channelElementExtensionWritten)); @@ -1429,33 +1464,6 @@ AAC_ENCODER_ERROR FDKaacEnc_WriteBitstream(HANDLE_TRANSPORTENC hTpEnc, } /* AC_DRM */ - /* Add fill data / stuffing bits */ - n = qcOut->nExtensions; - -// if (!(syntaxFlags & AC_DAB)) { - qcOut->extension[n].type = EXT_FILL_DATA; - qcOut->extension[n].nPayloadBits = qcOut->totFillBits; - qcOut->nExtensions++; -// } else { -// doByteAlign = 0; -// } - if (syntaxFlags & AC_DAB) - doByteAlign = 0; - - /* Write global extension payload and fill data */ - for (n = 0; (n < qcOut->nExtensions) && (n < (2+2)); n++) - { - FDKaacEnc_writeExtensionData( hTpEnc, - &qcOut->extension[n], - 0, - alignAnchor, - syntaxFlags, - aot, - epConfig ); - - /* For EXT_FIL or EXT_FILL_DATA we could do an additional sanity check here */ - } - if (!(syntaxFlags & (AC_SCALABLE|AC_ER|AC_DAB))) { FDKwriteBits(hBs, ID_END, EL_ID_BITS); } |