~ubuntu-branches/ubuntu/utopic/ffmpeg-debian/utopic

« back to all changes in this revision

Viewing changes to libavformat/img2.c

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2009-01-20 09:20:53 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090120092053-izz63p40hc98qfgp
Tags: 3:0.svn20090119-1ubuntu1
* merge from debian. LP: #318501
* new version fixes CVE-2008-3230, LP: #253767

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
21
 */
22
22
 
 
23
#include "libavutil/intreadwrite.h"
23
24
#include "libavutil/avstring.h"
24
25
#include "avformat.h"
25
26
#include <strings.h>
45
46
    { CODEC_ID_PNG       , "png"},
46
47
    { CODEC_ID_PNG       , "mng"},
47
48
    { CODEC_ID_PPM       , "ppm"},
 
49
    { CODEC_ID_PPM       , "pnm"},
48
50
    { CODEC_ID_PGM       , "pgm"},
49
51
    { CODEC_ID_PGMYUV    , "pgmyuv"},
50
52
    { CODEC_ID_PBM       , "pbm"},
69
71
    { CODEC_ID_SUNRAST   , "im8"},
70
72
    { CODEC_ID_SUNRAST   , "im24"},
71
73
    { CODEC_ID_SUNRAST   , "sunras"},
 
74
    { CODEC_ID_JPEG2000  , "jp2"},
72
75
    { CODEC_ID_NONE      , NULL}
73
76
};
74
77
 
303
306
    }
304
307
}
305
308
 
306
 
#if defined(CONFIG_IMAGE2_MUXER) || defined(CONFIG_IMAGE2PIPE_MUXER)
 
309
#if CONFIG_IMAGE2_MUXER || CONFIG_IMAGE2PIPE_MUXER
307
310
/******************************************************/
308
311
/* image output */
309
312
 
357
360
        url_fclose(pb[1]);
358
361
        url_fclose(pb[2]);
359
362
    }else{
 
363
        if(av_str2id(img_tags, s->filename) == CODEC_ID_JPEG2000){
 
364
            AVStream *st = s->streams[0];
 
365
            if(st->codec->extradata_size > 8 &&
 
366
               AV_RL32(st->codec->extradata+4) == MKTAG('j','p','2','h')){
 
367
                if(pkt->size < 8 || AV_RL32(pkt->data+4) != MKTAG('j','p','2','c'))
 
368
                    goto error;
 
369
                put_be32(pb[0], 12);
 
370
                put_tag (pb[0], "jP  ");
 
371
                put_be32(pb[0], 0x0D0A870A); // signature
 
372
                put_be32(pb[0], 20);
 
373
                put_tag (pb[0], "ftyp");
 
374
                put_tag (pb[0], "jp2 ");
 
375
                put_be32(pb[0], 0);
 
376
                put_tag (pb[0], "jp2 ");
 
377
                put_buffer(pb[0], st->codec->extradata, st->codec->extradata_size);
 
378
            }else if(pkt->size < 8 ||
 
379
                     (!st->codec->extradata_size &&
 
380
                      AV_RL32(pkt->data+4) != MKTAG('j','P',' ',' '))){ // signature
 
381
            error:
 
382
                av_log(s, AV_LOG_ERROR, "malformated jpeg2000 codestream\n");
 
383
                return -1;
 
384
            }
 
385
        }
360
386
        put_buffer(pb[0], pkt->data, pkt->size);
361
387
    }
362
388
    put_flush_packet(pb[0]);
368
394
    return 0;
369
395
}
370
396
 
371
 
#endif /* defined(CONFIG_IMAGE2_MUXER) || defined(CONFIG_IMAGE2PIPE_MUXER) */
 
397
#endif /* CONFIG_IMAGE2_MUXER || CONFIG_IMAGE2PIPE_MUXER */
372
398
 
373
399
/* input */
374
 
#ifdef CONFIG_IMAGE2_DEMUXER
 
400
#if CONFIG_IMAGE2_DEMUXER
375
401
AVInputFormat image2_demuxer = {
376
402
    "image2",
377
403
    NULL_IF_CONFIG_SMALL("image2 sequence"),
385
411
    AVFMT_NOFILE,
386
412
};
387
413
#endif
388
 
#ifdef CONFIG_IMAGE2PIPE_DEMUXER
 
414
#if CONFIG_IMAGE2PIPE_DEMUXER
389
415
AVInputFormat image2pipe_demuxer = {
390
416
    "image2pipe",
391
417
    NULL_IF_CONFIG_SMALL("piped image2 sequence"),
397
423
#endif
398
424
 
399
425
/* output */
400
 
#ifdef CONFIG_IMAGE2_MUXER
 
426
#if CONFIG_IMAGE2_MUXER
401
427
AVOutputFormat image2_muxer = {
402
428
    "image2",
403
429
    NULL_IF_CONFIG_SMALL("image2 sequence"),
404
430
    "",
405
 
    "",
 
431
    "bmp,jpeg,jpg,ljpg,pam,pbm,pgm,pgmyuv,png,ppm,sgi,tif,tiff,jp2",
406
432
    sizeof(VideoData),
407
433
    CODEC_ID_NONE,
408
434
    CODEC_ID_MJPEG,
412
438
    .flags= AVFMT_NOTIMESTAMPS | AVFMT_NOFILE
413
439
};
414
440
#endif
415
 
#ifdef CONFIG_IMAGE2PIPE_MUXER
 
441
#if CONFIG_IMAGE2PIPE_MUXER
416
442
AVOutputFormat image2pipe_muxer = {
417
443
    "image2pipe",
418
444
    NULL_IF_CONFIG_SMALL("piped image2 sequence"),