6dbb40955f
Needed for the upcoming Nexus version of kodi-inputstream-adaptive,
the bundled version of bento4 was removed upstream:
70625e7670
Backported upstream commit to fix cmake install as patch 0001.
Added feature- and bugfix-patches from kodi, they were sent upstream:
https://github.com/axiomatic-systems/Bento4/issues/648
Build-tested using this defconfig:
BR2_PACKAGE_BENTO4=y
andes-nds32 [ 1/45]: SKIPPED
arm-aarch64 [ 2/45]: OK
bootlin-aarch64-glibc [ 3/45]: OK
bootlin-arcle-hs38-uclibc [ 4/45]: OK
bootlin-armv5-uclibc [ 5/45]: OK
bootlin-armv7-glibc [ 6/45]: OK
bootlin-armv7m-uclibc [ 7/45]: OK
bootlin-armv7-musl [ 8/45]: OK
bootlin-m68k-5208-uclibc [ 9/45]: OK
bootlin-m68k-68040-uclibc [10/45]: OK
bootlin-microblazeel-uclibc [11/45]: OK
bootlin-mipsel32r6-glibc [12/45]: OK
bootlin-mipsel-uclibc [13/45]: OK
bootlin-nios2-glibc [14/45]: OK
bootlin-openrisc-uclibc [15/45]: OK
bootlin-powerpc64le-power8-glibc [16/45]: OK
bootlin-powerpc-e500mc-uclibc [17/45]: OK
bootlin-riscv32-glibc [18/45]: OK
bootlin-riscv64-glibc [19/45]: OK
bootlin-riscv64-musl [20/45]: OK
bootlin-sh4-uclibc [21/45]: OK
bootlin-sparc64-glibc [22/45]: OK
bootlin-sparc-uclibc [23/45]: OK
bootlin-x86-64-glibc [24/45]: OK
bootlin-x86-64-musl [25/45]: OK
bootlin-x86-64-uclibc [26/45]: OK
bootlin-xtensa-uclibc [27/45]: OK
br-arm-basic [28/45]: SKIPPED
br-arm-full-nothread [29/45]: OK
br-arm-full-static [30/45]: OK
br-i386-pentium4-full [31/45]: OK
br-i386-pentium-mmx-musl [32/45]: OK
br-mips64-n64-full [33/45]: OK
br-mips64r6-el-hf-glibc [34/45]: OK
br-powerpc-603e-basic-cpp [35/45]: OK
br-powerpc64-power7-glibc [36/45]: OK
linaro-aarch64-be [37/45]: OK
linaro-aarch64 [38/45]: OK
linaro-arm [39/45]: OK
sourcery-arm-armv4t [40/45]: OK
sourcery-arm [41/45]: OK
sourcery-arm-thumb2 [42/45]: OK
sourcery-mips64 [43/45]: OK
sourcery-mips [44/45]: OK
sourcery-nios2 [45/45]: OK
45 builds, 2 skipped, 0 build failed, 0 legal-info failed
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
100 lines
3.6 KiB
Diff
100 lines
3.6 KiB
Diff
From 97088e7bd7e84a493bea7e5fe4e808c8ac3e00ff Mon Sep 17 00:00:00 2001
|
|
From: CastagnaIT <gottardo.stefano.83@gmail.com>
|
|
Date: Thu, 22 Jul 2021 10:09:24 +0200
|
|
Subject: [PATCH] Backport Smmothstream changes
|
|
|
|
Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
|
|
---
|
|
Source/C++/Core/Ap4File.cpp | 14 ++++++++------
|
|
Source/C++/Core/Ap4File.h | 6 ++++--
|
|
Source/C++/Core/Ap4FragmentSampleTable.cpp | 2 +-
|
|
3 files changed, 13 insertions(+), 9 deletions(-)
|
|
|
|
diff --git a/Source/C++/Core/Ap4File.cpp b/Source/C++/Core/Ap4File.cpp
|
|
index cb20c3e..f1d2727 100644
|
|
--- a/Source/C++/Core/Ap4File.cpp
|
|
+++ b/Source/C++/Core/Ap4File.cpp
|
|
@@ -55,13 +55,14 @@ AP4_File::AP4_File(AP4_Movie* movie) :
|
|
+---------------------------------------------------------------------*/
|
|
AP4_File::AP4_File(AP4_ByteStream& stream,
|
|
AP4_AtomFactory& atom_factory,
|
|
- bool moov_only) :
|
|
- m_Movie(NULL),
|
|
+ bool moov_only,
|
|
+ AP4_Movie* movie) :
|
|
+ m_Movie(movie),
|
|
m_FileType(NULL),
|
|
m_MetaData(NULL),
|
|
m_MoovIsBeforeMdat(true)
|
|
{
|
|
- ParseStream(stream, atom_factory, moov_only);
|
|
+ ParseStream(stream, atom_factory, moov_only, movie);
|
|
}
|
|
|
|
/*----------------------------------------------------------------------
|
|
@@ -75,7 +76,7 @@ AP4_File::AP4_File(AP4_ByteStream& stream,
|
|
m_MoovIsBeforeMdat(true)
|
|
{
|
|
AP4_DefaultAtomFactory atom_factory;
|
|
- ParseStream(stream, atom_factory, moov_only);
|
|
+ ParseStream(stream, atom_factory, moov_only, m_Movie);
|
|
}
|
|
|
|
/*----------------------------------------------------------------------
|
|
@@ -93,12 +94,13 @@ AP4_File::~AP4_File()
|
|
void
|
|
AP4_File::ParseStream(AP4_ByteStream& stream,
|
|
AP4_AtomFactory& atom_factory,
|
|
- bool moov_only)
|
|
+ bool moov_only,
|
|
+ AP4_Movie* movie)
|
|
{
|
|
// parse top-level atoms
|
|
AP4_Atom* atom;
|
|
AP4_Position stream_position;
|
|
- bool keep_parsing = true;
|
|
+ bool keep_parsing = movie == 0;
|
|
while (keep_parsing &&
|
|
AP4_SUCCEEDED(stream.Tell(stream_position)) &&
|
|
AP4_SUCCEEDED(atom_factory.CreateAtomFromStream(stream, atom))) {
|
|
diff --git a/Source/C++/Core/Ap4File.h b/Source/C++/Core/Ap4File.h
|
|
index 9375258..2f00187 100644
|
|
--- a/Source/C++/Core/Ap4File.h
|
|
+++ b/Source/C++/Core/Ap4File.h
|
|
@@ -101,7 +101,8 @@ public:
|
|
*/
|
|
AP4_File(AP4_ByteStream& stream,
|
|
AP4_AtomFactory& atom_factory,
|
|
- bool moov_only);
|
|
+ bool moov_only,
|
|
+ AP4_Movie* movie = NULL);
|
|
|
|
/**
|
|
* Constructs an AP4_File from a stream using the default atom factory
|
|
@@ -161,7 +162,8 @@ private:
|
|
// methods
|
|
void ParseStream(AP4_ByteStream& stream,
|
|
AP4_AtomFactory& atom_factory,
|
|
- bool moov_only);
|
|
+ bool moov_only,
|
|
+ AP4_Movie* movie);
|
|
|
|
// members
|
|
AP4_Movie* m_Movie;
|
|
diff --git a/Source/C++/Core/Ap4FragmentSampleTable.cpp b/Source/C++/Core/Ap4FragmentSampleTable.cpp
|
|
index 84e5ded..3fbb53e 100644
|
|
--- a/Source/C++/Core/Ap4FragmentSampleTable.cpp
|
|
+++ b/Source/C++/Core/Ap4FragmentSampleTable.cpp
|
|
@@ -130,7 +130,7 @@ AP4_FragmentSampleTable::AddTrun(AP4_TrunAtom* trun,
|
|
data_offset += trun->GetDataOffset();
|
|
}
|
|
// MS hack
|
|
- if (data_offset == moof_offset) {
|
|
+ if (data_offset < payload_offset) {
|
|
data_offset = payload_offset;
|
|
} else {
|
|
payload_offset = data_offset;
|
|
--
|
|
2.30.2
|
|
|