aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid (Google) Code Review <android-gerrit@google.com>2009-09-30 18:26:12 -0400
committerAndroid (Google) Code Review <android-gerrit@google.com>2009-09-30 18:26:12 -0400
commit4e940ba6ecc880296b306d738530cafd046fe6de (patch)
tree45585d2308f7745b0de2a7feff08cf2890d4faa9
parentf63fa1c0ee556c330a8ec8a182de996f658c3f98 (diff)
parent5fc9682e74ab8889affd5d764fabb4bab08cff98 (diff)
downloadopencore-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.
-rw-r--r--fileformats/mp4/composer/Android.mk1
-rw-r--r--fileformats/mp4/composer/build_opencore/make/local.mk1
-rw-r--r--fileformats/mp4/composer/include/a_atomdefs.h1
-rw-r--r--fileformats/mp4/composer/include/a_impeg4file.h2
-rw-r--r--fileformats/mp4/composer/include/avcsampleentry.h5
-rw-r--r--fileformats/mp4/composer/include/mediaatom.h4
-rw-r--r--fileformats/mp4/composer/include/mediainformationatom.h4
-rw-r--r--fileformats/mp4/composer/include/movieatom.h2
-rw-r--r--fileformats/mp4/composer/include/mpeg4bitrateatom.h41
-rw-r--r--fileformats/mp4/composer/include/mpeg4file.h2
-rw-r--r--fileformats/mp4/composer/include/sampledescriptionatom.h2
-rw-r--r--fileformats/mp4/composer/include/sampletableatom.h4
-rw-r--r--fileformats/mp4/composer/include/trackatom.h6
-rw-r--r--fileformats/mp4/composer/src/avcsampleentry.cpp33
-rw-r--r--fileformats/mp4/composer/src/movieatom.cpp4
-rw-r--r--fileformats/mp4/composer/src/mpeg4bitrateatom.cpp57
-rw-r--r--fileformats/mp4/composer/src/mpeg4file.cpp4
-rw-r--r--fileformats/mp4/composer/src/sampledescriptionatom.cpp21
-rw-r--r--nodes/pvmp4ffcomposernode/src/pvmp4ffcn_node.cpp6
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;