store.c

来自「实现在linux下的mpeg4编解码」· C语言 代码 · 共 101 行

C
101
字号
/************************************************************************** *                                                                        * * This code has been developed by Andrea Graziani. This software is an   * * implementation of a part of one or more MPEG-4 Video tools as          * * specified in ISO/IEC 14496-2 standard.  Those intending to use this    * * software module in hardware or software products are advised that its  * * use may infringe existing patents or copyrights, and any such use      * * would be at such party's own risk.  The original developer of this     * * software module and his/her company, and subsequent editors and their  * * companies (including Project Mayo), will have no liability for use of  * * this software or modifications or derivatives thereof.                 * *                                                                        * * Project Mayo gives users of the Codec a license to this software       * * module or modifications thereof for use in hardware or software        * * products claiming conformance to the MPEG-4 Video Standard as          * * described in the Open DivX license.                                    * *                                                                        * * The complete Open DivX license can be found at                         * * http://www.projectmayo.com/opendivx/license.php                        * *                                                                        * **************************************************************************//***  Copyright (C) 2001 - Project Mayo * * Andrea Graziani * * DivX Advanced Research Center <darc@projectmayo.com>***/// store.c //#include <stdlib.h>#include <stdio.h>#include <fcntl.h>#include "mp4_vars.h"#include "debug.h"#include "store.h"/** ***/static void store_yuv (char *name, unsigned char *src, int offset, int incr, int width, int height);static void putbyte (int c);/**/FILE * outfile;int create_flag = 1;const char mode_create[] = "wb";const char mode_open[] = "ab";/***/// Purpose: store a frame in yuv formatvoid storeframe (unsigned char *src[], int width, int height){	int offset = 0;	int hor_size = mp4_state->horizontal_size;  store_yuv (mp4_state->outputname, src[0], offset, width, hor_size, height);  offset >>= 1;  width >>= 1;  height >>= 1;	hor_size >>= 1;  store_yuv (mp4_state->outputname, src[1], offset, width, hor_size, height);  store_yuv (mp4_state->outputname, src[2], offset, width, hor_size, height);}/***/static void store_yuv (char *name, unsigned char *src, int offset,                         int incr, int width, int height){  int i;  unsigned char *p;	const char * mode = create_flag ? mode_create : mode_open;	if (create_flag)		create_flag = 0;  if ((outfile = fopen (name, mode)) == NULL)  {    _Print ("Error: Couldn't append to %s\n", name);    exit(0);  }  for (i = 0; i < height; i++)  {    p = src + offset + incr * i;		fwrite(p, width, 1, outfile);  }  fclose (outfile);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?