Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Satoru KUMA
MPEG129-m52280
Commits
d2892504
Commit
d2892504
authored
Nov 20, 2018
by
David Flynn
Browse files
hls/m45867: add tile inventory writer/parser
parent
d5d4e366
Changes
5
Hide whitespace changes
Inline
Side-by-side
tmc3/PCCTMC3Decoder.h
View file @
d2892504
...
...
@@ -72,6 +72,7 @@ public:
void
storeSps
(
SequenceParameterSet
&&
sps
);
void
storeGps
(
GeometryParameterSet
&&
gps
);
void
storeAps
(
AttributeParameterSet
&&
aps
);
void
storeTileInventory
(
TileInventory
&&
inventory
);
//==========================================================================
...
...
@@ -100,6 +101,9 @@ private:
std
::
map
<
int
,
GeometryParameterSet
>
_gpss
;
std
::
map
<
int
,
AttributeParameterSet
>
_apss
;
// Metadata that allows slices/tiles to be indentified by their bounding box
TileInventory
_tileInventory
;
// The active SPS
const
SequenceParameterSet
*
_sps
;
const
GeometryParameterSet
*
_gps
;
...
...
tmc3/decoder.cpp
View file @
d2892504
...
...
@@ -87,6 +87,10 @@ PCCTMC3Decoder3::decompress(
return
decodeGeometryBrick
(
*
buf
);
case
PayloadType
::
kAttributeBrick
:
decodeAttributeBrick
(
*
buf
);
return
0
;
case
PayloadType
::
kTileInventory
:
storeTileInventory
(
parseTileInventory
(
*
buf
));
return
0
;
}
// todo(df): error, unhandled payload type
...
...
@@ -120,6 +124,15 @@ PCCTMC3Decoder3::storeAps(AttributeParameterSet&& aps)
_apss
.
emplace
(
std
::
make_pair
(
aps
.
aps_attr_parameter_set_id
,
aps
));
}
//--------------------------------------------------------------------------
void
PCCTMC3Decoder3
::
storeTileInventory
(
TileInventory
&&
inventory
)
{
// todo(df): handle replacement semantics
_tileInventory
=
inventory
;
}
//==========================================================================
// Initialise the point cloud storage and decode a single geometry brick.
//
...
...
tmc3/hls.h
View file @
d2892504
...
...
@@ -52,6 +52,7 @@ enum class PayloadType
kGeometryBrick
=
2
,
kAttributeParameterSet
=
3
,
kAttributeBrick
=
4
,
kTileInventory
=
5
,
};
//============================================================================
...
...
@@ -255,4 +256,14 @@ struct AttributeBrickHeader {
//============================================================================
struct
TileInventory
{
struct
Entry
{
PCCVector3
<
int
>
tile_bounding_box_xyz0
;
PCCVector3
<
int
>
tile_bounding_box_whd
;
};
std
::
vector
<
Entry
>
tiles
;
};
//============================================================================
}
// namespace pcc
tmc3/io_hls.cpp
View file @
d2892504
...
...
@@ -438,4 +438,55 @@ parseAbh(const PayloadBuffer& buf, int* bytesRead)
//============================================================================
PayloadBuffer
write
(
const
TileInventory
&
inventory
)
{
PayloadBuffer
buf
(
PayloadType
::
kTileInventory
);
auto
bs
=
makeBitWriter
(
std
::
back_inserter
(
buf
));
int
num_tiles
=
inventory
.
tiles
.
size
();
bs
.
writeUe
(
num_tiles
);
for
(
const
auto
&
entry
:
inventory
.
tiles
)
{
bs
.
writeSe
(
entry
.
tile_bounding_box_xyz0
.
x
());
bs
.
writeSe
(
entry
.
tile_bounding_box_xyz0
.
y
());
bs
.
writeSe
(
entry
.
tile_bounding_box_xyz0
.
z
());
bs
.
writeUe
(
entry
.
tile_bounding_box_whd
.
x
());
bs
.
writeUe
(
entry
.
tile_bounding_box_whd
.
y
());
bs
.
writeUe
(
entry
.
tile_bounding_box_whd
.
z
());
}
bs
.
byteAlign
();
return
buf
;
}
//----------------------------------------------------------------------------
TileInventory
parseTileInventory
(
const
PayloadBuffer
&
buf
)
{
TileInventory
inventory
;
assert
(
buf
.
type
==
PayloadType
::
kTileInventory
);
auto
bs
=
makeBitReader
(
buf
.
begin
(),
buf
.
end
());
int
num_tiles
;
bs
.
readUe
(
&
num_tiles
);
for
(
int
i
=
0
;
i
<
num_tiles
;
i
++
)
{
TileInventory
::
Entry
entry
;
bs
.
readSe
(
&
entry
.
tile_bounding_box_xyz0
.
x
());
bs
.
readSe
(
&
entry
.
tile_bounding_box_xyz0
.
y
());
bs
.
readSe
(
&
entry
.
tile_bounding_box_xyz0
.
z
());
bs
.
readUe
(
&
entry
.
tile_bounding_box_whd
.
x
());
bs
.
readUe
(
&
entry
.
tile_bounding_box_whd
.
y
());
bs
.
readUe
(
&
entry
.
tile_bounding_box_whd
.
z
());
inventory
.
tiles
.
push_back
(
entry
);
}
bs
.
byteAlign
();
return
inventory
;
}
//============================================================================
}
// namespace pcc
tmc3/io_hls.h
View file @
d2892504
...
...
@@ -45,10 +45,12 @@ namespace pcc {
PayloadBuffer
write
(
const
SequenceParameterSet
&
sps
);
PayloadBuffer
write
(
const
GeometryParameterSet
&
gps
);
PayloadBuffer
write
(
const
AttributeParameterSet
&
aps
);
PayloadBuffer
write
(
const
TileInventory
&
inventory
);
SequenceParameterSet
parseSps
(
const
PayloadBuffer
&
buf
);
GeometryParameterSet
parseGps
(
const
PayloadBuffer
&
buf
);
AttributeParameterSet
parseAps
(
const
PayloadBuffer
&
buf
);
TileInventory
parseTileInventory
(
const
PayloadBuffer
&
buf
);
//----------------------------------------------------------------------------
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment