[Ffmpeg-cvslog] CVS: ffmpeg/libavformat mov.c,1.118,1.119

Michael Niedermayer CVS michael
Mon Mar 6 22:22:05 CET 2006


Update of /cvsroot/ffmpeg/ffmpeg/libavformat
In directory mail:/var2/tmp/cvs-serv9311

Modified Files:
	mov.c 
Log Message:
add support for Motion JPEG 2000 file format patch by (Baptiste COUDURIER <baptiste.coudurier smartjog com)


Index: mov.c
===================================================================
RCS file: /cvsroot/ffmpeg/ffmpeg/libavformat/mov.c,v
retrieving revision 1.118
retrieving revision 1.119
diff -u -d -r1.118 -r1.119
--- mov.c	4 Mar 2006 01:13:13 -0000	1.118
+++ mov.c	6 Mar 2006 21:22:02 -0000	1.119
@@ -636,8 +636,10 @@
     case MKTAG('m', 'm', 'p', '4'): /* Mobile MP4 */
     case MKTAG('M', '4', 'A', ' '): /* Apple iTunes AAC-LC Audio */
     case MKTAG('M', '4', 'P', ' '): /* Apple iTunes AAC-LC Protected Audio */
+    case MKTAG('m', 'j', 'p', '2'): /* Motion Jpeg 2000 */
         c->mp4 = 1;
     case MKTAG('q', 't', ' ', ' '):
+    default:
         av_log(c->fc, AV_LOG_DEBUG, "ISO: File Type Major Brand: %.4s\n",(char *)&type);
     }
     get_be32(pb); /* minor version */
@@ -806,6 +808,27 @@
     return 0;
 }
 
+static int mov_read_jp2h(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
+{
+    AVStream *st = c->fc->streams[c->fc->nb_streams-1];
+
+    if((uint64_t)atom.size > (1<<30))
+        return -1;
+
+    av_free(st->codec->extradata);
+
+    st->codec->extradata_size = atom.size + 8;
+    st->codec->extradata = (uint8_t*) av_mallocz(st->codec->extradata_size + FF_INPUT_BUFFER_PADDING_SIZE);
+
+    /* pass all jp2h atom to codec */
+    if (st->codec->extradata) {
+        strcpy(st->codec->extradata + 4, "jp2h");
+        get_buffer(pb, st->codec->extradata + 8, atom.size);
+    } else
+        url_fskip(pb, atom.size);
+    return 0;
+}
+
 static int mov_read_avcC(MOVContext *c, ByteIOContext *pb, MOV_atom_t atom)
 {
     AVStream *st = c->fc->streams[c->fc->nb_streams-1];
@@ -1429,6 +1452,7 @@
 { MKTAG( 'h', 'i', 'n', 't' ), mov_read_leaf },
 { MKTAG( 'h', 'm', 'h', 'd' ), mov_read_leaf },
 { MKTAG( 'i', 'o', 'd', 's' ), mov_read_leaf },
+{ MKTAG( 'j', 'p', '2', 'h' ), mov_read_jp2h },
 { MKTAG( 'm', 'd', 'a', 't' ), mov_read_mdat },
 { MKTAG( 'm', 'd', 'h', 'd' ), mov_read_mdhd },
 { MKTAG( 'm', 'd', 'i', 'a' ), mov_read_default },
@@ -1534,6 +1558,7 @@
         tag = mov_to_tag(p->buf + offset + 4);
         switch(tag) {
         /* check for obvious tags */
+        case MKTAG( 'j', 'P', ' ', ' ' ): /* jpeg 2000 signature */
         case MKTAG( 'm', 'o', 'o', 'v' ):
         case MKTAG( 'm', 'd', 'a', 't' ):
         case MKTAG( 'p', 'n', 'o', 't' ): /* detect movs with preview pics like ew.mov and april.mov */
@@ -2059,8 +2084,8 @@
 }
 
 static AVInputFormat mov_iformat = {
-    "mov,mp4,m4a,3gp,3g2",
-    "QuickTime/MPEG4 format",
+    "mov,mp4,m4a,3gp,3g2,mj2",
+    "QuickTime/MPEG4/Motion JPEG 2000 format",
     sizeof(MOVContext),
     mov_probe,
     mov_read_header,





More information about the ffmpeg-cvslog mailing list