summaryrefslogtreecommitdiff
path: root/gpr/source/lib/vc5_common/config.h
diff options
context:
space:
mode:
Diffstat (limited to 'gpr/source/lib/vc5_common/config.h')
-rwxr-xr-xgpr/source/lib/vc5_common/config.h87
1 files changed, 87 insertions, 0 deletions
diff --git a/gpr/source/lib/vc5_common/config.h b/gpr/source/lib/vc5_common/config.h
new file mode 100755
index 0000000..5169510
--- /dev/null
+++ b/gpr/source/lib/vc5_common/config.h
@@ -0,0 +1,87 @@
+/*! @file config.h
+ *
+ * @brief Parameters that control the configuration of the codec.
+ *
+ * @version 1.0.0
+ *
+ * (C) Copyright 2018 GoPro Inc (http://gopro.com/).
+ *
+ * Licensed under either:
+ * - Apache License, Version 2.0, http://www.apache.org/licenses/LICENSE-2.0
+ * - MIT license, http://opensource.org/licenses/MIT
+ * at your option.
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+// Maximum number of layers
+#define MAX_LAYER_COUNT 10
+
+// Maximum number of color channels
+#define MAX_CHANNEL_COUNT 4
+//const int MAX_CHANNEL_COUNT = 4;
+
+// Maximum number of wavelets per channel
+#define MAX_WAVELET_COUNT 3
+//const int MAX_WAVELET_COUNT = 3;
+
+// Maximum number of bands per wavelet
+#define MAX_BAND_COUNT 4
+//const int MAX_BAND_COUNT = 4;
+
+// Maximum number of subbands in all wavelets (including the lowpass band in the first wavelet)
+#define MAX_SUBBAND_COUNT 10
+
+// The number of prescale values that are encoded into the bitstream
+#define MAX_PRESCALE_COUNT 8
+
+//TODO: The maximum number of channels and wavelets depends on the profile
+
+//! Internal precision of the intermediate results after unpacking
+static const int default_internal_precision = 12;
+
+//TODO: Change the global variable from internal_precision to encoded_precision?
+
+// Definitions of VC-5 parts
+#define VC5_PART_ELEMENTARY 1
+#define VC5_PART_CONFORMANCE 2 // Conformance does not affect what capabilities are included
+#define VC5_PART_IMAGE_FORMATS 3
+#define VC5_PART_COLOR_SAMPLING 4
+#define VC5_PART_LAYERS 5
+#define VC5_PART_SECTIONS 6
+#define VC5_PART_METADATA 7
+
+// Convert a part number into a part mask
+#define VC5_PART_MASK(n) (1 << ((n)-1))
+
+// Define the parts supported by this codec implementation
+#define VC5_ENABLED_PARTS (VC5_PART_MASK(VC5_PART_ELEMENTARY) | \
+ VC5_PART_MASK(VC5_PART_IMAGE_FORMATS) | \
+ VC5_PART_MASK(VC5_PART_COLOR_SAMPLING) | \
+ VC5_PART_MASK(VC5_PART_SECTIONS))
+
+// Compile code if any of the parts in the specified mask are supported
+#define VC5_ENABLED_MASK(m) ((VC5_ENABLED_PARTS & (m)) != 0)
+
+// Macro for testing support for a specific part of the VC-5 standard
+#define VC5_ENABLED_PART(n) (VC5_ENABLED_MASK(VC5_PART_MASK(n)))
+
+
+#if VC5_ENABLED_PART(VC5_PART_LAYERS)
+
+// Maximum number of layers supported by the reference codec
+#define MAX_LAYER_COUNT 10
+
+#endif
+
+//! Number of rows of intermediate horizontal transform results
+#define ROW_BUFFER_COUNT 6
+
+#endif // CONFIG_H