[libjpeg] YUV lesen

Programmiersprachen, APIs, Bibliotheken, Open Source Engines, Debugging, Quellcode Fehler und alles was mit praktischer Programmierung zu tun hat.
Antworten
ElsnPau
Beiträge: 2
Registriert: 19.01.2005, 16:13
Wohnort: Dresden
Kontaktdaten:

[libjpeg] YUV lesen

Beitrag von ElsnPau »

Hi,
ist stehe gerade vor dem Problem, dass ich mit Hilfe der libjpeg die YUV-Daten aus einer JPEG Datei lesen möchte.
Mein Bild ist 864x496 Pixel groß. Also alles Vielfache von 16.
Mit folgendem Code versuche ich dsa zu bewerkstelligen:

Code: Alles auswählen

    if (jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK)
    {
        return false;
    }
    
    cinfo.raw_data_out = 1;
    cinfo.out_color_space = JCS_YCbCr;

    jpeg_start_decompress(&cinfo);

    JSAMPIMAGE sampleImage = new JSAMPARRAY[3];
    JSAMPARRAY sampleArray = new JSAMPROW[cinfo.output_height + cinfo.output_height];

    sampleImage[0] = sampleArray;
    sampleImage[1] = sampleArray+cinfo.output_height;
    sampleImage[2] = sampleArray+cinfo.output_height+cinfo.output_height/2;

    JSAMPLE *SampleImageBuffer = new JSAMPLE[cinfo.output_width * cinfo.output_height * 3 >> 1];

    for (int i = 0; i < cinfo.output_height; ++i)
    {
      sampleImage[0][i] = SampleImageBuffer+ i*cinfo.output_width;
    }
    int offset = cinfo.output_height;
    for (int i = 0; i < cinfo.output_height/2; ++i)
    {
      sampleImage[1][i] = offset + SampleImageBuffer+ i*cinfo.output_width/2;
    }
    offset = cinfo.output_height+cinfo.output_height/2;
    for (int i = 0; i < cinfo.output_height/2; ++i)
    {
      sampleImage[2][i] = offset + SampleImageBuffer+ i*cinfo.output_width/2;
    }

    for (; cinfo.output_scanline < cinfo.output_height;)
    {
      jpeg_read_raw_data(&cinfo, sampleImage, 16);

      sampleImage[0] += 16;
      sampleImage[1] += 8;
      sampleImage[2] += 8;
    }
Das Problem ist, dass jpeg_read_raw_data nen Speicherzugriffsfehler verursacht, wenn cinfo.output_scanline == 480 ist, also er bei den letzten 16 Zeilen ist.

Kann mir jemand sagen was ich falsch mache? Die Doku ist nicht besonders hilfreich.

Danke!
ElsnPau
Beiträge: 2
Registriert: 19.01.2005, 16:13
Wohnort: Dresden
Kontaktdaten:

Re: [libjpeg] YUV lesen

Beitrag von ElsnPau »

Ich habe das Problem gelöst.
Mein Fehler war die Version 8c von der offiziellen Webseite zu benutzen. Jetzt nutze ich die Version 6b von sourceforge und alles läuft perfekt :D

Wenn mir noch wer sagen kann, wo ich diesen Bug berichten kann, würde ich das noch machen.

lg
Antworten