Skip to content

Commit

Permalink
feat(decompression): add support for skipping scalar tracks (#498)
Browse files Browse the repository at this point in the history
  • Loading branch information
nfrechette authored Feb 8, 2024
2 parents ceb94bf + c21ceea commit a6778e6
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
10 changes: 10 additions & 0 deletions includes/acl/core/track_writer.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,16 @@ namespace acl
//////////////////////////////////////////////////////////////////////////
// Scalar track writing

//////////////////////////////////////////////////////////////////////////
// These allow host runtimes to control which tracks they are interested in.
// This information allows the codecs to avoid unpacking values that are not needed.
// Must be non-static member functions!
constexpr bool skip_track_float1(uint32_t /*track_index*/) const { return false; }
constexpr bool skip_track_float2(uint32_t /*track_index*/) const { return false; }
constexpr bool skip_track_float3(uint32_t /*track_index*/) const { return false; }
constexpr bool skip_track_float4(uint32_t /*track_index*/) const { return false; }
constexpr bool skip_track_vector4(uint32_t /*track_index*/) const { return false; }

//////////////////////////////////////////////////////////////////////////
// Called by the decoder to write out a value for a specified track index.
void RTM_SIMD_CALL write_float1(uint32_t track_index, rtm::scalarf_arg0 value)
Expand Down
15 changes: 10 additions & 5 deletions includes/acl/decompression/impl/decompression.scalar.h
Original file line number Diff line number Diff line change
Expand Up @@ -315,7 +315,8 @@ namespace acl
track_bit_offset1 += num_sample_bits;
}

writer.write_float1(track_index, value);
if (!writer.skip_track_float1(track_index))
writer.write_float1(track_index, value);
}
else if (track_type == track_type8::float2f && decompression_settings_type::is_track_type_supported(track_type8::float2f))
{
Expand Down Expand Up @@ -353,7 +354,8 @@ namespace acl
track_bit_offset1 += num_sample_bits;
}

writer.write_float2(track_index, value);
if (!writer.skip_track_float2(track_index))
writer.write_float2(track_index, value);
}
else if (track_type == track_type8::float3f && decompression_settings_type::is_track_type_supported(track_type8::float3f))
{
Expand Down Expand Up @@ -391,7 +393,8 @@ namespace acl
track_bit_offset1 += num_sample_bits;
}

writer.write_float3(track_index, value);
if (!writer.skip_track_float3(track_index))
writer.write_float3(track_index, value);
}
else if (track_type == track_type8::float4f && decompression_settings_type::is_track_type_supported(track_type8::float4f))
{
Expand Down Expand Up @@ -429,7 +432,8 @@ namespace acl
track_bit_offset1 += num_sample_bits;
}

writer.write_float4(track_index, value);
if (!writer.skip_track_float4(track_index))
writer.write_float4(track_index, value);
}
else if (track_type == track_type8::vector4f && decompression_settings_type::is_track_type_supported(track_type8::vector4f))
{
Expand Down Expand Up @@ -467,7 +471,8 @@ namespace acl
track_bit_offset1 += num_sample_bits;
}

writer.write_vector4(track_index, value);
if (!writer.skip_track_vector4(track_index))
writer.write_vector4(track_index, value);
}
}

Expand Down

0 comments on commit a6778e6

Please sign in to comment.