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