Skip to content

Commit 939d248

Browse files
committed
Add svp_inband_serializer
1 parent 7b45cdd commit 939d248

File tree

4 files changed

+99
-1
lines changed

4 files changed

+99
-1
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ add_library(pf-1.0 SHARED src/dummy.c)
4343
set_target_properties(pf-1.0 PROPERTIES VERSION 1.0.0 SOVERSION 1)
4444
target_link_options(pf-1.0 PRIVATE ${CMAKE_SOURCE_DIR}/src/pf-1.0.lds)
4545

46+
add_library(svp_inband_serializer SHARED src/dummy.c)
47+
set_target_properties(svp_inband_serializer PROPERTIES VERSION 1.0.0 SOVERSION 1)
48+
target_link_options(svp_inband_serializer PRIVATE ${CMAKE_SOURCE_DIR}/src/svp_inband_serializer.lds)
49+
4650
add_library(lgncopenapi SHARED src/dummy.c)
4751
set_target_properties(lgncopenapi PROPERTIES VERSION 2.4.0 SOVERSION 2)
4852
target_link_options(lgncopenapi PRIVATE ${CMAKE_SOURCE_DIR}/src/lgncopenapi.lds)
@@ -83,7 +87,7 @@ target_link_options(ndl-directmedia2 PRIVATE ${CMAKE_SOURCE_DIR}/src/ndl-directm
8387

8488
install(TARGETS EGL GLESv1_CM GLESv2 NDL_directmedia playerAPIs wayland-egl AcbAPI helpers pf-1.0 lgncopenapi
8589
dile_audio_direct dile_boardinfo dile_vdec_direct dile_vt hal_audio_direct hal_vdec_direct hal_vt hal_vfe
86-
media-resource-calculator ndl-directmedia2
90+
media-resource-calculator ndl-directmedia2 svp_inband_serializer
8791
DESTINATION lib)
8892

8993
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
#pragma once
2+
3+
#include <cstdint>
4+
#include <cstddef>
5+
#include <vector>
6+
#include <functional>
7+
#include <typeinfo>
8+
9+
namespace cdm { struct InputBuffer_2; }
10+
namespace wvcdm { struct InputBuffer; }
11+
12+
namespace svp
13+
{
14+
class InbandSerializerImpl
15+
{
16+
public:
17+
virtual ~InbandSerializerImpl() = default;
18+
virtual bool DoConfigure(const uint8_t*, size_t,
19+
const std::function<bool(std::vector<uint8_t>*,void*)>&,
20+
void*) = 0;
21+
bool DoSerialize(std::vector<uint8_t>*);
22+
};
23+
24+
// pulled in from stub or the real .so at link time
25+
std::shared_ptr<InbandSerializerImpl> CreateInbandSerializerImpl(void*, const std::type_info&);
26+
27+
template<typename T>
28+
class InbandSerializer
29+
{
30+
public:
31+
InbandSerializer()
32+
: impl_(CreateInbandSerializerImpl(static_cast<void*>(this), typeid(T)))
33+
{}
34+
35+
~InbandSerializer()
36+
{}
37+
38+
/**
39+
* @param obj current instance of InbandSerializerImplReal<bool>
40+
* @param data raw media buffer
41+
* @param size size of media buffer
42+
* @param callBack callback to configure output vector
43+
* @param context opaque user context
44+
*/
45+
bool Configure(const T &obj,
46+
const uint8_t *data,
47+
uint32_t size,
48+
const std::function<bool(std::vector<uint8_t>*,void*)>&callBack = nullptr,
49+
void *context = nullptr)
50+
{
51+
if (!impl_) return false;
52+
obj_ = obj;
53+
return impl_->DoConfigure(data, size, callBack, context);
54+
}
55+
56+
bool GetSerialized(std::vector<uint8_t>* out)
57+
{
58+
if (!impl_ || !out) return false;
59+
return impl_->DoSerialize(out);
60+
}
61+
62+
bool CanDoSerialize() { return impl_ != nullptr; }
63+
64+
const T& encryption_info() const { return obj_; }
65+
66+
private:
67+
T obj_;
68+
std::shared_ptr<InbandSerializerImpl> impl_;
69+
70+
void operator=(const InbandSerializer&);
71+
};
72+
73+
} // namespace svp
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
prefix=/usr
2+
exec_prefix=${prefix}
3+
libdir=${prefix}/lib
4+
includedir=${prefix}/include/svp
5+
6+
Name: libsvp_inband_serializer
7+
Description: SVP inband serializer library
8+
Version: 1.0.0
9+
10+
Requires:
11+
Libs: -L${libdir} -lsvp_inband_serializer
12+
Cflags: -I${includedir}

src/svp_inband_serializer.lds

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
"_ZN3svp20InbandSerializerImpl11DoSerializeEPSt6vectorIhSaIhEE" = "dummy";
2+
"_ZN3svp24InbandSerializerImplRealIbE11DoConfigureEPKhjRKSt8functionIFbPSt6vectorIhSaIhEEPvEES9_" = "dummy";
3+
"_ZN3svp24InbandSerializerImplRealIN3cdm13InputBuffer_2EE11DoConfigureEPKhjRKSt8functionIFbPSt6vectorIhSaIhEEPvEESB_" = "dummy";
4+
"_ZN3svp24InbandSerializerImplRealIN5wvcdm11InputBufferEE11DoConfigureEPKhjRKSt8functionIFbPSt6vectorIhSaIhEEPvEESB_" = "dummy";
5+
"_ZN3svp26CreateInbandSerializerImplEPvRKSt9type_info" = "dummy";
6+
"_ZNSt6vectorIhSaIhEE13_M_assign_auxIPKhEEvT_S5_St20forward_iterator_tag" = "dummy";
7+
"_ZNSt6vectorIhSaIhEEaSERKS1_" = "dummy";
8+
"_ZNSt6vectorIN3svp12InbandStream7SegmentESaIS2_EE17_M_realloc_insertIJS2_EEEvN9__gnu_cxx17__normal_iteratorIPS2_S4_EEDpOT_" = "dummy";
9+
"_ZNSt6vectorISt10shared_ptrIN3svp12InbandStreamEESaIS3_EE17_M_realloc_insertIJRKS3_EEEvN9__gnu_cxx17__normal_iteratorIPS3_S5_EEDpOT_" = "dummy";

0 commit comments

Comments
 (0)