亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? zdjpeg.c

?? linux環境下jpeg編解碼算法的實現
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* zdjpeg.c * * Copyright (c)2008 Magnum Semiconductor Inc., All rights reserved. * * This command line JPEG decode utility is based on the IJG library djpeg. * Several of the options supported by that program have been removed as they * are not required to illustrate the operation of the ZEVIO JPEG decoder. * * This program performs a command line decode usingthe ZSP optimised decoder * * The original djpeg code is: * * Copyright (C) 1991-1998, Thomas G. Lane. * This file is part of the Independent JPEG Group's software. */#include <assert.h>#include <err.h>#include <errno.h>#include <fcntl.h>#include <stdio.h>#include <stdint.h>#include <stdlib.h>#include <stdbool.h>#include <string.h>#include <sysexits.h>#include <unistd.h>#include <stdint.h>#include <signal.h>#include <alloca.h>#include <limits.h>#include <ctype.h>#include <poll.h>#include <sys/mman.h>#include <sys/ioctl.h>#include <sys/time.h>#include <dirent.h>#include <pthread.h>#include <semaphore.h>#include <zevio/zevio2d.h>#include <zevio/zevio3d.h>#include <zevio/gpu_factory.h>#include "zeviojpegapi.h"#include "display.h"/* * These constants are for the use of this program, the JPEG library itself * is precompiled to support up to 800*600 displays which is all that can * be reasonably expected on a current ZEVIO platform. The memory saving in * the JPEG decoder for a smaller size such as 640*480 is minimal */#define OUTPUT_W 800#define OUTPUT_H 600/* * The value APP_PHY_MEMORY defines the memory reserved for final image output * which must be to physically mapped memory. Currently this is large enough * for an 800*600 linear image. However it is no longer required... */#define APP_PHY_MEMORY 0//#define TRACE fprintf(stdout, "( %s : %s : %d )\n", __FILE__, __func__, __LINE__);#define TRACE#define PPM_MAXVAL 255#define READ_BINARY "rb"#define WRITE_BINARY "wb"#define INTERVAL_TIME 60 // Seconds!static const char  *progname;static       char  *outfilename,                   *playRoot;static boolean      thumbnail,                    slideshow,                    play,                    tile,                    flush;static sem_t        done;static unsigned int oWidth,                    oHeight,                    loopCounter,                    displayCounter,                    presentationDelay,                    quality;static void                 *gpuVMem;static ZV_GPU_BUFFER_OBJECT  gpuBuf;extern void encodeStart( zJpegDecompressPtr decompressCinfo, char *filename, unsigned int oWidth, unsigned int oHeight, unsigned int quality);extern void encodeEnd( void );extern void encodeWriteAPP1( unsigned char *pHeader, unsigned int length);static void usage ( void );static boolean keymatch (char * arg, const char * keyword, int minchars);static int parse_switches (j_decompress_ptr cinfo, int argc, char **argv,                           int last_file_arg_seen, boolean for_real);static void freeInputBuffer( zJpegDecompressPtr cinfo,                             int                temp,                             zJpegDecodeStatus  status);static void zdjpegErrorExit ( zJpegCommonPtr cinfo );static int zdjpeg(int argc, char **argv);/* * Command line help message */static void usage (void)/* complain about bad command line */{  fprintf(stderr, "\nUsage: %s [switches] <input file>\n\n", progname);  fprintf(stderr, "Switches (names may be abbreviated):\n\n");  fprintf(stderr, "  -verbose            Emit debug output\n");  fprintf(stderr, "  -size WxH           Force the output size to be WxH (scaling down only)\n");  fprintf(stderr, "  -thumb              Process embedded thumbnail if present\n");  fprintf(stderr, "  -slideshow <N>      Display 'N' iterations of images in directory\n");  fprintf(stderr, "  -play <file root>   Play a sequence of JPEGs <file root>00001.jpg etc\n");  fprintf(stderr, "  -tile <N> <I>       Like slideshow, but Thumbnails, display refresh every <I>\n");  fprintf(stderr, "  -delay <1 - 99>     Delay then clear 3D screen, default is to leave image\n");  fprintf(stderr, "  -flush              Forces a flush after 2s of every other Slideshow image\n");  fprintf(stderr, "  \n  and\n\n  -outfile <quality> <filename> Writes a ppm file and a jpeg file at the \n                                specified quality level in addition to display\n");  exit(EXIT_FAILURE);}/* * Assist function for command line parsing, converts case and recognises * abbreviated keywords */static boolean keymatch (char * arg, const char * keyword, int minchars){  register int ca, ck;  register int nmatched = 0;  while ((ca = *arg++) != '\0') {    if ((ck = *keyword++) == '\0')      return FALSE;        /* arg longer than keyword, no good */    if (isupper(ca))        /* force arg to lcase (assume ck is already) */      ca = tolower(ca);    if (ca != ck)      return FALSE;        /* no good */    nmatched++;            /* count matched characters */  }  /* reached end of argument; fail if it's too short for unique abbrev */  if (nmatched < minchars)    return FALSE;  return TRUE;            /* A-OK */}/* * Command line parser */static int parse_switches (j_decompress_ptr cinfo, int argc, char **argv,                           int last_file_arg_seen, boolean for_real)/* Parse optional switches. * Returns argv[] index of first file-name argument (== argc if none). * Any file names with indexes <= last_file_arg_seen are ignored; * they have presumably been processed in a previous iteration. * (Pass 0 for last_file_arg_seen on the first or only iteration.) * for_real is FALSE on the first (dummy) pass; we may skip any expensive * processing. */{  int argn;  char * arg;  for_real = for_real;  /* Set up default JPEG parameters. */  outfilename                = NULL;  cinfo->err->trace_level    = 0;  cinfo->dct_method          = JDCT_IFAST;  cinfo->quantize_colors     = FALSE;  cinfo->two_pass_quantize   = FALSE;  cinfo->do_fancy_upsampling = FALSE;  cinfo->dither_mode         = JDITHER_ORDERED;//  cinfo->dither_mode         = JDITHER_NONE;  presentationDelay = 0;  /* Scan command line options, adjust parameters */  for (argn = 1; argn < argc; argn++) {    arg = argv[argn];    if (*arg != '-') {      /* Not a switch, must be a file name argument */      if (argn <= last_file_arg_seen) {        outfilename = NULL;    /* -outfile applies to just one input file */        continue;        /* ignore this name if previously processed */      }      break;            /* else done parsing switches */    }    arg++;            /* advance past switch marker character */    if (keymatch(arg, "verbose", 1)) {      cinfo->err->trace_level++;    } else if (keymatch(arg, "thumb", 2)) {      thumbnail = TRUE;    } else if (keymatch(arg, "flush", 2)) {      flush = TRUE;    } else if (keymatch(arg, "grayscale", 2) || keymatch(arg, "greyscale",2)) {      /* Force monochrome output. */      cinfo->out_color_space = JCS_GRAYSCALE;    } else if (keymatch(arg, "outfile", 2)) {      /* Set output file name. */      if (slideshow == TRUE || tile == TRUE || play == TRUE)        usage();       if (++argn >= argc)    /* advance to next argument */        usage();      if (sscanf(argv[argn], "%d",                 &quality) != 1)        usage();      if (++argn >= argc)    /* advance to next argument */        usage();      outfilename = argv[argn];    /* save it away for later use */    } else if (keymatch(arg, "play", 2)) {      /* Set output file name. */      if (++argn >= argc)    /* advance to next argument */        usage();      if (slideshow == TRUE || tile == TRUE || outfilename != NULL)        usage();      playRoot = argv[argn];    /* save it away for later use */      play        = TRUE;    } else if (keymatch(arg, "delay", 2)) {      /* Set the presentation delay */      if (++argn >= argc)    /* advance to next argument */        usage();      if (sscanf(argv[argn], "%d",                 &presentationDelay) != 1)        usage();      if (presentationDelay == 0 || presentationDelay > 99)        usage();    } else if (keymatch(arg, "slideshow", 2)) {      /* Set the presentation delay */      slideshow = TRUE;      if (++argn >= argc)    /* advance to next argument */        usage();      if (play == TRUE || tile == TRUE || outfilename != NULL)        usage();      if (sscanf(argv[argn], "%d",                 &loopCounter) != 1)        usage();    } else if (keymatch(arg, "tile", 2)) {      /* Set the presentation delay */      tile = TRUE;      if (++argn >= argc)    /* advance to next argument */        usage();      if (slideshow == TRUE || play == TRUE || outfilename != NULL)        usage();      if (sscanf(argv[argn], "%d",                 &loopCounter) != 1)        usage();      if (++argn >= argc)    /* advance to next argument */        usage();      if (sscanf(argv[argn], "%d",                 &displayCounter) != 1)        usage();      if (displayCounter <  1) displayCounter = 1;      if (displayCounter > 25) displayCounter = 25;    } else if (keymatch(arg, "size", 2)) {      /* Set the output size. */      if (++argn >= argc)    /* advance to next argument */        usage();      if (sscanf(argv[argn], "%dx%d",                 &oWidth, &oHeight) != 2)        usage();    } else {      usage();            /* bogus switch */    }  }  return argn;            /* return index of next arg (file name) */}/* Override standard error handling */struct zdjpegErrorMgr {  zJpegErrorMgr pub;  jmp_buf setjmp_buffer;};typedef struct zdjpegErrorMgr *zdjpegErrorPtr;static void zdjpegErrorExit ( zJpegCommonPtr cinfo ){  zdjpegErrorPtr errorMgr = (zdjpegErrorPtr)cinfo->err;  /* Always display the message. */  (*cinfo->err->output_message) (cinfo);  /* Return control to the setjmp point */  longjmp(errorMgr->setjmp_buffer, 1);}/* * Simple callback routine used to synchronise the command line application to * the asynchronous JPEG decode. This feedback mechanism is likely to be more * complex in a real world application */static void freeInputBuffer( zJpegDecompressPtr cinfo,                             int                temp,                             zJpegDecodeStatus  status){	cinfo = cinfo;	temp  = temp;  if (status == DECODE_ERROR)  {    printf("\n!!!Decode Error!!!\n\n");  }  else if (status == DECODE_ABORTED)  {    printf("\n!!!Decode Aborted!!!\n\n");  }  printf("decoded size: %d x %d\n", cinfo->output_width, cinfo->output_height);  sem_post(&done);}/* * zdjpeg entry point */static int zdjpeg(int argc, char **argv){  zJpegDecompressStruct cinfo;  struct zdjpegErrorMgr       errorHandler;  void                       *vMem,                             *rgbBuffer = NULL;  unsigned long               pMem;  long                        time;  struct itimerval            timSet,                              timGet1,                              timGet2;  int                         file_index;  FILE                       *input_file  = NULL;  boolean                     thumbnailFound,                              upperCase;  thumbnail = FALSE;  slideshow = FALSE;  play      = FALSE;  tile      = FALSE;  flush     = FALSE;  progname = argv[0];  if (progname == NULL || progname[0] == 0)    progname = "zdjpeg";  oWidth  = OUTPUT_W;  oHeight = OUTPUT_H;  /*   * Initialize the 3D library used to provide contiguous physical memory   */  GPU_Factory_Init(&gpuVMem);  /*   * Reserve physically mapped memory for the image store and as required by   * the JPEG decoder. The JPEG decoder manages its own memory buffers after   * initialisation.   *///  vMem = zevio3d_pmalloc_far( zJpegGetRequiredMemory( NULL ), 16, &pMem );  vMem = zevio3d_palloc_far( APP_PHY_MEMORY + zJpegGetRequiredMemory( NULL ), &pMem );//  vMem = zevio3d_pmalloc_far( APP_PHY_MEMORY + zJpegGetRequiredMemory( NULL ), 16, &pMem );  assert(vMem);  assert(pMem);  /*   * Initialize the ZSP, passing virtual and physical pointers to the requested   * memory buffers   */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产福利视频一区二区三区| 欧美性淫爽ww久久久久无| www.亚洲色图| 678五月天丁香亚洲综合网| 国产欧美视频一区二区三区| 天堂午夜影视日韩欧美一区二区| av成人动漫在线观看| 精品国产伦一区二区三区观看方式 | 欧美精品一区二区三区一线天视频| 国产精品福利在线播放| 久久电影网站中文字幕| 欧美日韩成人在线一区| 亚洲美女偷拍久久| 成人免费毛片aaaaa**| 亚洲精品一区二区三区精华液| 亚洲国产sm捆绑调教视频| 99riav一区二区三区| 国产日产亚洲精品系列| 国产综合久久久久久久久久久久| 欧美一区二区视频观看视频| 亚洲国产aⅴ天堂久久| 91成人网在线| 一区二区成人在线视频| 99久久婷婷国产| 国产精品人成在线观看免费| 国产精品自拍网站| 久久久噜噜噜久久人人看| 极品少妇xxxx精品少妇偷拍| 91精品麻豆日日躁夜夜躁| 午夜激情综合网| 欧美日韩成人在线一区| 日韩不卡手机在线v区| 欧美日韩国产三级| 婷婷成人激情在线网| 欧美日韩亚洲综合| 日日嗨av一区二区三区四区| 欧美日韩国产精选| 日韩电影在线看| 欧美不卡一二三| 国产黄色91视频| 中文字幕中文字幕一区二区| 99riav一区二区三区| 亚洲午夜久久久久久久久电影网 | 亚洲精品va在线观看| 色婷婷精品大在线视频| 怡红院av一区二区三区| 欧美日韩一区久久| 精品亚洲国内自在自线福利| 久久先锋影音av| av在线免费不卡| 午夜不卡在线视频| 欧美成人乱码一区二区三区| 成人亚洲一区二区一| 亚洲免费伊人电影| 91精品国产免费久久综合| 久久精品国产亚洲a| 日本一区二区不卡视频| 欧美日韩中文字幕一区二区| 美脚の诱脚舐め脚责91| 国产精品三级久久久久三级| 在线一区二区三区四区| 美女视频黄a大片欧美| 欧美国产精品久久| 欧美日韩精品系列| 国产自产v一区二区三区c| 亚洲精品成人天堂一二三| 欧美mv日韩mv国产| 日本道免费精品一区二区三区| 蜜桃精品视频在线观看| 国产精品久久久久aaaa樱花| 欧美人与禽zozo性伦| 懂色av一区二区三区免费观看| 亚洲一区二区三区四区五区黄 | 亚洲视频资源在线| 日韩一区二区三区av| 成人黄页毛片网站| 日韩va亚洲va欧美va久久| 国产精品久久久久影院老司| 欧美日韩1区2区| 成人午夜电影小说| 麻豆一区二区99久久久久| 亚洲欧美日韩一区| 久久亚洲一级片| 欧美影视一区在线| 成人黄色av电影| 久久福利视频一区二区| 亚洲成av人片在线观看无码| 国产欧美精品一区二区色综合 | 懂色中文一区二区在线播放| 免费观看日韩电影| 一区二区三区四区在线免费观看| 久久久噜噜噜久噜久久综合| 7777精品伊人久久久大香线蕉的 | gogogo免费视频观看亚洲一| 精品一区二区免费在线观看| 日韩有码一区二区三区| 亚洲另类在线一区| 国产精品久久三区| 亚洲国产成人一区二区三区| 日韩一区二区视频| 欧美一区二区三级| 欧美巨大另类极品videosbest | www激情久久| 欧美一区三区二区| 欧美日韩国产中文| 欧美精品在线一区二区| 欧美伊人久久大香线蕉综合69| 成人国产免费视频| 成年人网站91| 波多野结衣中文一区| 成人三级在线视频| jlzzjlzz亚洲女人18| 成人高清视频在线| 99精品热视频| 色婷婷久久久综合中文字幕| 色婷婷综合久久久中文字幕| 色综合久久中文字幕| 色综合天天综合网天天狠天天| 91浏览器打开| 欧美亚洲国产一区在线观看网站| 欧美视频第二页| 欧美人狂配大交3d怪物一区| 欧美久久一二三四区| 在线91免费看| 日韩欧美一二区| 国产欧美日韩精品在线| 中文字幕一区二区不卡| 亚洲美女一区二区三区| 亚洲成av人在线观看| 久久99久久久久| 国产xxx精品视频大全| 99久久精品免费| 欧美性videosxxxxx| 91精品国产一区二区人妖| 久久亚洲一级片| 亚洲精选视频免费看| 亚洲成人av中文| 韩国av一区二区三区四区| 奇米影视一区二区三区| 欧美一级欧美三级| 中文字幕av一区二区三区| 亚洲一区在线视频| 日韩成人精品在线| 国产成人亚洲综合色影视| 色综合久久天天综合网| 777亚洲妇女| 中文字幕欧美激情一区| 亚洲成人免费看| 韩国一区二区三区| 色诱视频网站一区| 欧美一卡二卡三卡| 国产精品国产精品国产专区不蜜| 亚洲曰韩产成在线| 风流少妇一区二区| 欧美日韩一二三区| 国产精品美女视频| 日本伊人精品一区二区三区观看方式| 国产mv日韩mv欧美| 欧美一区二区三区在线观看| 国产日本亚洲高清| 日韩精彩视频在线观看| jiyouzz国产精品久久| 日韩欧美一级特黄在线播放| 亚洲欧美日韩在线播放| 国产伦精品一区二区三区免费 | 亚洲成人综合视频| 成人精品在线视频观看| 欧美成va人片在线观看| 亚洲综合色网站| 不卡视频一二三四| 欧美精品一区二区三区在线播放| 午夜精品久久久久久久99水蜜桃 | 欧美色精品天天在线观看视频| 日本一区二区动态图| 九九精品一区二区| 欧美精品99久久久**| 亚洲欧美一区二区三区极速播放 | 国产剧情一区二区| 91精品国产91久久久久久一区二区| 综合激情成人伊人| 成人性生交大合| www成人在线观看| 精品一区二区综合| 日韩视频在线你懂得| 日韩综合小视频| 欧美日韩精品欧美日韩精品| 一区二区三区免费在线观看| 99在线精品观看| 中文字幕一区二区三区在线不卡| 国产黑丝在线一区二区三区| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 日本一区二区在线不卡| 极品少妇xxxx精品少妇| 日韩欧美国产小视频| 日韩精品视频网| 欧美一区二区三区四区高清| 天天综合网天天综合色| 日韩一区二区在线看| 久久精品国产99久久6| 欧美电影免费观看高清完整版在|