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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? zdjpeg.c

?? linux環(huán)境下jpeg編解碼算法的實(shí)現(xiàn)
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
     header[32] = 0x03;  // IFD1 Entry Count     header[33] = 0x00;     header[34] = 0x03;  // Thumbnail Type tag     header[35] = 0x01;     header[36] = 0x03;     header[37] = 0x00;     header[38] = 0x01;     header[39] = 0x00;     header[40] = 0x00;     header[41] = 0x00;     header[42] = 0x06;     header[43] = 0x00;     header[44] = 0x00;     header[45] = 0x00;     header[46] = 0x01;  // Offset to JPEG Thumbnail     header[47] = 0x02;     header[48] = 0x04;     header[49] = 0x00;     header[50] = 0x01;     header[51] = 0x00;     header[52] = 0x00;     header[53] = 0x00;     header[54] = 0x44;  // 68 bytes from start of TIFF to JPEG     header[55] = 0x00;     header[56] = 0x00;     header[57] = 0x00;     header[58] = 0x02;  // JPEG Thumbnail Length     header[59] = 0x02;     header[60] = 0x04;     header[61] = 0x00;     header[62] = 0x01;     header[63] = 0x00;     header[64] = 0x00;     header[65] = 0x00;     header[66] =  length       & 0xFF;     header[67] = (length >> 8) & 0xFF;     header[68] = 0x00;     header[69] = 0x00;     header[70] = 0x00;  // NULL offset, no more IFDs     header[71] = 0x00;     header[72] = 0x00;     header[73] = 0x00;     /*      * Write the header      */     rewind(input_file);    zJpegStdioSrc(&cinfo, input_file);    zJpegReadHeader(&cinfo, FALSE, &thumbnailFound);            cinfo.dct_method          = JDCT_IFAST;            cinfo.quantize_colors     = FALSE;            cinfo.two_pass_quantize   = FALSE;            cinfo.do_fancy_upsampling = FALSE;            cinfo.dither_mode         = JDITHER_ORDERED;    oWidth  = OUTPUT_W;    oHeight = OUTPUT_H;    zJpegSetOutputSize( &cinfo, &oWidth, &oHeight, SCALE_MAX );    encodeStart( &cinfo, outfilename, oWidth, oHeight, quality );     encodeWriteAPP1( header, length+74);     zJpegSetRGBbuffer( &cinfo, rgbBuffer );     /*      * Decode the main image to the file      */printf("starting main image\n");    (void) zJpegStartDecompress(&cinfo, freeInputBuffer, 0, gpuBuf.vBase, (unsigned long)gpuBuf.pBase); // Buffer assigned internally for now    sem_wait(&done);    zJpegSetRGBbuffer( &cinfo, NULL );    encodeEnd();    /*     * Tidy Up     */    free(rgbBuffer);    zJpegFinishDecompress(&cinfo);    zJpegReleaseDecompress(&cinfo);    GPU_Factory_Release(&gpuBuf);    fclose(input_file);  }  else if (slideshow == TRUE)  {    DIR *dir;    struct dirent *ptr;    int imageCount = 0,        k = loopCounter;    char imgFile[128]; // Sometimes long paths!    /*     * Initialize the JPEG decompression object     */    if (zJpegCreateDecompress( &cinfo ) != EXIT_SUCCESS)    {      fprintf(stderr, "%s: can't create decompression object\n", progname);      exit(EXIT_FAILURE);    }    printf("Slideshow Mode, %d loops requested...\n", k);    while (k--)    {      dir = opendir(argv[file_index]);      if (!dir)      {        printf("[ERROR] Failed to open dir '%s'\n", argv[file_index]);        break;      }      else      {        while (NULL != (ptr = readdir(dir)))        {          oWidth  = OUTPUT_W;          oHeight = OUTPUT_H;          if ((!(memcmp(ptr->d_name+strlen(ptr->d_name)-4, ".jpg", 4))) ||                (!(memcmp(ptr->d_name+strlen(ptr->d_name)-4, ".JPG", 4))))          {            /*             * Decode and present an image             */            sprintf(imgFile, "%s", argv[file_index]);            strcat(imgFile, ptr->d_name);            imageCount++;            if  (cinfo.err->trace_level)            {              printf("\nSlideshow - decoding %s [%d]\n", imgFile, imageCount);            }            if ((input_file = fopen(imgFile, READ_BINARY)) == NULL)            {              fprintf(stderr, "%s: can't open %s\n", progname, argv[file_index]);              exit(EXIT_FAILURE);            }            if  (cinfo.err->trace_level)            {              timSet.it_interval.tv_sec = INTERVAL_TIME;              timSet.it_interval.tv_usec = 0;              timSet.it_value.tv_sec = INTERVAL_TIME;              timSet.it_value.tv_usec = 0;              assert(!setitimer(ITIMER_REAL, &timSet, NULL));            }            /*             * At this point pZSP  which is the ZEVIO specific 'cinfo' extension can be             * initialized. The intention is that 'cinfo' remains as standard and all             * extensions use the existing 'client_data' pointer to user extensions             *///            pZSP = (struct zjpeg_command *)cinfo.client_data;            zJpegStdioSrc(&cinfo, input_file);            /*             * Read file header which sets the default decompression parameters. At this             * point the ZEVIO decoder can check for an embedded thumbnail, see the logic             * below for details...             */            zJpegReadHeader(&cinfo, thumbnail, &thumbnailFound);            if(thumbnail == TRUE && thumbnailFound == FALSE)            {              fprintf(stderr, "%s: no thumbnail present\n", progname);              zJpegFinishDecompress(&cinfo);              rewind(input_file);              zJpegStdioSrc(&cinfo, input_file);              zJpegReadHeader(&cinfo, FALSE, &thumbnailFound);              oWidth  = 160;              oHeight = 120;            }            /*             * Adjust default decompression parameters by re-parsing the options. In a             * real application the decode parameters must be set after reading the             * header             */            file_index = parse_switches( &cinfo, argc, argv, 0, TRUE );            /*             * Scale the image to fit the desired output size. Here we always scale to             * match aspect ratio and maximum 800x600             */            zJpegSetOutputSize( &cinfo, &oWidth, &oHeight, SCALE_MAX );            /*             * (void*) gpuBuf.pBase = physical address to top left corner of buffer             * (unsigned short*) gpuBuf.vBase = virtual address to top left corner of buffer             */            GPU_Factory_Request(ZV_GBUF_FULL_SCREEN,&gpuBuf);            /*             * Start decompressor, the callback and memory pointers for the output             * buffer are passed as parameters             */            (void) zJpegStartDecompress(&cinfo, freeInputBuffer, 0, gpuBuf.vBase, (unsigned long)gpuBuf.pBase); // Buffer assigned internally for now            /*             * Pend on callback indicating decode complete             */            if (flush == TRUE)            {              if (imageCount & 1)              {                sleep(2);                zJpegFlushDecoder();              }            }            sem_wait(&done);            /*             * Decode time is captured before writing out the file which is subject to             * NFS delays. Of course the input and swap file are also plagued by NFS             * but at least one source of uncertainty is removed...             */            if  (cinfo.err->trace_level)            {              assert(!getitimer(ITIMER_REAL, &timGet1));            }            assert(oWidth  <= OUTPUT_W);            assert(oHeight <= OUTPUT_H);            /*             * Draw LCD display             */            GPU_Factory_BindTexture(&gpuBuf);            display_pixels((void *)gpuBuf.vBase,(unsigned short*)gpuVMem,gpuBuf.offset);            if  (cinfo.err->trace_level)            {              assert(!getitimer(ITIMER_REAL, &timGet2));            }            /*             * Tidy up after decode of a single image, this should be used by any             * application             */            zJpegFinishDecompress(&cinfo);            /*             * Decode & presentation run time output             */            if  (cinfo.err->trace_level)            {              zJpegInstrumentation result;              zJpegGetInstrumentation( &cinfo, &result );              printf("\n%d %u.%ums [%d] %u.%ums [%d] %d %dx%d %dx%d %dx%d\n",                     result.ppPackets,                     result.zspTimer0ms,                     result.zspTimer0hus,                     result.zspTimer0oflow,                     result.zspTimer1ms,                     result.zspTimer1hus,                     result.zspTimer1oflow,                     result.chromaType,                     result.imageWidth,                     result.imageHeight,                     result.outputWidth,                     result.outputHeight,                     result.displayWidth,                     result.displayHeight);              time = INTERVAL_TIME*1000000 - (timGet1.it_value.tv_sec * 1000000 + timGet1.it_value.tv_usec);              if (time <= 0)                printf("Task Timer Elapsed...\n");              else                printf("[D] %ld.%02lds ", time/1000000, (time%1000000)/10000);              time = INTERVAL_TIME*1000000 - (timGet2.it_value.tv_sec * 1000000 + timGet2.it_value.tv_usec);              if (time <= 0)                printf("Task Timer Elapsed...\n");              else                printf("[P] %ld.%02lds for %s\n", time/1000000, (time%1000000)/10000, argv[file_index]);            }            fclose(input_file);            GPU_Factory_Release(&gpuBuf);            if (presentationDelay)            {              sleep(presentationDelay);            }          }        }      }      closedir(dir);    }    printf("\nSlideshow done, %d images in total\n\n", imageCount);    zJpegReleaseDecompress(&cinfo);    zevio2d_disable_3dscr();  }  else if (play == TRUE)  {    int imageCount = 1;    char imgFile[128]; // Sometimes long paths!    /*     * Initialize the JPEG decompression object     */    if (zJpegCreateDecompress( &cinfo ) != EXIT_SUCCESS)    {      fprintf(stderr, "%s: can't create decompression object\n", progname);      exit(EXIT_FAILURE);    }    sprintf(imgFile, "%s00001.jpg", playRoot);    if ((input_file = fopen(imgFile, READ_BINARY)) == NULL)    {      sprintf(imgFile, "%s00001.JPG", playRoot);      if ((input_file = fopen(imgFile, READ_BINARY)) == NULL)      {        fprintf(stderr,                "%s: can't open first frame - %s00001.[jpg|JPG]\n",                progname,                playRoot);        exit(EXIT_FAILURE);      }      else      {        upperCase = TRUE;      }    }    else    {      upperCase = FALSE;    }    fclose(input_file);    printf("Play - %s\n\n", playRoot);    while (1)    {      oWidth  = OUTPUT_W;      oHeight = OUTPUT_H;       /*       * Decode and present an image       */      sprintf(imgFile, "%s%05u.%s", playRoot, imageCount++, (upperCase == TRUE) ? "JPG" : "jpg");      if ((input_file = fopen(imgFile, READ_BINARY)) == NULL)      {        break;      }      if  (cinfo.err->trace_level)      {        timSet.it_interval.tv_sec = INTERVAL_TIME;        timSet.it_interval.tv_usec = 0;        timSet.it_value.tv_sec = INTERVAL_TIME;        timSet.it_value.tv_usec = 0;        assert(!setitimer(ITIMER_REAL, &timSet, NULL));      }      /*       * At this point pZSP  which is the ZEVIO specific 'cinfo' extension can be       * initialized. The intention is that 'cinfo' remains as standard and all       * extensions use the existing 'client_data' pointer to user extensions       *///      pZSP = (struct zjpeg_command *)cinfo.client_data;      zJpegStdioSrc(&cinfo, input_file);      /*       * Read file header which sets the default decompression parameters. At this       * point the ZEVIO decoder can check for an embedded thumbnail, see the logic       * below for details...       */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区三区色| 国产精品视频麻豆| 成人精品免费视频| 亚洲国产sm捆绑调教视频 | 经典一区二区三区| 亚洲精品五月天| 国产欧美一区在线| 日韩欧美第一区| 欧美日韩一卡二卡| av中文一区二区三区| 久久黄色级2电影| 亚洲成年人网站在线观看| 日韩理论在线观看| 亚洲国产精品国自产拍av| 欧美成人免费网站| 777久久久精品| 欧美在线一区二区三区| www.欧美亚洲| 成人晚上爱看视频| 国产一区二区三区国产| 美女视频黄a大片欧美| 日韩激情一二三区| 婷婷一区二区三区| 亚洲第一会所有码转帖| 樱桃国产成人精品视频| 亚洲欧美一区二区三区极速播放| 久久人人97超碰com| 日韩你懂的在线观看| 91精品国产色综合久久不卡电影| 欧美视频一区二区三区四区| 色综合久久天天| av一本久道久久综合久久鬼色| 国内精品伊人久久久久av一坑 | 欧美午夜一区二区| 91免费国产在线观看| 成人动漫视频在线| 成人一区二区三区| 成人av影视在线观看| 99久久国产免费看| 99久久精品国产观看| 色欧美乱欧美15图片| 在线免费观看日韩欧美| 色综合色综合色综合色综合色综合| av欧美精品.com| 色综合久久天天| 91久久精品一区二区三| 欧美性高清videossexo| 欧美区视频在线观看| 欧美日韩国产a| 日韩精品一区二区三区在线播放 | 亚洲精品一区二区三区蜜桃下载| 精品国产乱码久久久久久影片| 精品国产乱码久久久久久蜜臀| 欧美成人bangbros| 国产目拍亚洲精品99久久精品 | 美女一区二区在线观看| 久久国产精品露脸对白| 国产乱码精品一区二区三区忘忧草 | 日本一区中文字幕| 久久99在线观看| 成人美女视频在线看| 色屁屁一区二区| 日韩欧美色电影| 国产精品美女视频| 亚洲激情av在线| 青椒成人免费视频| 国产99久久久精品| 在线观看欧美日本| 欧美刺激脚交jootjob| 欧美激情综合五月色丁香 | 国产91精品在线观看| 91视视频在线观看入口直接观看www | 成人不卡免费av| 欧美亚洲丝袜传媒另类| 精品剧情v国产在线观看在线| 亚洲国产成人在线| 午夜精品一区二区三区免费视频| 精品中文字幕一区二区小辣椒| 99久久精品情趣| 欧美一级一级性生活免费录像| 国产网站一区二区三区| 亚洲国产精品久久不卡毛片| 久久精品72免费观看| 91丨国产丨九色丨pron| 日韩午夜av电影| 亚洲欧美一区二区视频| 奇米影视一区二区三区| 波多野结衣亚洲| 精品剧情在线观看| 一区二区三区四区国产精品| 久久av中文字幕片| 欧美日韩精品一二三区| 中文字幕第一区第二区| 秋霞成人午夜伦在线观看| 91麻豆精品视频| 2019国产精品| 日韩电影一二三区| 一本大道久久a久久精二百| 久久精品这里都是精品| 日韩av网站免费在线| 91久久奴性调教| 国产精品国产精品国产专区不片| 日韩精品每日更新| 色妹子一区二区| 国产欧美一区二区三区鸳鸯浴 | 五月婷婷久久综合| 91麻豆福利精品推荐| 精品国产电影一区二区| 日韩精品乱码av一区二区| 91黄色免费观看| 成人免费在线播放视频| 国产69精品一区二区亚洲孕妇| 欧美一区二区三区免费大片| 亚洲九九爱视频| www.成人网.com| 国产欧美一区二区三区在线老狼| 久久国产精品99久久人人澡| 欧美高清视频不卡网| 亚洲综合男人的天堂| 91视频精品在这里| 中文字幕高清一区| 成人午夜免费电影| 亚洲国产高清在线观看视频| 国产精品一区二区三区乱码| www国产精品av| 激情五月激情综合网| 欧美一区二区三区喷汁尤物| 午夜视频在线观看一区二区三区| 色婷婷狠狠综合| 一区二区三区久久| 在线观看亚洲一区| 亚洲国产一二三| 欧美丝袜第三区| 亚洲午夜精品一区二区三区他趣| 91网站在线播放| 亚洲男人的天堂在线观看| 91免费版在线| 亚洲午夜免费福利视频| 欧美午夜一区二区| 日本亚洲一区二区| 91精品国产高清一区二区三区 | 婷婷国产v国产偷v亚洲高清| 欧美日韩大陆在线| 日本成人在线不卡视频| 欧美电影免费观看高清完整版在线观看 | 亚洲精品一区二区三区四区高清| 国产在线视频不卡二| 久久久久久夜精品精品免费| 国产成人久久精品77777最新版本| 国产日韩视频一区二区三区| 成人v精品蜜桃久久一区| 亚洲免费观看高清| 欧美乱妇15p| 久久99精品国产麻豆婷婷| 欧美极品aⅴ影院| 色域天天综合网| 日韩电影免费在线看| 国产视频一区二区在线| av电影天堂一区二区在线| 亚洲综合成人网| 日韩视频国产视频| 丰满少妇久久久久久久| 亚洲精品久久嫩草网站秘色| 欧美三级一区二区| 精品中文字幕一区二区小辣椒 | 久久精品国产久精国产爱| 久久看人人爽人人| 色菇凉天天综合网| 毛片基地黄久久久久久天堂| 国产亚洲成年网址在线观看| 91片在线免费观看| 久久超碰97中文字幕| 中文字幕在线免费不卡| 欧美日韩精品一区二区三区蜜桃| 九九精品一区二区| 亚洲精品成人天堂一二三| 欧美电影免费观看高清完整版在| 成人视屏免费看| 日韩精品欧美成人高清一区二区| 日本一区二区三区电影| 欧美日本国产视频| 99综合影院在线| 免费欧美在线视频| 1000精品久久久久久久久| 日韩欧美一区在线| 在线影院国内精品| 国产传媒久久文化传媒| 亚洲高清不卡在线| 欧美经典一区二区三区| 91精品欧美久久久久久动漫| 99久久久无码国产精品| 美女网站视频久久| 亚洲成人动漫在线免费观看| 中文子幕无线码一区tr| 91精品福利在线一区二区三区| 99久久免费国产| 国产成人免费视频| 九九国产精品视频| 日韩黄色一级片| 亚洲综合图片区|