色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Arduino上的JPEG解碼教程

絕代雙驕 ? 來源:DevicePlus ? 作者:DevicePlus ? 2023-03-10 17:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這篇文章來源于DevicePlus.com英語網站的翻譯稿。

大多數人聽到“JPEG解碼”時,通常會覺得這是很困難的事,需要很強的處理能力以及復雜的數學運算,并認為在相對便宜且速度較慢的8位處理器平臺(比如Arduino)上是不可能實現的,或者說至少是不切實際的。在本文中,我們將學習如何使用基于Arduino控制的相機拍攝JPEG照片,以及如何將照片轉換成像素點矩陣,并將所有像素通過串行端口傳輸到我們的PC端或者任何我們想要的平臺上!

硬件

? Arduino Mega

? VC0706 串口攝像頭

? 帶SPI接口SD卡模塊

軟件

? Arduino IDE

? Processing (3.3.2 或更高版本)

? Adafruit VC0706 庫 (可從 GitHub上獲取)

? Bodmer 的 JPEGDecoder 庫 (同樣可從 GitHub上獲取)

雖然說上面描述的內容是完全可以實現的,但是仍然有必要解釋一下為什么我們在解碼JPEG照片時會遇到麻煩。畢竟,在上面的硬件要求中列有一個SD模塊,您會問:“我們直接把照片以photo.jpeg 的格式存儲到SD卡里不就行了嗎?”當然,這確實是整個過程中的重要一步,但是現在請從不同的角度來考慮這個問題:如果我們想通過速度慢、有些不穩定的連接來發送照片怎么辦?如果我們只是把JPEG照片分割成不同的包并通過慢速連接發送,那么就有部分數據損壞或丟失的風險。發生這種情況時,我們很可能無法用損壞的數據還原原始數據。

但是,當我們將JPEG解碼為位圖,然后發送實際像素時,不會有任何風險。如果某些數據在傳輸的過程中損壞或丟失,我們仍然可以獲取整張圖像,只有數據損壞的地方會出現失色,錯位或像素丟失的情況。當然,它與我們的原始圖像并不相同,但是仍然包含了大多數原始信息,并且仍然是“可讀的”。既然已經知道了為什么要這樣做,接下來讓我們看一下如何實施這種方法。

拍攝照片

在開始解碼JPEG照片之前,首先我們需要拍攝照片。我們最終的目標是拍攝一張照片,將照片存儲到SD卡中,然后發送到某個地方。那我們按照這個思路先從一個簡單的設置開始吧。

poYBAGPzDr-AKi81AAN2hyVZz8E015.jpg

圖1:可以使用Arduino拍攝和存儲照片的設置

因為我們需要大量的RAM來對照片進行解碼,所以我們將使用Arduino Mega。此外,Mega上還有一個額外的有利設計:有四個單獨的硬件串行端口,這樣我們就可以使用Serial1端口與相機進行通信,并使用Serial端口與PC進行通信。

您可能已經注意到了,相機RX線上有一個簡單的電阻分壓器。這是因為VC0706芯片的邏輯電平為3.3V(即使電源電壓為5V),但Arduino Mega的邏輯電平為5V。所以在這里有個善意忠告:當將5V的Arduino和3.3V模塊進行接合時,在RX線上始終至少使用一個分壓器。這比換一個新的模塊要快得多。SD卡讀卡器通過SPI接口直接連接。

既然硬件已經設置好了,那我們就需要開始解決代碼部分了。標準Arduino IDE安裝已經包含了用于SD卡的庫,因此我們從列表中對SD卡進行查看即可。

我們需要控制的另一個設備是VC0706攝像頭。控制過程相對簡單,我們只需要使用串行線發送一些指令,然后通過同一條線接收JPEG照片即可。我們可以編寫一個庫來執行此操作,但是因為這一步我們不需要考慮整體草圖的大小,所以我們將使用Adafruit開發的一個VC0706庫。為了拍攝照片并保存到SD卡上,我們將使用以下代碼,代碼是該庫隨附的經過輕微修改的Snapshot示例。

// Include all the libraries
#include 
#include 
#include 

// Define Slave Select pin
#define SD_CS  53

// Create an instance of Adafruit_VC0706 class
// We will use Serial1 for communication with the camera
Adafruit_VC0706 cam = Adafruit_VC0706(&Serial1);

void setup() {
  // Begin Serial port for communication with PC
  Serial.begin(115200);

  // Start the SD
  if(!SD.begin(SD_CS)) {
    // If the SD can't be started, loop forever
    Serial.println("SD failed or not present!");
    while(1);
  }

  // Start the camera
  if(!cam.begin()) {
    // If the camera can't be started, loop forever
    Serial.println("Camera failed or not present!");
    while(1);
  }

  // Set the image size to 640x480
  cam.setImageSize(VC0706_640x480);
}

void loop() {
  Serial.print("Taking picture in 3 seconds ... ");
  delay(3000);
  
  // Take a picture
  if(cam.takePicture()) {
    Serial.println("done!");
  } else {
    Serial.println("failed!");
  }

  // Create a name for the new file in the format IMAGExy.JPG
  char filename[13];
  strcpy(filename, "IMAGE00.JPG");
  for(int i = 0; i < 100; i++) {
    filename[5] = '0' + i/10;
    filename[6] = '0' + i%10;
    if(!SD.exists(filename)) {
      break;
    }
  }

  // Create a file with the name we created above and open it
  File imgFile = SD.open(filename, FILE_WRITE);

  // Get the size of the image
  uint16_t jpglen = cam.frameLength();
  Serial.print("Writing ");
  Serial.print(jpglen, DEC);
  Serial.print(" bytes into ");
  Serial.print(filename);
  Serial.print(" ... ");

  // Read all the image data
  while(jpglen > 0) {
    // Load the JPEG-encoded image data from the camera into a buffer
    uint8_t *buff;
    uint8_t bytesToRead = min(32, jpglen);
    buff = cam.readPicture(bytesToRead);

    // Write the image data to the file
    imgFile.write(buff, bytesToRead);
    jpglen -= bytesToRead;
  }

  // Safely close the file
  imgFile.close();
  
  Serial.println("done!");
  delay(3000);
}

現在,Arduino將每10秒左右拍攝一張照片,直到SD卡上的空間用完為止。但是,由于照片通常約為48kB,并且我目前使用的是2GB的SD卡,因此足夠容納超過43000張的照片。理論上來說我們不需要那么多的照片。但是既然已經拍攝了一些照片,我們現在可以繼續進行下一個有趣環節了:將它們從JPEG壓縮后的難以管理的雜亂數據變成簡單的像素陣列!

解碼和發送照片

在開始解碼前,讓我們快速地看一下圖片數據在JPEG文件中究竟是如何存儲的。如果您對這部分不太感興趣,可以跳過下面三段內容。如果您確切地對圖形和壓縮方面的知識了解一二(不像我這樣),您也可以跳過這一部分。以下內容進行了一定程度的簡化。

對任何類型的圖片數據進行存儲時,有兩種基本方法:無損和有損壓縮。兩者的區別很明顯:當使用無損壓縮(例如PNG)對圖像進行編碼時,處理之后圖像的每個像素都與開始時完全相同。這非常適合于諸如計算機圖形學之類的工作,但是不幸的是,這是以增加文件大小為代價的。另一方面,對于像JPEG這樣的有損壓縮,我們丟失了一些細節,但是生成的文件大小要小得多。

JPEG壓縮方式在理解上可能會有點困難,因為會涉及到一些“離散余弦變換”,不過主要原理實際上是非常簡單的。首先,將圖片從RGB顏色空間轉換為YCbCr。我們都知道RGB顏色空間—它存儲了紅色(R)、綠色(G)和藍色(B)的顏色值。YCbCr有很大的不同—它使用亮度(Y—基本是原始圖像的灰度圖),藍色差分量(Cb—圖片中的“藍色”)和紅色差分量(Cr—圖片中的“紅色”)。

poYBAGPzDsWAUE6wAAPEyW8spAw375.jpg

圖2:JPEG照片以及其分離出的色差分量。左上角為原始圖像,左下角為Y分量,右上角為Cb分量,右下角為Cr分量

JPEG減小文件大小的方法實際上與人眼處理顏色的方式密切相關。看一下上圖中的Y、Cb和Cr分量圖。哪一個看起來更像是原始圖片?是的,灰度圖!這是因為人眼對亮度的敏感度要比對其它兩個分量的敏感度高得多。JPEG壓縮就非常聰明地利用了這一點,在保留原始Y分量的同時減少Cb和Cr分量中的信息量。如此一來,生成的圖片就比原始文件小得多,并且由于大多數壓縮信息都位于人眼不太敏感的分量中,因此與未壓縮的圖片相比,您幾乎看不到壓縮圖片的區別。

現在,讓我們開始運行真正實現將JPEG轉換為像素陣列的代碼吧。幸運的是,有一個庫可以做到這一點—Bodmer的JPEGDecoder(可在GitHub上獲得),該庫基于Rich Geldreich(也可在GitHub)上獲取)提供的出色的picojpeg庫。雖然最初編寫JPEGDecoder的目的是在TFT顯示器上顯示圖像,但是將其進行一些細微調整后就可以用于我們的工作了。

該庫的使用非常簡單:我們輸入JPEG文件,然后該庫就會開始產生像素陣列—所謂的最小編碼單位,或簡稱為MCU。MCU是一個16×8的像素塊。庫中的函數將以16位顏色值的形式返回每個像素點的顏色值。高5位是紅色值,中6位是綠色值,低5位是藍色值。現在,我們可以通過任何通信通道來發送這些值。我將使用串行端口,以便之后可以更容易地接收數據。下面的Arduino草圖對一張圖像進行了解碼,然后發送了MCU中每個像素點的16位RGB值,并對圖像文件中的所有MCU重復該操作。

// Include the library
#include 

// Define Slave Select pin
#define SD_CS  53

void setup() {
  // Set pin 13 to output, otherwise SPI might hang
  pinMode(13, OUTPUT);

  // Begin Serial port for communication with PC
  Serial.begin(115200);

  // Start the SD
  if(!SD.begin(SD_CS)) {
    // If the SD can't be started, loop forever
    Serial.println("SD failed or not present!");
    while(1);
  }

  // Open the root directory
  File root = SD.open("/");
  
  // Wait for the PC to signal
  while(!Serial.available());

  // Send all files on the SD card
  while(true) {
    // Open the next file
    File jpgFile = root.openNextFile();

    // We have sent all files
    if(!jpgFile) {
      break;
    }

    // Decode the JPEG file
    JpegDec.decodeSdFile(jpgFile);

    // Create a buffer for the packet
    char dataBuff[240];

    // Fill the buffer with zeros
    initBuff(dataBuff);

    // Create a header packet with info about the image
    String header = "$ITHDR,";
    header += JpegDec.width;
    header += ",";
    header += JpegDec.height;
    header += ",";
    header += JpegDec.MCUSPerRow;
    header += ",";
    header += JpegDec.MCUSPerCol;
    header += ",";
    header += jpgFile.name();
    header += ",";
    header.toCharArray(dataBuff, 240);

    // Send the header packet
    for(int j=0; j<240; j++) {
      Serial.write(dataBuff[j]);
    }

    // Pointer to the current pixel
    uint16_t *pImg;

    // Color of the current pixel
    uint16_t color;

    // Create a data packet with the actual pixel colors
    strcpy(dataBuff, "$ITDAT");
    uint8_t i = 6;

    // Repeat for all MCUs in the image
    while(JpegDec.read()) {
      // Save pointer the current pixel
      pImg = JpegDec.pImage;

      // Get the coordinates of the MCU we are currently processing
      int mcuXCoord = JpegDec.MCUx;
      int mcuYCoord = JpegDec.MCUy;

      // Get the number of pixels in the current MCU
      uint32_t mcuPixels = JpegDec.MCUWidth * JpegDec.MCUHeight;

      // Repeat for all pixels in the current MCU
      while(mcuPixels--) {
        // Read the color of the pixel as 16-bit integer
        color = *pImg++;
        
        // Split it into two 8-bit integers
        dataBuff[i] = color >> 8;
        dataBuff[i+1] = color;
        i += 2;

        // If the packet is full, send it
        if(i == 240) {
          for(int j=0; j<240; j++) {
            Serial.write(dataBuff[j]);
          }
          i = 6;
        }

        // If we reach the end of the image, send a packet
        if((mcuXCoord == JpegDec.MCUSPerRow - 1) && 
          (mcuYCoord == JpegDec.MCUSPerCol - 1) && 
          (mcuPixels == 1)) {
          
          // Send the pixel values
          for(int j=0; j

注釋中已經對大多數代碼進行了解釋,但是我還是需要對代碼結構中的“包”進行一些說明。為了使數據傳輸更加有序,所有內容都以包的形式傳輸,最大長度為240字節。包有兩種可能的類型:

1.頭包:此包以字符串“$ITHDR”開頭,并且包含我們將要發送的圖片的基本信息:以像素為單位的高度和寬度,行和列前的MCU數量,最后是原始文件名。對于我們要發送的每個圖像,都會相應發送一個頭包。

2.數據包:該包以“$ITDAT”開頭,并包含所有顏色數據。該數據包中的每兩個字節代表一個16位像素值。

乍一看,包的長度似乎是隨機的。但是為什么恰好是240個字節?為什么不是256個,使我們可以在每個包中發送兩個MCU呢?這是另一個我們日后將會解決的謎團,但是我們可以保證, 數字240不會有任何隨機性。這里有個小提示:如果包中有256個字節的數據,我們要在哪里存儲源地址和目標地址呢?

現在,我們有了一個可以解碼和發送圖片文件的代碼,但是仍然缺少一個核心功能:目前為止,并沒有可以響應這些數據的另一端口。這意味著是時候再次啟用Processing了!

接收圖片

我在Arduino六足機器人第三部分:遠程控制中曾介紹過一些有關Processing的內容,用其編寫了一個應用程序,通過該應用程序我們能夠輕松控制六足機器人。簡單回顧一下:Processing是一種基于Java的語言,主要用于繪圖工作。因此它非常適用于我們現在要做的像素顯示的工作!該程序就是用Processing實現的。

// Import the library
import processing.serial.*;

Serial port;

void setup() {
  // Set the default window size to 200 by 200 pixels
  size(200, 200);
  
  // Set the background to grey
  background(#888888);
  
  // Set as high framerate as we can
  frameRate(1000000);
  
  // Start the COM port communication
  // You will have to replace "COM30" with the Arduino COM port number
  port = new Serial(this, "COM30", 115200);
  
  // Read 240 bytes at a time
  port.buffer(240);
}

// String to save the trimmed input
String trimmed;

// Buffer to save data incoming from Serial port
byte[] byteBuffer = new byte[240];

// The coordinate variables
int x, y, mcuX, mcuY;

// A variable to measure how long it takes to receive the image
long startTime;

// A variable to save the current time
long currentTime;

// Flag to signal end of transmission
boolean received = false;

// Flag to signal reception of header packet
boolean headerRead = false;

// The color of the current pixel
int inColor, r, g, b;

// Image information variables
int jpegWidth, jpegHeight, jpegMCUSPerRow, jpegMCUSPerCol, mcuWidth, mcuHeight, mcuPixels;

// This function will be called every time any key is pressed
void keyPressed() {
  // Send something to Arduino to signal the start
  port.write('s');
}

// This function will be called every time the Serial port receives 240 bytes
void serialEvent(Serial port) {
  // Read the data into buffer
  port.readBytes(byteBuffer);
  
  // Make a String out of the buffer
  String inString = new String(byteBuffer);
  
  // Detect the packet type
  if(inString.indexOf("$ITHDR") == 0) {
    // Header packet
    
    // Remove all whitespace characters
    trimmed = inString.trim();
    
    // Split the header by comma
    String[] list = split(trimmed, ',');
    
    // Check for completeness
    if(list.length != 7) {
      println("Incomplete header, terminated");
      while(true);
    } else {
      // Parse the image information
      jpegWidth = Integer.parseInt(list[1]);
      jpegHeight = Integer.parseInt(list[2]);
      jpegMCUSPerRow = Integer.parseInt(list[3]);
      jpegMCUSPerCol = Integer.parseInt(list[4]);
      
      // Print the info to console
      println("Filename: " + list[5]);
      println("Parsed JPEG width: " + jpegWidth);
      println("Parsed JPEG height: " + jpegHeight);
      println("Parsed JPEG MCUs/row: " + jpegMCUSPerRow);
      println("Parsed JPEG MCUs/column: " + jpegMCUSPerCol);
      
      // Start the timer
      startTime = millis();
    }
    
    // Set the window size according to the received information
    surface.setSize(jpegWidth, jpegHeight);
    
    // Get the MCU information
    mcuWidth = jpegWidth / jpegMCUSPerRow;
    mcuHeight = jpegHeight / jpegMCUSPerCol;
    mcuPixels = mcuWidth * mcuHeight;
    
  } else if(inString.indexOf("$ITDAT") == 0) {
    // Data packet
    
    // Repeat for every two bytes received
    for(int i = 6; i < 240; i += 2) {
      // Combine two 8-bit values into a single 16-bit color
      inColor = ((byteBuffer[i] & 0xFF) << 8) | (byteBuffer[i+1] & 0xFF);
      
      // Convert 16-bit color into RGB values
      r = ((inColor & 0xF800) >> 11) * 8;
      g = ((inColor & 0x07E0) >> 5) * 4;
      b = ((inColor & 0x001F) >> 0) * 8;
      
      // Paint the current pixel with that color
      set(x + mcuWidth*mcuX, y + mcuHeight*mcuY, color(r, g, b));
      
      // Move onto the next pixel
      x++;
      
      if(x == mcuWidth) {
        // MCU row is complete, move onto the next one
        x = 0;
        y++;
      }
      
      if(y == mcuHeight) {
        // MCU is complete, move onto the next one
        x = 0;
        y = 0;
        mcuX++;
      }
      
      if(mcuX == jpegMCUSPerRow) {
        // Line of MCUs is complete, move onto the next one
        x = 0;
        y = 0;
        mcuX = 0;
        mcuY++;
      }
      
      if(mcuY == jpegMCUSPerCol) {
        // The entire image is complete
        received = true;
      }
    }
  }
}

void draw() {
  // If we received a full image, start the whole process again
  if(received) {
    
    // Reset coordinates
    x = 0;
    y = 0;
    mcuX = 0;
    mcuY = 0;
    
    // Reset the flag
    received = false;
    
    // Measure how long the whole thing took
    long timeTook = millis() - startTime;
    println("Image receiving took: " + timeTook + " ms");
    println();
  }
}

當您在連接Arduino之后運行該程序,然后按下鍵盤上的任意鍵時,您(希望)會看到暗淡、單一的灰色背景逐漸被最初存儲在SD卡上的圖像所取代。由于替換是逐像素進行的,因此整個過程具有一種老式撥號調制解調器的加載圖像風格!

pYYBAGPzDsmAe9OIAAK-0coq5c8684.jpg

圖3:使用Processing應用程序將照片從Arduino加載到PC

雖然我們以相當高的波特率(準確值為115200)運行串行端口,接收一張圖像也需要大約60秒。我們可以用它來計算實際的傳輸速度。

原始圖像寬640像素,高480像素,總計307200像素。每個像素都由2字節的顏色值來表示,總共要傳輸614400個字節(即600KB)。那么我們的最終速度約為10kB/s。對于我們制定的“協議”來說,這并不算很糟糕,不是嗎?此外,它還向您展示了為什么圖像壓縮如此有用。原始JPEG文件只有48kB左右,而解碼后的位圖則需要600kB。如果我們要傳輸JPEG文件,即使使用非常簡單的“協議”,也可以在5秒之內完成傳輸。當然,萬一傳輸失敗,我們將可能無法追回任何數據—這種情況現在已經不會發生了。

結論

最后,我們證實了本文開頭所說的:在Arduino上處理圖像是可能的,并且在某些情況下可能會更有優勢。現在,我們可以使用串行相機拍攝照片,對其進行解碼,通過串行端口發送,然后在另一端接收了!可以將本文作為您在Arduino上進行圖像處理的入門簡介。

像往常一樣,有很多方面都可以進一步改善。一個需要添加的主要功能可能是使用AES對我們的消息進行加密,這一點很容易實現(即使在Arduino上)。在Arduino上,安全性通常會被忽視,這是很危險的,因此在下一個項目中我們可能會將重點更多地放在安全性上。

感謝您閱讀本文!請繼續關注我們的其他有趣項目!也許有些項目將會使用到我們在本項目中所學到的所有內容!

審核編輯黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 解碼
    +關注

    關注

    0

    文章

    186

    瀏覽量

    27969
  • JPEG
    +關注

    關注

    0

    文章

    66

    瀏覽量

    30411
  • Arduino
    +關注

    關注

    190

    文章

    6501

    瀏覽量

    192976
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    【NanoPi NEO2試用體驗】libjpeg庫的使用之jpeg解碼

    使用libjpeg進行jpeg解碼需要libjpeg動態鏈接庫以及libjpeg的頭文件,一篇文章已經編譯好了libjpeg庫,進行解碼的時候需要一個
    發表于 07-01 10:15

    軟件解碼JPEG怎么實現?

    地受到各種小型嵌入式產品的青睞。目前嵌入式系統方面對JPEG圖像軟件解碼較多地應用在DSP和多核等高速處理器
    發表于 08-13 06:02

    JPEG圖像硬件解碼低功耗技術方案

    JPEG圖像硬件解碼低功耗技術方案 為了實現數據的實時處理和低功耗應用,本文提出了一種帶有時鐘管理機制的并行、全流水結構的
    發表于 04-20 11:19 ?1468次閱讀
    <b class='flag-5'>JPEG</b>圖像硬件<b class='flag-5'>解碼</b>低功耗技術方案

    JPEG圖像解碼方案

    JPEG圖像解碼方案,很好的資料,快來學習吧
    發表于 02-18 14:16 ?0次下載

    E文JPEG解碼介紹

    E文JPEG解碼介紹,很好的資料,快來學習吧
    發表于 02-18 14:14 ?0次下載

    JPEG解碼

    JPEG解碼介紹,很好的資料,快來學習吧
    發表于 02-18 14:24 ?0次下載

    多核處理器構架的高速JPEG解碼算法

    多核處理器構架的高速JPEG解碼算法,很好的資料,快來學習吧
    發表于 02-18 13:54 ?0次下載

    基于FPGA的JPEG解碼算法的研究與實現

    基于FPGA的JPEG解碼算法的研究與實現,很好的資料,快來學習吧
    發表于 02-18 13:53 ?0次下載

    基于FPGA的JPEG解碼算法的研究與實現

    基于FPGA的JPEG解碼算法的研究與實現
    發表于 08-29 16:05 ?11次下載

    基于FPGA的JPEG實時圖像編解碼系統

    基于FPGA的JPEG實時圖像編解碼系統
    發表于 08-29 16:05 ?16次下載

    jpeg格式圖片疊加bmp或png格式水印操作資料下載

    利用libjpeg 解碼jpeg并和bmp疊加,在編碼成jpeg圖片,利用libpng解碼png將png圖片疊加到jpeg圖片
    發表于 01-20 10:30 ?4次下載

    如何使用FPGA實現JPEG解碼算法的研究與實現論文免費下載

    可編程門陣列)設計流程的基礎,從總體規劃的角度提出了整個系統結構的設計思想,對JPEG解碼器各部分算法進行了深入的研究,接著對各個模塊的設計進行了詳細的描述。采用了Verilog硬件描述語言對
    發表于 01-29 15:27 ?13次下載
    如何使用FPGA實現<b class='flag-5'>JPEG</b><b class='flag-5'>解碼</b>算法的研究與實現論文免費下載

    ADV212:JPEG 2000視頻編解碼器數據表

    ADV212:JPEG 2000視頻編解碼器數據表
    發表于 05-24 19:43 ?19次下載
    ADV212:<b class='flag-5'>JPEG</b> 2000視頻編<b class='flag-5'>解碼</b>器數據表

    下載適用于Blackfin的JPEG解碼器的生產版。

    下載適用于Blackfin的JPEG解碼器的生產版。
    發表于 06-07 20:34 ?0次下載
    下載適用于Blackfin的<b class='flag-5'>JPEG</b><b class='flag-5'>解碼</b>器的生產版。

    JPEG解碼程序

    JPEG解碼程序分享。
    發表于 09-28 16:04 ?6次下載
    主站蜘蛛池模板: 午夜无码片在线观看影院 | 人妻中出无码中字在线 | 欧美不卡网 | 日本又色又爽又黄又高潮 | 欧美xxxxx高潮喷水 | 亚洲免费黄网 | 成人动漫在线观看 | 国产成人精品日本亚洲第一区 | 欧美成人久久久 | 五月伊人网 | 日韩少妇内射免费播放18禁裸乳 | 国产资源第一页 | 久久婷婷麻豆国产91天堂 | 99久久国产福利自产拍 | 日日噜噜噜夜夜爽爽狠狠小说 | 小明看欧美日韩免费视频 | 欧美午夜精品久久久久免费视 | 亚洲综合p| 国产黄色在线网站 | 亚洲91av | 国产精品成av人在线视午夜片 | 欧美成人性生交大片免费看 | 麻豆网站在线观看 | 久久伊人精品中文字幕有软件 | 91性高潮久久久久久久久 | 精品一区二区三区无码免费视频 | 日韩成人无码中文字幕 | 国产精品午夜小视频观看 | 国产午夜精品久久精品电影 | 亚洲男人的天堂网站 | 深夜福利网站在线 | 国产又粗又猛又大爽又黄 | 再深点灬舒服灬大了添片在线 | 国产精品8888 | 亚洲精品久久久久久国产精华液 | 欧美第一页草草影院 | 色爽av| 日韩精品一区二区在线 | 一本一道久久a久久综合精品 | 一个色在线视频 | 波多野结衣一区在线 | 精品国产美女福到在线不卡 | 51久久夜色精品国产麻豆 | 黑人黄色毛片 | 少妇下蹲露大唇无遮挡0 | 毛片视频网址 | 精品久久久久久一区二区 | 国产精品国产三级国产专区51区 | 一亚洲乱亚洲乱妇23p | 性欧美丰满熟妇xxxx性 | 久久久久国产精品人妻aⅴ毛片 | av丝袜在线观看 | 图片区小说区另类春色 | 免费的大尺度在线观看网站 | 国产女人高潮视频在线观看 | 好吊色综合| 国模一二区 | wwwxxx欧美| 亚洲精品午夜 | 大阳蒂毛茸茸videoshd | 女人a级毛片 | 天天躁日日躁bbbbb | 奇米婷婷 | 久久久久欧美精品999 | 99久久久无码国产精品 | 国产精品suv一区二区三区 | 亚洲少妇视频 | 日韩欧美精品在线播放 | 最新亚洲人成无码网站 | 色女孩综合网 | 麻豆视频播放 | 色综合久久蜜芽国产精品 | 已婚少妇露脸日出白浆 | 日本高清无吗 | 欧美裸体精品 | 岛国精品一区二区 | 韩国主播福利一区二区三区 | av最新版天堂资源在线 | 夜夜嗨av禁果av粉嫩av懂色av | 999热精品视频 | av影片在线播放 | 色五月激情小说 | 午夜福利123| av色婷婷 | 女人裸体性做爰视频 | 欧美亚洲国产一区二区三区 | 日本一区二区三区免费高清 | 欧美激情视频一区 | 牛牛影视一区二区三区免费看 | 国产精品区一区二区三含羞草 | 欧美久久视频 | 欧洲天堂网 | 国产精品刮毛 | 麻豆91精品91久久久的优点 | 国产亚洲精品久久久久久久 | 亚洲国产无线乱码在线观看 | 91香草视频 | 欧美人与性动交α欧美精品图片 | 日本精品网 | 久艹在线视频 | av合集| 猫咪www免费人成网站 | 成人啪啪18免费网站 | www日本久久 | 国产精品亚洲精品日韩已满 | 夜夜爽夜夜叫夜夜高潮漏水 | 国产va在线观看免费 | 11月流出美女撒尿偷拍在线播放 | 亚洲中文字幕无码一区在线 | 人妻少妇精品视频二区 | 噜噜噜天天躁狠狠躁夜夜精品 | 蜜桃导航-精品导航 | 成人禁片又硬又粗太爽了 | 亚洲精品一卡二卡 | 欧美xxxx非洲| 精品国产一区二区在线 | 久久久久亚洲精品国产 | 任我撸在线视频 | 久久午夜羞羞影院免费观看 | fc2ppv在线播放 | 国产主播一区二区 | 男女午夜激情视频 | 国产精品无码不卡一区二区三区 | 97超碰资源站| 婷婷综合五月天 | 男女做爰真人视频直播 | 天天鲁一鲁摸一摸爽一爽视频 | 久久中文字幕在线 | 国产一级桃视频播放 | 黄片毛片免费在线观看 | www欧美| 久草在线新时代的视觉体验 | 日日噜噜噜噜人人爽日本精品 | 亚洲日本在线观看 | 狠狠色丁香婷婷久久综合不卡 | 日韩久久一区 | 国产精品99久 | 少妇口述偷人好爽的一次 | www.色天使| 成人在线免费网址 | 香港av在线| 91爱爱·com | 亚洲爆乳精品无码一区二区 | 国产精品一二区在线观看 | 久久免费大片 | 亚洲精品大片 | 极品精品 | 四虎在线看片 | 肉丝美脚视频一区二区 | 无码伊人久久大杳蕉中文无码 | 99日精品 | 性做久久久久久免费观看 | 亚洲一区二区在线 | 啪啪小视频| 欧美精品密入口播放 | 久久无码字幕中文久久无码 | 欧美日韩在线播放视频 | 西西人体大胆午夜视频 | 国产又嫩又黄又猛视频在线观看 | 亚洲精品尤物 | 欧美情侣性视频 | 浪潮av激情高潮国产精品香港 | 亚洲热妇无码av在线播放 | 国产精品视频在线观看 | 国产精品入口夜色视频大尺度 | 91丨porny丨探花 | 国产91啦 | 精品亚洲成a人片在线观看 国产精品视频二区不卡 | 影音先锋啪啪看片资源 | 国产福利在线视频 | 亚洲爱情岛论坛永久 | 免费的很黄很污的视频 | 97久久人人超碰caoprom欧美 | 国产在线不卡一区 | 精品久久久久久18免费网站 | 成人av影视在线观看 | 男女操操 | 玖玖在线 | 久久久五月 | 色中色av | 久久精品a一国产成人免费网站 | 天天色天天干天天 | 亚洲精品久久久一区二区三区 | 亚洲爆乳大丰满无码专区 | 精品99久久久久久 | 午夜在线一区 | 国产又粗又猛又大爽又黄 | 亚洲乱码视频 | 国产精品区一区二区三 | 亚洲欧美日韩在线一区 | 日日摸夜夜添夜夜爽免费视频 | 蜜桃av噜噜一区二区三区策驰 | 四川少妇大战4黑人 | 欧美巨乳在线观看 | 日本免费黄色 | 久久99精品国产麻豆宅宅 | 欧洲视频一区 | 免费观看一级特黄特色大片 | 三级成人网 | 亚洲午夜网站 | 自拍偷拍色 | 熟女丝袜潮喷内裤视频网站 | 亚洲 成人 在线 | 窝窝午夜色视频国产精品破 | 一区二区国产视频 | 九色综合狠狠综合久久 | 寂寞寡妇让我吃奶 | 黄色毛片在线播放 | 一本一道久久a久久精品 | 香蕉视频在线看 | 天天干少妇 | 亚洲做受高潮软件 | 亚洲视频在线一区 | 精品国产一区二区三区不卡 | 成人国产精品久久 | 少妇学院在线观看 | 林雅儿欧洲留学恋爱日记在线 | 色一情一区二区三区四区 | 国产一区免费在线观看 | 伊人黄色片 | a级黄毛片 | 日韩久久无码免费毛片软件 | 国产91中文字幕 | 裸体性做爰免费视频网站 | 成人黄色网址在线观看 | zoo性欧美 | 狂野欧美性猛交xxxxhd | 波多野结衣亚洲一区二区 | 日日躁夜夜躁狠狠久久av | 三男玩一个饥渴少妇爽叫视频播放 | 亚洲天堂五码 | 亚洲国产天堂一区二区三区 | 国内一区二区三区 | 香蕉视频一级片 | 久久久久久久综合色一本 | 777米奇色狠狠888俺也去乱 | 色哟哟黄色 | 奇米四色在线观看 | 午夜嘿嘿| 亚洲人成网站999久久久综合 | 亚洲精品国产精品乱码不97 | 99在线精品视频免费观看20 | 成品片a人免费进入 | 伊人毛片| 无码人妻一区二区三区在线 | 国产午夜福利亚洲第一 | 中文字幕一区二区三区四区不卡 | 98国产精品午夜免费福利视频 | 乱淫av| 一边添奶一边摸pp爽快视频 | 在厨房拨开内裤进入毛片 | 国产精品视频入口 | 亚洲情se| 国产毛片农村妇女系列bd | 拔擦拔擦8x国产精品免费 | 欧美黄色录像片 | 国产精品理伦片 | 久久aⅴ免费观看 | 40到50岁中老年妇女毛片 | 夜色毛片永久免费 | 日韩夜夜 | 少妇高潮流白浆在线观看 | 婷婷爱五月天 | 国产精品欧美亚洲韩国日本久久 | 华人av在线 | 亚洲成人www | 亚洲丝袜中文字幕 | 国产精品成人网站 | 精品在线视频观看 | 成人在线观看免费视频 | 亚洲成人精品久久久 | 人人草人 | 一区二区影视 | 久久久久久久久久影视 | 亚洲另类xxxx | 毛片一毛片二毛片三国产片 | 国产乱码精品一品二品 | 日韩成人无码 | 国产乱子伦农村xxxx | kkkk444成人免费观看 | 免费a级毛片 | 亚洲精品无码午夜福利中文字幕 | 日韩一区二区三区久久 | 欧美黑人疯狂性受xxxxx喷水 | 97一级片| 色翁荡息又大又硬又粗又爽电影 | 久久亚洲色www成人欧美 | 区二区欧美性插b在线视频网站 | av导航大全 | 91拔萝卜视频 | 欧美一区二区视频在线观看 | 第一次圆房bbwbbwbbw | 香港三日本8a三级少妇三级99 | 国产人妻人伦精品 | 99精品全国免费观看视频 | y111111国产精品久久婷婷 | 少妇高潮太爽了中文字幕 | 成人综合久久 | а√资源新版在线天堂 | 蜜桃视频一区二区三区在线观看 | 舐め犯し波多野结衣在线观看 | 少妇性bbb搡bbb爽爽爽 | 538在线精品 | 国产成人一区二区三区在线播放 | aⅴ色国产 欧美 | 久久久999久久久 | 偷看少妇自慰xxxx | 在线中文天堂 | 国产高清视频在线播放 | av在观看| 日本乱人伦片中文三区 | 欧美兽交xxxx×视频 | 99sao| 在线国产一区二区三区 | 高潮喷水抽搐无码免费 | 黄色视屏在线免费观看 | 真实人妻互换毛片视频 | 国产精品苏妲己野外勾搭 | 日本在线视频一区 | av黄色毛片 | 午夜激情啪啪 | 欧美私人情侣网站 | 国产精品一区二区久久久 | 欧美黑人又粗又大又爽免费 | 99xav| 影音先锋中文字幕在线视频 | 女主播户外勾搭啪啪 | 亚洲天堂av在线免费观看 | 99精品欧美 | 欧美黑人孕妇孕交 | 在线v| 国产日产久久欧美清爽 | 四虎影视网 | 夜夜爽夜夜叫夜夜高潮漏水 | 毛片视频免费 | 自拍偷拍第 | 国产黄色大片免费看 | 性猛交富婆xxxx乱大 | 有码中文字幕在线观看 | 欧美日韩欧美 | 91色站 | 性猛交xxxx乱大交孕妇2十 | 91干视频| 成人欧美一区二区三区在线观看 | 少妇特黄一区二区三区 | 精品午夜视频 | 国产毛片精品国产一区二区三区 | 日韩欧美黄 | 真实国产乱子伦对白视频 | 亚洲精品久久久久久动漫器材一区 | 粉嫩欧美一区二区三区高清影视 | 亚洲 自拍 都市 欧美 小说 | 国产欧美日韩久久久久 | 天天干人人干 | 少妇影院7788 | 午夜免费福利小视频 | 日本一二三区在线 | 麻豆视频在线观看免费软件 | 久久av网| 国产ts人妖一区二区 | 国产精品乡下勾搭老头1 | 国产成人一区 | 久久亚洲堂色噜噜av入口网站 | 亚洲欧美第一页 | 亚洲免费av观看 | 国产精品久久久久久久久久99 | 与黑人做爰的日本人 | aav在线| 色图综合 | 91精品国产福利在线观看 | 久久影院中文字幕 | 国产精品精品久久久久久甜蜜软件 | 91亚洲国产成人精品一区二区三 | 中文字幕亚洲乱码熟女一区二区 | 午夜精品久久久久久不卡8050 | 美女丝袜av | 免费看男女www网站入口在线 | 国精产品一区一区三区视频 | 亚洲精品国产综合久久久久紧 | 91小宝寻花一区二区三区 | 精品国产乱码 | 国产成人无码综合亚洲日韩 | 男男车车的车车网站w98免费 | 涩涩成人网 | 无码av中文一区二区三区桃花岛 | 中文在线8资源库 | 97视频国产 | 在线色站 | 一区二区不卡在线 | 麻豆免费视频 | 免费观看成人在线视频 | 久久这里有精品视频 | 91九色视频观看 | 久久深夜 | 337p粉嫩大胆噜噜噜亚瑟影院 | 天天躁日日躁狠狠躁av中文 | 久久精品国产一区 | 中文字幕一区二区三区日韩精品 | 亚洲精品一区二区三区中文字幕 | 亚洲色图综合 | 国产又大又粗又长 | 国产精品久久高潮呻吟声 | 国产成人a v | 天天操夜操 | 国产精品一区久久久 | 狠狠久久精品中文字幕无码 | 女人与拘性猛交视频 | 最新成人av| 亚洲一区二区不卡视频 | 黄色大片儿. | 亚洲国产精品成人综合久久久久久久 | 国产欧美精品区一区二区三区 | 亚洲成成品牛牛 | 国产黄色免费大片 | 国产乱人伦偷精品视频不卡 | 国产精品扒开腿做爽爽爽a片唱戏 | 性三级视频| 动漫av永久无码精品每日更新 | a级裸体bbbbb| 亚洲精品美女久久久久久久 | 国产丝袜视频一区二区三区 | a国产一区二区免费入口 | 亚洲视频一区二区在线观看 | 亚洲国产精品无码一线岛国 | 国产精品一区二区性色av | 亚洲人成色777777精品音频 | 精品欧美成人高清在线观看 | 人人爱操| 成人网在线免费观看 | 色一情一乱一伦一区二区三欧美 | 欧美日韩一区二区在线观看 | 久久国产精品一区二区三区 | 91精品国产色综合久久久蜜香臀 | 日日噜噜噜噜人人爽亚洲精品 | 97久人人做人人妻人人玩精品 | 超清 忍不住的亲子伦中文字幕 | 亚洲区色 | 国产毛片久久久久久美女视频 | 人人玩人人添人人澡欧美 | 国产ts人妖另类 | 999久久久国产精品消防器材 | 国产片自拍 | 国产麻传媒精品国产av | 日韩精品在线观看网站 | 加勒比无码人妻东京热 | 男人的天堂一级片 | 波多野结衣不卡 | 久久综合激激的五月天 | 欧美性一级 | 嫩草一区二区 | 韩国性经典xxxxhd | 第四色视频 | 一级黄色大片在线观看 | 男女裸体影院高潮 | 国产欧美另类 | 日韩bbw | 亚洲狠狠婷婷久久久四季av | 粉嫩av一区二区三区免费观看喜好 | 6080yyy午夜理论片中无码 | 国产成人av免费 | 国产成人欧美一区二区三区一色天 | 一色桃子av一区二区 | 男人天堂中文字幕 | 高潮毛片无遮挡高清免费视频网站 | 人人妻人人添人人爽日韩欧美 | 日韩av在线永久免费 | 国产裸拍裸体视频在线观看 | 波多野结衣在线播放 | 欧美拍拍视频 | 国产东北农村女人av | 在线天堂www在线国语对白 | 国产精品片 | 亚洲免费播放 | 亚洲一级视频在线观看 | 国产国语农村妇女偷人视频 | 色诱视频在线观看 | 亚洲天堂欧美在线 | 91亚洲人人在字幕国产 | 午夜生活片| 久草在线视频资源站 | 欧美一进一出抽搐大尺度视频 | 精品无码久久久久久久久水蜜桃 | 国产在线观看免费 | 日韩免费在线视频 | 亚洲欧美日韩在线不卡 | 美丽肉奴隷1986在线观看 | 成人乱码一区二区三区av | 精品一卡二卡三卡 | 露出调教羞耻91九色 | 国产精品黄色网 | 国内免费自拍视频 | 美女少妇翘臀啪啪呻吟网站 | 热re99久久精品国产99热 | 夜夜爽妓女8888888视频 | 精品久久久久亚洲 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 美女国产精品视频 | 成人免费毛片男人用品 | 精品欧美日韩 | 一本大道久久加勒比香蕉 | www,久久久| 中文成人无码精品久久久 | 激情小说图片视频 | 超碰人人91 | 国产精品国产三级国产播12软件 | jazzjazz国产精品麻豆 | 成年女人毛片免费视频 | 午夜av激情 | 高潮av在线| 538国产精品视频一区二区 | 裸体丰满少妇淫交 | 欧美一区二区伦理片 | 竹菊影视欧美日韩一区二区三区四区五区 | 91久久捆绑调教美女 | 免费做a爰片77777 | 亚洲精品一区二区三区四区乱码 | 国产精品色婷婷99久久精品 | 99久久精品午夜一区二区 | 欧美亚洲一区二区三区 | 亚欧日韩av | 国产精品毛片完整版视频 | 午夜影院免费在线观看 | 麻豆高清免费国产一区 | 亚洲图片欧美激情 | 成人做爰69片免费看网站 | 欧美日韩一二三四区 | 精品国产品香蕉在线 | 久久久久久网 | 国产精品一区二区免费视频 | 国产第一亚洲 | 隔壁人妻偷人bd中字 | 国产又粗又猛又爽又黄的视频在线观看动漫 | 一本久在线 | 久久怡红院 | 特级a老妇做爰全过程 | 国产精品久久久久久久久久精爆 | 综合色视频| 爱爱视频网站 | 亚洲另类在线观看 | 久久不见久久见免费影院www日本 | 国产特黄aaa大片免费观看 | 佐山爱成人av在线播放 | 朝鲜一级特黄真人毛片 | 伊人网在线 | 成人毛片在线 | 国产91丝袜在线播放九色 | 欧美日韩国产一区二区三区不卡 | 亚州综合 | yy6080高清性理论片啪 | 亚洲第一区视频 | 黄色一级大片免费版 | 在线看片wwwzzz| 91刺激视频| 久久激情久久 | av美女在线观看 | 日本午夜无人区毛片私人影院 | 国产真人做爰毛片视频 | 久久久久久国产精品视频 | 国产精品一区视频 | 澳门一级黄色片 | 亚洲无线码在线一区观看 | 播放灌醉水嫩大学生国内精品 | 久久久91精品国产一区二区三区 | 任你躁国产老女人 | 大香伊人中文字幕精品 | 日日噜噜噜夜夜爽爽狠狠视频寻花 | 日本特黄特色aaa大片免费 | 国产不卡一区二区视频 | 97在线免费观看视频 | 国产日韩av在线 | 国产精品99久久久久久人 | 亚州无限乱码一二三四麻豆 | av毛片在线播放 | 久久久久久婷婷 | 污污网站在线看 | 猫咪av成人永久网站在线观看 | 波多野结衣中文字幕一区二区三区 | 久久精品欧美日韩精品 | 日韩人妻熟女中文字幕a美景之屋 | 日韩av手机在线免费观看 | 亚洲欧美高清在线 | 国产一级淫片a视频免费观看 | 国产精品美女久久久 | 成人动漫免费观看 | 久久国产免费直播 | 国产乱肥老妇女精品视频网站 | 成人羞羞国产免费游戏 | 国产精品久久久久久久久久新婚 | aaaaa女高潮免费视频 | 91久久久国产精品 | 99精品国产兔费观看久久99 | 中文字幕日韩在线播放 | 欧美久久精品 | 国产cdts系列另类在线观看 | 中文字幕一区二区在线播放 | 伊人免费在线 | 99国产精品国产精品九九 | 综合人人 | 久久久久久久久久久网 | 44382亚洲最大成人网 | 性欧美欧美巨大69 | 久久人人爽人人爽人人av | 综合久久精品 | 手机看片福利永久 | 国产国产乱老熟女视频网站97 | 无码内射中文字幕岛国片 | 女女les互磨高潮国产精品 | 都市激情 在线 亚洲 国产 | 播放黄色 | 亚洲国产精品一区二区第一页 | 国产一级二级视频 | 亚洲乱码一区av春药高潮 | 亚洲 制服 丝袜 无码 | 日本爽快片100色毛片 | 欧美牲交a欧牲交aⅴ久久 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品