diff options
author | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-30 18:26:12 -0400 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2009-09-30 18:26:12 -0400 |
commit | 4e940ba6ecc880296b306d738530cafd046fe6de (patch) | |
tree | 45585d2308f7745b0de2a7feff08cf2890d4faa9 | |
parent | f63fa1c0ee556c330a8ec8a182de996f658c3f98 (diff) | |
parent | 5fc9682e74ab8889affd5d764fabb4bab08cff98 (diff) | |
download | opencore-4e940ba6ecc880296b306d738530cafd046fe6de.tar.gz |
Merge change Ifd8e3c0c into eclair
* changes:
RIO-7174: Encode AVC Mpeg4Bitrate atom. http://b/issue?id=2039880 The change authors the Mpeg4Bitrate atom. But will -- use avg bitrate as max bitrate; -- DecodeBufferDB is set to 0; There is followup work to address these issues. Since the Gallery app only looks for avg bitrate, this change alone is showing the bitrate info correctly.
19 files changed, 168 insertions, 32 deletions
diff --git a/fileformats/mp4/composer/Android.mk b/fileformats/mp4/composer/Android.mk index 65aa4b762..358e99e12 100644 --- a/fileformats/mp4/composer/Android.mk +++ b/fileformats/mp4/composer/Android.mk @@ -39,6 +39,7 @@ LOCAL_SRC_FILES := \ src/mediainformationheaderatom.cpp \ src/movieatom.cpp \ src/movieheaderatom.cpp \ + src/mpeg4bitrateatom.cpp \ src/mpeg4file.cpp \ src/mpeg4mediaheaderatom.cpp \ src/mpegsampleentry.cpp \ diff --git a/fileformats/mp4/composer/build_opencore/make/local.mk b/fileformats/mp4/composer/build_opencore/make/local.mk index 819fb2350..b8299cc24 100644 --- a/fileformats/mp4/composer/build_opencore/make/local.mk +++ b/fileformats/mp4/composer/build_opencore/make/local.mk @@ -54,6 +54,7 @@ SRCS := amrdecoderspecificinfo3gpp.cpp \ mediainformationheaderatom.cpp \ movieatom.cpp \ movieheaderatom.cpp \ + mpeg4bitrateatom.cpp \ mpeg4file.cpp \ mpeg4mediaheaderatom.cpp \ mpegsampleentry.cpp \ diff --git a/fileformats/mp4/composer/include/a_atomdefs.h b/fileformats/mp4/composer/include/a_atomdefs.h index b6e016b71..d2e149936 100644 --- a/fileformats/mp4/composer/include/a_atomdefs.h +++ b/fileformats/mp4/composer/include/a_atomdefs.h @@ -175,6 +175,7 @@ const uint32 AMR_SPECIFIC_ATOM = FourCharConstToUint32('d', 'a', 'm', 'r'); const uint32 H263_SPECIFIC_ATOM = FourCharConstToUint32('d', '2', '6', '3'); const uint32 AVC_SAMPLE_ENTRY = FourCharConstToUint32('a', 'v', 'c', '1'); const uint32 AVC_CONFIGURATION_BOX = FourCharConstToUint32('a', 'v', 'c', 'C'); +const uint32 MPEG4_BITRATE_BOX = FourCharConstToUint32('b', 't', 'r', 't'); const uint32 BRAND_MMP4 = FourCharConstToUint32('m', 'm', 'p', '4'); diff --git a/fileformats/mp4/composer/include/a_impeg4file.h b/fileformats/mp4/composer/include/a_impeg4file.h index 0a78783de..68870c2f2 100644 --- a/fileformats/mp4/composer/include/a_impeg4file.h +++ b/fileformats/mp4/composer/include/a_impeg4file.h @@ -310,7 +310,7 @@ class PVA_FF_IMpeg4File : public PVA_FF_ISucceedFail Oscl_Vector <OsclMemoryFragment, OsclMemAllocator>& fragmentList, // vector which contains either NALs or samples uint32 ts, uint8 flags, int32 index, uint8* modifierinfo) = 0; virtual void addTrackReference(uint32 currtrackID, int32 reftrackID) = 0; - virtual void setTargetBitRate(uint32 trackID, uint32 bitrate) = 0; + virtual void setTargetBitrate(uint32 trackID, uint32 avgBitRate, uint32 maxBitRate = 0, uint32 bufferSizeDB = 0) = 0; virtual void setTimeScale(uint32 trackID, uint32 rate) = 0; virtual void setMaxBufferSizeDB(uint32 trackID, uint32 max) = 0; diff --git a/fileformats/mp4/composer/include/avcsampleentry.h b/fileformats/mp4/composer/include/avcsampleentry.h index 3cd454317..3dff6c81e 100644 --- a/fileformats/mp4/composer/include/avcsampleentry.h +++ b/fileformats/mp4/composer/include/avcsampleentry.h @@ -23,7 +23,8 @@ #include "oscl_file_io.h" #include "avcconfigurationatom.h" #include "decoderspecificinfo.h" -#include"sampleentry.h" +#include "sampleentry.h" +#include "mpeg4bitrateatom.h" class PVA_FF_AVCSampleEntry : public PVA_FF_SampleEntry { @@ -32,6 +33,7 @@ class PVA_FF_AVCSampleEntry : public PVA_FF_SampleEntry PVA_FF_AVCSampleEntry(uint8 profile = 1, uint8 profileComp = 0xFF, uint8 level = 0xFF); virtual ~PVA_FF_AVCSampleEntry(); void setVideoParam(int16 width, int16 height); + void setBitrate(uint32 BufferSizeDB, uint32 MaxBitRate, uint32 AvgBitRate); void setSample(void* sample, uint32 size) { @@ -74,6 +76,7 @@ class PVA_FF_AVCSampleEntry : public PVA_FF_SampleEntry int16 _predefined4; PVA_FF_AVCConfigurationAtom *_pAVCConfigurationAtom; + PVA_FF_Mpeg4Bitrate *_pMpeg4BitrateAtom; }; diff --git a/fileformats/mp4/composer/include/mediaatom.h b/fileformats/mp4/composer/include/mediaatom.h index a91f53857..07dc8c07a 100644 --- a/fileformats/mp4/composer/include/mediaatom.h +++ b/fileformats/mp4/composer/include/mediaatom.h @@ -112,9 +112,9 @@ class PVA_FF_MediaAtom : public PVA_FF_Atom } // Stream properties - void setTargetBitrate(uint32 bitrate) + void setTargetBitrate(uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { - _pmediaInformation->setTargetBitrate(bitrate); + _pmediaInformation->setTargetBitrate(avgBitRate, maxBitRate, bufferSizeDB); } // Rendering the PVA_FF_Atom in proper format (bitlengths, etc.) to an ostream diff --git a/fileformats/mp4/composer/include/mediainformationatom.h b/fileformats/mp4/composer/include/mediainformationatom.h index bd622dfc9..5c00a9762 100644 --- a/fileformats/mp4/composer/include/mediainformationatom.h +++ b/fileformats/mp4/composer/include/mediainformationatom.h @@ -49,9 +49,9 @@ class PVA_FF_MediaInformationAtom : public PVA_FF_Atom virtual ~PVA_FF_MediaInformationAtom(); // Stream properties - void setTargetBitrate(uint32 bitrate) + void setTargetBitrate(uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { - _psampleTableAtom->setTargetBitrate(bitrate); + _psampleTableAtom->setTargetBitrate(avgBitRate, maxBitRate, bufferSizeDB); } // Called to update the member atoms if they depend on the actual diff --git a/fileformats/mp4/composer/include/movieatom.h b/fileformats/mp4/composer/include/movieatom.h index 45752cf8c..58eeef4a4 100644 --- a/fileformats/mp4/composer/include/movieatom.h +++ b/fileformats/mp4/composer/include/movieatom.h @@ -135,7 +135,7 @@ class PVA_FF_MovieAtom : public PVA_FF_Atom, public PVA_FF_ISucceedFail uint32 size, uint32 baseOffset); - void setTargetBitRate(uint32 trackID, uint32 bitrate); + void setTargetBitrate(uint32 trackID, uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB); void setTimeScale(uint32 trackID, uint32 rate); int32 getCodecType(uint32 trackID); diff --git a/fileformats/mp4/composer/include/mpeg4bitrateatom.h b/fileformats/mp4/composer/include/mpeg4bitrateatom.h new file mode 100644 index 000000000..ae1610e7e --- /dev/null +++ b/fileformats/mp4/composer/include/mpeg4bitrateatom.h @@ -0,0 +1,41 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 1998-2009 PacketVideo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ +#ifndef MPEG4BITRATE_H_INCLUDED +#define MPEG4BITRATE_H_INCLUDED + +#include "atom.h" +#include "atomutils.h" +#include "oscl_file_io.h" + +class PVA_FF_Mpeg4Bitrate : public PVA_FF_Atom +{ + + public: + PVA_FF_Mpeg4Bitrate(uint32 BufferSizeDB, uint32 MaxBitRate, uint32 AvgBitRate); + virtual ~PVA_FF_Mpeg4Bitrate() {}; // Destructor + virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); + virtual void recomputeSize(); + virtual uint32 getSize(); + + private: + uint32 _bufferSizeDB; + uint32 _maxBitRate; + uint32 _avgBitRate; +}; + +#endif // MPEG4BITRATE_H_INCLUDED diff --git a/fileformats/mp4/composer/include/mpeg4file.h b/fileformats/mp4/composer/include/mpeg4file.h index b35646e3d..807a113be 100644 --- a/fileformats/mp4/composer/include/mpeg4file.h +++ b/fileformats/mp4/composer/include/mpeg4file.h @@ -203,7 +203,7 @@ class PVA_FF_Mpeg4File : public PVA_FF_IMpeg4File, public PVA_FF_Parentable uint32 ts, uint8 flags, int32 index, uint8* Textsamplemodifier); void addTrackReference(uint32 currtrackID, int32 reftrackID); - void setTargetBitRate(uint32 trackID, uint32 bitrate); + void setTargetBitrate(uint32 trackID, uint32 avgBitRate, uint32 maxBitRate = 0, uint32 bufferSizeDB = 0); void setTimeScale(uint32 trackID, uint32 rate); // An access function to set the output path string for PVA_FF_MediaDataAtom objects diff --git a/fileformats/mp4/composer/include/sampledescriptionatom.h b/fileformats/mp4/composer/include/sampledescriptionatom.h index 951db9646..4f6c06d7e 100644 --- a/fileformats/mp4/composer/include/sampledescriptionatom.h +++ b/fileformats/mp4/composer/include/sampledescriptionatom.h @@ -64,7 +64,7 @@ class PVA_FF_SampleDescriptionAtom : public PVA_FF_FullAtom } // Stream properties - void setTargetBitrate(uint32 bitrate); + void setTargetBitrate(uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB); void addSampleEntry(PVA_FF_SampleEntry *entry); void insertSampleEntryAt(int32 index, PVA_FF_SampleEntry *entry); diff --git a/fileformats/mp4/composer/include/sampletableatom.h b/fileformats/mp4/composer/include/sampletableatom.h index 8f1ea8ed5..82b1c7ea8 100644 --- a/fileformats/mp4/composer/include/sampletableatom.h +++ b/fileformats/mp4/composer/include/sampletableatom.h @@ -101,9 +101,9 @@ class PVA_FF_SampleTableAtom : public PVA_FF_Atom // Stream properties - void setTargetBitrate(uint32 bitrate) + void setTargetBitrate(uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { - _psampleDescriptionAtom->setTargetBitrate(bitrate); + _psampleDescriptionAtom->setTargetBitrate(avgBitRate, maxBitRate, bufferSizeDB); } // Gets for optional member atoms diff --git a/fileformats/mp4/composer/include/trackatom.h b/fileformats/mp4/composer/include/trackatom.h index fc0a46a38..22f41d7df 100644 --- a/fileformats/mp4/composer/include/trackatom.h +++ b/fileformats/mp4/composer/include/trackatom.h @@ -182,10 +182,10 @@ class PVA_FF_TrackAtom : public PVA_FF_Atom, public PVA_FF_ISucceedFail } // Stream properties - void setTargetBitrate(uint32 bitrate) + void setTargetBitrate(uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { - _trackTargetBitRate = bitrate; - _pmediaAtom->setTargetBitrate(bitrate); + _trackTargetBitRate = avgBitRate; + _pmediaAtom->setTargetBitrate(avgBitRate, maxBitRate, bufferSizeDB); } // Media timescale diff --git a/fileformats/mp4/composer/src/avcsampleentry.cpp b/fileformats/mp4/composer/src/avcsampleentry.cpp index 144534445..10a1d8e61 100644 --- a/fileformats/mp4/composer/src/avcsampleentry.cpp +++ b/fileformats/mp4/composer/src/avcsampleentry.cpp @@ -24,18 +24,21 @@ // Constructor PVA_FF_AVCSampleEntry::PVA_FF_AVCSampleEntry(uint8 profile, uint8 profileComp, uint8 level) : PVA_FF_SampleEntry(AVC_SAMPLE_ENTRY) + , _pMpeg4BitrateAtom(NULL) { - init(profile, profileComp, level); recomputeSize(); - - } // Destructor PVA_FF_AVCSampleEntry::~PVA_FF_AVCSampleEntry() { PV_MP4_FF_DELETE(NULL, PVA_FF_AVCConfigurationAtom, _pAVCConfigurationAtom); + if (_pMpeg4BitrateAtom) + { + PV_MP4_FF_DELETE(NULL, PVA_FF_AVCConfigurationAtom, _pMpeg4BitrateAtom); + _pMpeg4BitrateAtom = NULL; + } } void @@ -69,7 +72,6 @@ PVA_FF_AVCSampleEntry::init(uint8 profile, uint8 profileComp, uint8 level) _predefined4 = -1; PV_MP4_FF_NEW(fp->auditCB, PVA_FF_AVCConfigurationAtom, (profile, profileComp, level), _pAVCConfigurationAtom); - } void PVA_FF_AVCSampleEntry::setVideoParam(int16 width, int16 height) @@ -79,6 +81,16 @@ void PVA_FF_AVCSampleEntry::setVideoParam(int16 width, int16 height) } +void PVA_FF_AVCSampleEntry::setBitrate(uint32 bufferSizeDB, uint32 maxBitRate, uint32 avgBitRate) +{//TODO: add validation for arguments + if (_pMpeg4BitrateAtom) + { + PV_MP4_FF_DELETE(NULL, PVA_FF_AVCConfigurationAtom, _pMpeg4BitrateAtom); + _pMpeg4BitrateAtom = NULL; + } + PV_MP4_FF_NEW(fp->auditCB, PVA_FF_Mpeg4Bitrate, (bufferSizeDB, maxBitRate, avgBitRate), _pMpeg4BitrateAtom); +} + void PVA_FF_AVCSampleEntry::addDecoderSpecificInfo(PVA_FF_DecoderSpecificInfo *pinfo) { @@ -200,6 +212,15 @@ PVA_FF_AVCSampleEntry::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) } rendered += _pAVCConfigurationAtom->getSize(); + if (_pMpeg4BitrateAtom) + { + if (!_pMpeg4BitrateAtom->renderToFileStream(fp)) + { + return false; + } + rendered += _pMpeg4BitrateAtom->getSize(); + } + return true; } @@ -231,6 +252,10 @@ PVA_FF_AVCSampleEntry::recomputeSize() size += sizeof(_depth); size += sizeof(_predefined4); size += _pAVCConfigurationAtom->getSize(); + if (_pMpeg4BitrateAtom) + { + size += _pMpeg4BitrateAtom->getSize(); + } _size = size; // Update size of parent diff --git a/fileformats/mp4/composer/src/movieatom.cpp b/fileformats/mp4/composer/src/movieatom.cpp index ac3687db8..76f6cc5fe 100644 --- a/fileformats/mp4/composer/src/movieatom.cpp +++ b/fileformats/mp4/composer/src/movieatom.cpp @@ -170,13 +170,13 @@ PVA_FF_MovieAtom::addTrackAtom(PVA_FF_TrackAtom *a) } void -PVA_FF_MovieAtom::setTargetBitRate(uint32 trackID, uint32 bitrate) +PVA_FF_MovieAtom::setTargetBitrate(uint32 trackID, uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { PVA_FF_TrackAtom *track = getMediaTrack(trackID); if (track != NULL) { - track->setTargetBitrate(bitrate); + track->setTargetBitrate(avgBitRate, maxBitRate, bufferSizeDB); } return; } diff --git a/fileformats/mp4/composer/src/mpeg4bitrateatom.cpp b/fileformats/mp4/composer/src/mpeg4bitrateatom.cpp new file mode 100644 index 000000000..5e4413fef --- /dev/null +++ b/fileformats/mp4/composer/src/mpeg4bitrateatom.cpp @@ -0,0 +1,57 @@ +/* ------------------------------------------------------------------ + * Copyright (C) 1998-2009 PacketVideo + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. + * See the License for the specific language governing permissions + * and limitations under the License. + * ------------------------------------------------------------------- + */ +#include "atom.h" +#include "atomutils.h" +#include "oscl_file_io.h" +#include "mpeg4bitrateatom.h" +#include "a_atomdefs.h" + +PVA_FF_Mpeg4Bitrate::PVA_FF_Mpeg4Bitrate(uint32 BufferSizeDB, uint32 MaxBitRate, uint32 AvgBitRate) + : PVA_FF_Atom(MPEG4_BITRATE_BOX) + , _bufferSizeDB(BufferSizeDB) + , _maxBitRate(MaxBitRate) + , _avgBitRate(AvgBitRate) +{ + recomputeSize(); +} + +bool PVA_FF_Mpeg4Bitrate::renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp) +{ + return (renderAtomBaseMembers(fp) + && PVA_FF_AtomUtils::render32(fp, _bufferSizeDB) + && PVA_FF_AtomUtils::render32(fp, _maxBitRate) + && PVA_FF_AtomUtils::render32(fp, _avgBitRate)); +} + +void PVA_FF_Mpeg4Bitrate::recomputeSize() +{ + _size = 0x14; + + // Update size of parent + if (_pparent != NULL) + { + _pparent->recomputeSize(); + } +} + +uint32 PVA_FF_Mpeg4Bitrate::getSize() +{ + recomputeSize(); + return (_size); +} + diff --git a/fileformats/mp4/composer/src/mpeg4file.cpp b/fileformats/mp4/composer/src/mpeg4file.cpp index 7f3f369f2..a1f31d820 100644 --- a/fileformats/mp4/composer/src/mpeg4file.cpp +++ b/fileformats/mp4/composer/src/mpeg4file.cpp @@ -629,9 +629,9 @@ PVA_FF_Mpeg4File::addTrackReference(uint32 currtrackID, int32 reftrackID) } void -PVA_FF_Mpeg4File::setTargetBitRate(uint32 trackID, uint32 bitrate) +PVA_FF_Mpeg4File::setTargetBitrate(uint32 trackID, uint32 avgBitRate, uint32 maxBitRate, uint32 bufferSizeDB) { - _pmovieAtom->setTargetBitRate(trackID, bitrate); + _pmovieAtom->setTargetBitrate(trackID, avgBitRate, maxBitRate, bufferSizeDB); return; } diff --git a/fileformats/mp4/composer/src/sampledescriptionatom.cpp b/fileformats/mp4/composer/src/sampledescriptionatom.cpp index 77ae3f1be..e36935a1d 100644 --- a/fileformats/mp4/composer/src/sampledescriptionatom.cpp +++ b/fileformats/mp4/composer/src/sampledescriptionatom.cpp @@ -320,10 +320,9 @@ PVA_FF_SampleDescriptionAtom::addDecoderSpecificInfo(PVA_FF_DecoderSpecificInfo } } - // Stream properties void -PVA_FF_SampleDescriptionAtom::setTargetBitrate(uint32 bitrate) +PVA_FF_SampleDescriptionAtom::setTargetBitrate(uint32 avgBitrate, uint32 maxBitRate, uint32 bufferSizeDB) { switch (_mediaType) { @@ -333,25 +332,33 @@ PVA_FF_SampleDescriptionAtom::setTargetBitrate(uint32 bitrate) if (type == VIDEO_SAMPLE_ENTRY) { PVA_FF_VisualSampleEntry *ventry = (PVA_FF_VisualSampleEntry*) getSampleEntryAt(0); - ventry->setTargetBitrate(bitrate); + ventry->setTargetBitrate(avgBitrate); } else if (type == H263_SAMPLE_ENTRY) { PVA_FF_H263SampleEntry *hentry = (PVA_FF_H263SampleEntry*) getSampleEntryAt(0); PVA_FF_H263SpecficAtom *pH263info = (PVA_FF_H263SpecficAtom *)(hentry->get3GPPDecoderSpecificInfo()); - pH263info->_ph263_decbitrateatom->setAvgBitrate(bitrate); - pH263info->_ph263_decbitrateatom->setMaxBitrate(bitrate); + pH263info->_ph263_decbitrateatom->setAvgBitrate(avgBitrate); + pH263info->_ph263_decbitrateatom->setMaxBitrate(avgBitrate); + } + else if (type == AVC_SAMPLE_ENTRY) + { + PVA_FF_AVCSampleEntry* videoentry = OSCL_STATIC_CAST(PVA_FF_AVCSampleEntry*, getSampleEntryAt(0)); + if (videoentry) + { + videoentry->setBitrate(bufferSizeDB, maxBitRate, avgBitrate); + } } break; } case MEDIA_TYPE_AUDIO: { - _currAudioBitrate = bitrate; + _currAudioBitrate = avgBitrate; if (_codecType == CODEC_TYPE_AAC_AUDIO) { PVA_FF_AudioSampleEntry *entry = (PVA_FF_AudioSampleEntry*) getSampleEntryAt(0); - entry->setTargetBitrate(bitrate); + entry->setTargetBitrate(avgBitrate); } break; } diff --git a/nodes/pvmp4ffcomposernode/src/pvmp4ffcn_node.cpp b/nodes/pvmp4ffcomposernode/src/pvmp4ffcn_node.cpp index 54d368593..a46d5e4a2 100644 --- a/nodes/pvmp4ffcomposernode/src/pvmp4ffcn_node.cpp +++ b/nodes/pvmp4ffcomposernode/src/pvmp4ffcn_node.cpp @@ -1810,7 +1810,7 @@ PVMFStatus PVMp4FFComposerNode::AddTrack(PVMp4FFComposerPort *aPort) { case MEDIA_TYPE_AUDIO: { - iMpeg4File->setTargetBitRate(trackId, config->iBitrate); + iMpeg4File->setTargetBitrate(trackId, config->iBitrate); iMpeg4File->setTimeScale(trackId, config->iTimescale); PVMP4FFComposerAudioEncodeParams audioParams; audioParams.numberOfChannels = config->iNumberOfChannels; @@ -1828,7 +1828,7 @@ PVMFStatus PVMp4FFComposerNode::AddTrack(PVMp4FFComposerPort *aPort) // Don't break here. Continue to set other video properties case CODEC_TYPE_AVC_VIDEO: case CODEC_TYPE_MPEG4_VIDEO: - iMpeg4File->setTargetBitRate(trackId, config->iBitrate); + iMpeg4File->setTargetBitrate(trackId, config->iBitrate, config->iBitrate, 0); iMpeg4File->setTimeScale(trackId, config->iTimescale); iMpeg4File->setVideoParams(trackId, (float)config->iFrameRate, (uint16)config->iIFrameInterval, config->iWidth, config->iHeight); @@ -1836,7 +1836,7 @@ PVMFStatus PVMp4FFComposerNode::AddTrack(PVMp4FFComposerPort *aPort) } break; case MEDIA_TYPE_TEXT: - iMpeg4File->setTargetBitRate(trackId, config->iBitrate); + iMpeg4File->setTargetBitrate(trackId, config->iBitrate); iMpeg4File->setTimeScale(trackId, config->iTimescale); break; |