Browse code

Import Dirac demuxer/muxer from SoC branch; written by Marco Gerards, patch extracted by Anuradha Suraparaju anuradhaAtrdDoTbbcDoTcoDoTuk.

Originally committed as revision 13031 to svn://svn.ffmpeg.org/ffmpeg/trunk

Luca Barbato authored on 2008/05/02 23:52:39
Showing 3 changed files
... ...
@@ -844,6 +844,7 @@ audio_beos_muxer_deps="audio_beos"
844 844
 audio_beos_muxer_extralibs="-lmedia -lbe"
845 845
 avisynth_demuxer_deps="avisynth"
846 846
 bktr_demuxer_deps_any="dev_bktr_ioctl_bt848_h machine_ioctl_bt848_h dev_video_bktr_ioctl_bt848_h dev_ic_bt8xx_h"
847
+dirac_demuxer_deps="dirac_parser"
847 848
 dv1394_demuxer_deps="dv1394 dv_demuxer"
848 849
 libdc1394_demuxer_deps="libdc1394"
849 850
 libnut_demuxer_deps="libnut"
... ...
@@ -69,6 +69,7 @@ void av_register_all(void)
69 69
     REGISTER_DEMUXER  (C93, c93);
70 70
     REGISTER_MUXER    (CRC, crc);
71 71
     REGISTER_DEMUXER  (DAUD, daud);
72
+    REGISTER_MUXDEMUX (DIRAC, dirac);
72 73
     REGISTER_DEMUXER  (DSICIN, dsicin);
73 74
     REGISTER_MUXDEMUX (DTS, dts);
74 75
     REGISTER_MUXDEMUX (DV, dv);
... ...
@@ -254,6 +254,7 @@ static int video_read_header(AVFormatContext *s,
254 254
         av_set_pts_info(st, 64, ap->time_base.num, ap->time_base.den);
255 255
     } else if ( st->codec->codec_id == CODEC_ID_MJPEG ||
256 256
                 st->codec->codec_id == CODEC_ID_MPEG4 ||
257
+                st->codec->codec_id == CODEC_ID_DIRAC ||
257 258
                 st->codec->codec_id == CODEC_ID_H264) {
258 259
         av_set_pts_info(st, 64, 1, 25);
259 260
     }
... ...
@@ -346,6 +347,14 @@ static int h261_probe(AVProbeData *p)
346 346
     return 0;
347 347
 }
348 348
 
349
+static int dirac_probe(AVProbeData *p)
350
+{
351
+    if (AV_RL32(p->buf) == MKTAG('B', 'B', 'C', 'D'))
352
+        return AVPROBE_SCORE_MAX;
353
+    else
354
+        return 0;
355
+}
356
+
349 357
 static int ac3_probe(AVProbeData *p)
350 358
 {
351 359
     int max_frames, first_frames = 0, frames;
... ...
@@ -470,6 +479,33 @@ AVOutputFormat dts_muxer = {
470 470
 
471 471
 #endif //CONFIG_MUXERS
472 472
 
473
+AVInputFormat dirac_demuxer = {
474
+    "dirac",
475
+    "raw dirac",
476
+    0,
477
+    dirac_probe,
478
+    video_read_header,
479
+    raw_read_partial_packet,
480
+    raw_read_close,
481
+    .flags= AVFMT_GENERIC_INDEX,
482
+    .value = CODEC_ID_DIRAC,
483
+};
484
+
485
+#ifdef CONFIG_MUXERS
486
+AVOutputFormat dirac_muxer = {
487
+    "dirac",
488
+    "raw dirac",
489
+    NULL,
490
+    "drc",
491
+    0,
492
+    0,
493
+    CODEC_ID_DIRAC,
494
+    NULL,
495
+    raw_write_packet,
496
+    .flags= AVFMT_NOTIMESTAMPS,
497
+};
498
+#endif
499
+
473 500
 AVInputFormat dts_demuxer = {
474 501
     "dts",
475 502
     "raw dts",