diff options
Diffstat (limited to 'gpr/source/lib/common/private/gpr_buffer.c')
-rwxr-xr-x | gpr/source/lib/common/private/gpr_buffer.c | 99 |
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; +} + |