VRS
A file format for sensor data.
Loading...
Searching...
No Matches
DataLayoutConventions.h
1/*
2 * Copyright (c) Meta Platforms, Inc. and affiliates.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#include <vrs/DataLayout.h>
20#include <vrs/DataPieces.h>
21#include <vrs/ForwardDefinitions.h>
22#include <vrs/RecordFormat.h>
23#include <vrs/VrsExport.h>
24
25namespace vrs {
26
28namespace datalayout_conventions {
29
31constexpr const char* kImageWidth = "image_width";
33constexpr const char* kImageHeight = "image_height";
35constexpr const char* kImageStride = "image_stride";
37constexpr const char* kImageStride2 = "image_stride_2";
39constexpr const char* kImagePixelFormat = "image_pixel_format";
42constexpr const char* kImageBytesPerPixel = "image_bytes_per_pixel";
43
45constexpr const char* kImageCodecName = "image_codec_name";
47constexpr const char* kImageCodecQuality = "image_codec_quality";
48
50using ImageSpecType = uint32_t;
51
65class VRS_API ImageSpec : public AutoDataLayout {
66 public:
72
73 // For custom codec & video images
76
77 // Deprecated fields
79 // for legacy data compatibility
81
83
89 ContentBlock getImageContentBlock(
90 const ImageContentBlockSpec& base,
91 size_t blockSize = ContentBlock::kSizeUnknown);
92};
93
95constexpr const char* kImageKeyFrameTimeStamp = "image_key_frame_timestamp";
98constexpr const char* kImageKeyFrameIndex = "image_key_frame_index";
99
101class VRS_API VideoFrameSpec : public AutoDataLayout {
102 public:
105
106 bool hasVideoSpec() const {
107 return isMapped() && keyFrameTimestamp.isAvailable() && keyFrameIndex.isAvailable();
108 }
109
111};
112
114constexpr const char* kAudioFormat = "audio_format";
116constexpr const char* kAudioSampleFormat = "audio_sample_format";
120constexpr const char* kAudioSampleFrameStride = "audio_sample_stride";
122constexpr const char* kAudioChannelCount = "audio_channel_count";
124constexpr const char* kAudioSampleRate = "audio_sample_rate";
131constexpr const char* kAudioSampleCount = "audio_sample_count";
133constexpr const char* kAudioStereoPairCount = "audio_stereo_pair_count";
134
145class VRS_API AudioSpec : public AutoDataLayout {
146 public:
149 DataPieceValue<uint8_t> sampleStride{kAudioSampleFrameStride};
150 DataPieceValue<uint8_t> channelCount{kAudioChannelCount};
151 DataPieceValue<uint32_t> sampleRate{kAudioSampleRate};
152 DataPieceValue<uint32_t> sampleCount{kAudioSampleCount};
153 DataPieceValue<uint8_t> stereoPairCount{kAudioStereoPairCount};
154
155 AutoDataLayoutEnd end;
156};
157
159constexpr const char* kNextContentBlockSize = "next_content_block_size";
160using ContentBlockSizeType = uint32_t;
161
163class VRS_API NextContentBlockSpec : public AutoDataLayout {
164 public:
166 DataPieceValue<uint32_t> nextAudioContentBlockSampleCount{kAudioSampleCount};
167
169};
170
171} // namespace datalayout_conventions
172
173// Previous name to help transition.
174namespace DataLayoutConventions {
175using namespace datalayout_conventions;
176}
177
178} // namespace vrs
For use within an AutoDataLayout class, to end the AutoDataLayout's construction.
Definition DataLayout.h:611
Specialized DataLayout class to declare a DataLayout in struct format.
Definition DataLayout.h:605
Specification of a VRS record content block.
Definition RecordFormat.h:512
DataPieceValue specialization class to store enums more conveniently and safely.
Definition DataPieceValue.h:285
DataPiece for variable length string.
Definition DataPieceString.h:38
DataPiece for a single value of type T. The value is stored in DataLayout's fixed size buffer.
Definition DataPieceValue.h:37
Specification of an image content block.
Definition RecordFormat.h:145
DataLayout definitions use to describe what's in an audio content block.
Definition DataLayoutConventions.h:145
DataLayout definitions use to describe what's in an image content block.
Definition DataLayoutConventions.h:65
Optional values specifying the content block following the DataLayout.
Definition DataLayoutConventions.h:163
DataLayout definitions use to describe a video image content block.
Definition DataLayoutConventions.h:101
constexpr const char * kImageBytesPerPixel
Definition DataLayoutConventions.h:42
constexpr const char * kImageWidth
DataLayout convention name for the image width.
Definition DataLayoutConventions.h:31
uint32_t ImageSpecType
Data type to use for the kImageXXX fields above.
Definition DataLayoutConventions.h:50
constexpr const char * kAudioStereoPairCount
DataLayout convention name for a count of audio coupled stream count.
Definition DataLayoutConventions.h:133
constexpr const char * kAudioFormat
DataLayout convention name for the audio format (see vrs::AudioFormat).
Definition DataLayoutConventions.h:114
constexpr const char * kAudioChannelCount
DataLayout convention name for the audio channel count: mono = 1, stereo = 2, etc.
Definition DataLayoutConventions.h:122
constexpr const char * kImageKeyFrameIndex
Definition DataLayoutConventions.h:98
constexpr const char * kImageStride2
DataLayout convention name for the image stride for the other planes (not the first plane).
Definition DataLayoutConventions.h:37
constexpr const char * kImageHeight
DataLayout convention name for the image height.
Definition DataLayoutConventions.h:33
constexpr const char * kAudioSampleCount
Definition DataLayoutConventions.h:131
constexpr const char * kNextContentBlockSize
DataLayout convention to specify the size of the content block following.
Definition DataLayoutConventions.h:159
constexpr const char * kImagePixelFormat
DataLayout convention name for the pixel format specification (see vrs::ImageFormat).
Definition DataLayoutConventions.h:39
constexpr const char * kImageKeyFrameTimeStamp
DataLayout convention name for the stream's most recent video keyframe timestamp.
Definition DataLayoutConventions.h:95
constexpr const char * kImageCodecName
DataLayout convention name for image/custom_codec and image/video images' codec name.
Definition DataLayoutConventions.h:45
constexpr const char * kAudioSampleRate
DataLayout convention name for the sample rate (samples per second).
Definition DataLayoutConventions.h:124
constexpr const char * kAudioSampleFormat
DataLayout convention name for the audio sample format (see vrs::AudioSampleFormat).
Definition DataLayoutConventions.h:116
constexpr const char * kImageStride
DataLayout convention name for the image stride for the first plane.
Definition DataLayoutConventions.h:35
constexpr const char * kAudioSampleFrameStride
Definition DataLayoutConventions.h:120
constexpr const char * kImageCodecQuality
DataLayout convention video codec quality setting.
Definition DataLayoutConventions.h:47
Definition Compressor.cpp:113