同步操作将从 panll/ZLMediaKit 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
/** Copyright (c) 2016 The ZLMediaKit project authors. All Rights Reserved.** This file is part of ZLMediaKit(https://github.com/xia-chu/ZLMediaKit).** Use of this source code is governed by MIT license that can be found in the* LICENSE file in the root of the source tree. All contributing project authors* may be found in the AUTHORS file in the root of the source tree.*/#ifdef ENABLE_FAAC#include <cstdlib>#include "AACEncoder.h"#include "Util/logger.h"#ifdef __cplusplusextern "C" {#endif#include <faac.h>#ifdef __cplusplus}#endifusing namespace toolkit;namespace mediakit {AACEncoder::AACEncoder() {}AACEncoder::~AACEncoder() {if (_hEncoder != nullptr) {faacEncClose(_hEncoder);_hEncoder = nullptr;}if (_pucAacBuf != nullptr) {delete[] _pucAacBuf;_pucAacBuf = nullptr;}if (_pucPcmBuf != nullptr) {delete[] _pucPcmBuf;_pucPcmBuf = nullptr;}}bool AACEncoder::init(int iSampleRate, int iChannels, int iSampleBit) {if (iSampleBit != 16) {return false;}// (1) Open FAAC engine_hEncoder = faacEncOpen(iSampleRate, iChannels, &_ulInputSamples,&_ulMaxOutputBytes);if (_hEncoder == NULL) {return false;}_pucAacBuf = new unsigned char[_ulMaxOutputBytes];_ulMaxInputBytes = _ulInputSamples * iSampleBit / 8;_pucPcmBuf = new unsigned char[_ulMaxInputBytes * 4];// (2.1) Get current encoding configurationfaacEncConfigurationPtr pConfiguration = faacEncGetCurrentConfiguration(_hEncoder);if (pConfiguration == NULL) {faacEncClose(_hEncoder);return false;}pConfiguration->aacObjectType =LOW;pConfiguration->mpegVersion = 4;pConfiguration->useTns = 1;pConfiguration->shortctl = SHORTCTL_NORMAL;pConfiguration->useLfe = 1;pConfiguration->allowMidside = 1;pConfiguration->bitRate = 0;pConfiguration->bandWidth = 0;pConfiguration->quantqual = 50;pConfiguration->outputFormat = 1;pConfiguration->inputFormat = FAAC_INPUT_16BIT;// (2.2) Set encoding configurationif(!faacEncSetConfiguration(_hEncoder, pConfiguration)){ErrorL << "faacEncSetConfiguration failed";faacEncClose(_hEncoder);return false;}return true;}int AACEncoder::inputData(char *pcPcmBufr, int iLen, unsigned char **ppucOutBuffer) {memcpy(_pucPcmBuf + _uiPcmLen, pcPcmBufr, iLen);_uiPcmLen += iLen;if (_uiPcmLen < _ulMaxInputBytes) {return 0;}int nRet = faacEncEncode(_hEncoder, (int32_t *) (_pucPcmBuf), _ulInputSamples, _pucAacBuf, _ulMaxOutputBytes);_uiPcmLen -= _ulMaxInputBytes;memmove(_pucPcmBuf, _pucPcmBuf + _ulMaxInputBytes, _uiPcmLen);*ppucOutBuffer = _pucAacBuf;return nRet;}} /* namespace mediakit */#endif //ENABLE_FAAC
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。