summaryrefslogtreecommitdiff
path: root/gpr/source/lib/common/private/gpr_buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'gpr/source/lib/common/private/gpr_buffer.c')
-rwxr-xr-xgpr/source/lib/common/private/gpr_buffer.c99
1 files changed, 99 insertions, 0 deletions
diff --git a/gpr/source/lib/common/private/gpr_buffer.c b/gpr/source/lib/common/private/gpr_buffer.c
new file mode 100755
index 0000000..083bc0d
--- /dev/null
+++ b/gpr/source/lib/common/private/gpr_buffer.c
@@ -0,0 +1,99 @@
+/*! @file gpr_buffer.c
+ *
+ * @brief Implementation of gpr_buffer object and functions that work on buffer
+ *
+ * @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.
+ */
+
+#include "gpr_buffer.h"
+#include "macros.h"
+#include "stdc_includes.h"
+
+int read_from_file(gpr_buffer* buffer, const char* file_path, gpr_malloc malloc_function, gpr_free free_function)
+{
+ assert( buffer != NULL );
+
+ FILE *fIN = fopen(file_path, "rb");
+ if (fIN == NULL)
+ {
+ fprintf (stderr, "Error while reading file: %s", file_path);
+ return -1;
+ }
+
+ fseek (fIN, 0, SEEK_END);
+ buffer->size = (size_t) ftell(fIN);
+ rewind (fIN);
+
+ buffer->buffer = malloc_function(buffer->size);
+
+ if ( buffer->buffer == NULL)
+ {
+ fputs ("Memory error", stderr);
+ fclose(fIN);
+ return -1;
+ }
+
+ if (fread(buffer->buffer, 1, buffer->size, fIN) != buffer->size)
+ {
+ free_function(buffer->buffer);
+ fputs ("Reading error", stderr);
+ fclose(fIN);
+ return -1;
+ }
+
+ fclose(fIN);
+
+ return 0;
+}
+
+int write_to_file(const gpr_buffer* buffer, const char* file_path)
+{
+ unsigned int bytes_written;
+
+ FILE *fOUT = fopen(file_path, "wb");
+ if (fOUT == NULL)
+ {
+ fprintf (stderr, "Error while writing file: %s", file_path);
+ return -1;
+ }
+
+ bytes_written = fwrite(buffer->buffer, 1, buffer->size, fOUT);
+ if( bytes_written != buffer->size ) {
+ fputs("Could not write bytes \n", stderr);
+ perror("fwrite()");
+ fclose(fOUT);
+ return -2;
+ }
+
+ fclose(fOUT);
+
+ return 0;
+}
+
+#include "gpr_rgb_buffer.h"
+
+void gpr_rgb_gain_set_defaults(gpr_rgb_gain* x)
+{
+ x->r_gain_num = 30;
+ x->r_gain_pow2_den = 4;
+
+ x->g_gain_num = 1;
+ x->g_gain_pow2_den = 0;
+
+ x->b_gain_num = 7;
+ x->b_gain_pow2_den = 2;
+}
+