@@ -106,7 +106,7 @@ int main(int argc, char *argv[]) {
106106 FILE * yuv_fd ;
107107 size_t yuv_size ;
108108 unsigned char * yuv_buffer ;
109- JSAMPLE * image_buffer ;
109+ JSAMPLE * jpg_buffer ;
110110 struct jpeg_compress_struct cinfo ;
111111 struct jpeg_error_mgr jerr ;
112112 FILE * jpg_fd ;
@@ -174,12 +174,14 @@ int main(int argc, char *argv[]) {
174174 /* Check that the file size matches 4:2:0 yuv. */
175175 if (yuv_size !=
176176 (size_t )luma_width * luma_height + 2 * chroma_width * chroma_height ) {
177+ fclose (yuv_fd );
177178 fprintf (stderr , "Unexpected input format!\n" );
178179 return 1 ;
179180 }
180181
181182 yuv_buffer = malloc (yuv_size );
182183 if (!yuv_buffer ) {
184+ fclose (yuv_fd );
183185 fprintf (stderr , "Memory allocation failure!\n" );
184186 return 1 ;
185187 }
@@ -193,15 +195,15 @@ int main(int argc, char *argv[]) {
193195 frame_width = (luma_width + (16 - 1 )) & ~(16 - 1 );
194196 frame_height = (luma_height + (16 - 1 )) & ~(16 - 1 );
195197
196- image_buffer =
198+ jpg_buffer =
197199 malloc (frame_width * frame_height + 2 * (frame_width /2 )* (frame_height /2 ));
198- if (!image_buffer ) {
200+ if (!jpg_buffer ) {
199201 free (yuv_buffer );
200202 fprintf (stderr , "Memory allocation failure!\n" );
201203 return 1 ;
202204 }
203205
204- extend_edge (image_buffer , frame_width , frame_height ,
206+ extend_edge (jpg_buffer , frame_width , frame_height ,
205207 yuv_buffer , luma_width , luma_height , chroma_width , chroma_height );
206208
207209 free (yuv_buffer );
@@ -210,9 +212,9 @@ int main(int argc, char *argv[]) {
210212 jpeg_create_compress (& cinfo );
211213
212214 jpg_fd = fopen (jpg_path , "wb" );
213- if (!jpg_fd ) {
215+ if (!jpg_fd ) {
216+ free (jpg_buffer );
214217 fprintf (stderr , "Invalid path to JPEG file!\n" );
215- free (image_buffer );
216218 return 1 ;
217219 }
218220
@@ -259,23 +261,21 @@ int main(int argc, char *argv[]) {
259261 scanline = cinfo .next_scanline ;
260262
261263 for (y = 0 ; y < 16 ; y ++ ) {
262- yrow_pointer [y ] = & image_buffer [frame_width * (scanline + y )];
264+ yrow_pointer [y ] = & jpg_buffer [frame_width * (scanline + y )];
263265 }
264266 for (y = 0 ; y < 8 ; y ++ ) {
265- cbrow_pointer [y ] = & image_buffer [frame_width * frame_height +
267+ cbrow_pointer [y ] = & jpg_buffer [frame_width * frame_height +
266268 (frame_width /2 )* ((scanline /2 ) + y )];
267- crrow_pointer [y ] = & image_buffer [frame_width * frame_height +
269+ crrow_pointer [y ] = & jpg_buffer [frame_width * frame_height +
268270 (frame_width /2 )* (frame_height /2 ) + (frame_width /2 )* ((scanline /2 ) + y )];
269271 }
270272 jpeg_write_raw_data (& cinfo , plane_pointer , 16 );
271273 }
272274
273275 jpeg_finish_compress (& cinfo );
274-
275276 jpeg_destroy_compress (& cinfo );
276277
277- free (image_buffer );
278-
278+ free (jpg_buffer );
279279 fclose (jpg_fd );
280280
281281 return 0 ;
0 commit comments