root / trunk / data / ffmpeg_ / mjpega.diff

Revision 298, 1.5 kB (checked in by saurik, 6 months ago)

Fixed an upstream bug in ffmpeg's MJPEG-A bitstream filter that kept it from working with the iPhone's hardware JPEG encoder.

  • libavcodec/mjpega_dump_header_bsf.c

    diff -ru ffmpeg-export-2008-05-20/libavcodec/mjpega_dump_header_bsf.c ffmpeg-export-2008-05-20+iPhone/libavcodec/mjpega_dump_header_bsf.c
    old new  
    5656    bytestream_put_be32(&poutbufp, buf_size + 44); /* pad field size */ 
    5757    bytestream_put_be32(&poutbufp, 0);             /* next ptr */ 
    5858 
     59    uint32_t dqt = 0, dht = 0, sof0 = 0; 
     60 
    5961    for (i = 0; i < buf_size - 1; i++) { 
    6062        if (buf[i] == 0xff) { 
    6163            switch (buf[i + 1]) { 
    62             case DQT:  /* quant off */ 
    63             case DHT:  /* huff  off */ 
    64             case SOF0: /* image off */ 
    65                 bytestream_put_be32(&poutbufp, i + 46); 
     64            case DQT: 
     65                dqt = i + 46; 
     66                break; 
     67            case DHT: 
     68                dht = i + 46; 
     69                break; 
     70            case SOF0: 
     71                sof0 = i + 46; 
    6672                break; 
    6773            case SOS: 
     74                bytestream_put_be32(&poutbufp, dqt); /* quant off */ 
     75                bytestream_put_be32(&poutbufp, dht); /* huff off */ 
     76                bytestream_put_be32(&poutbufp, sof0); /* image off */ 
    6877                bytestream_put_be32(&poutbufp, i + 46); /* scan off */ 
    6978                bytestream_put_be32(&poutbufp, i + 46 + AV_RB16(buf + i + 2)); /* data off */ 
    7079                bytestream_put_buffer(&poutbufp, buf + 2, buf_size - 2); /* skip already written SOI */ 
Note: See TracBrowser for help on using the browser.