1 /**
2 *
3 * Copyright 2016-2020 Netflix, Inc.
4 *
5 * Licensed under the BSD+Patent License (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * https://opensource.org/licenses/BSDplusPatent
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 *
17 */
18
19 #include <stdio.h>
20 #include <stdlib.h>
21 #include <assert.h>
22
23 /**
24 * Note: stride is in terms of bytes
25 */
write_image(FILE * wfile,const void * buf,int width,int height,int stride,int elem_size)26 int write_image(FILE *wfile, const void *buf, int width, int height, int stride, int elem_size)
27 {
28 const char *byte_ptr = buf;
29 int i;
30 int ret = 1;
31
32 if (width <= 0 || height <= 0 || elem_size <= 0)
33 {
34 goto fail_or_end;
35 }
36
37 for (i = 0; i < height; ++i)
38 {
39 if (fwrite(byte_ptr, elem_size, width, wfile) != (size_t)width)
40 {
41 goto fail_or_end;
42 }
43
44 byte_ptr += stride;
45 }
46
47 ret = 0;
48
49 fail_or_end:
50 return ret;
51 }
52