added raw mjpeg
authorFabrice Bellard <fabrice@bellard.org>
Wed, 15 Aug 2001 13:06:33 +0000 (13:06 +0000)
committerFabrice Bellard <fabrice@bellard.org>
Wed, 15 Aug 2001 13:06:33 +0000 (13:06 +0000)
Originally committed as revision 94 to svn://svn.ffmpeg.org/ffmpeg/trunk

libav/raw.c
libav/utils.c

index ecdce89..7e4965e 100644 (file)
@@ -76,11 +76,10 @@ static int raw_read_header(AVFormatContext *s,
             st->codec.height = ap->height;
             break;
         default:
             st->codec.height = ap->height;
             break;
         default:
-            abort();
-            break;
+            return -1;
         }
     } else {
         }
     } else {
-        abort();
+        return -1;
     }
     return 0;
 }
     }
     return 0;
 }
@@ -130,9 +129,7 @@ static int mp3_read_header(AVFormatContext *s,
 
     st->codec.codec_type = CODEC_TYPE_AUDIO;
     st->codec.codec_id = CODEC_ID_MP2;
 
     st->codec.codec_type = CODEC_TYPE_AUDIO;
     st->codec.codec_id = CODEC_ID_MP2;
-    /* XXX: read the first frame and extract rate and channels */
-    st->codec.sample_rate = 44100;
-    st->codec.channels = 2;
+    /* the parameters will be extracted from the compressed bitstream */
     return 0;
 }
 
     return 0;
 }
 
@@ -150,6 +147,14 @@ static int video_read_header(AVFormatContext *s,
 
     st->codec.codec_type = CODEC_TYPE_VIDEO;
     st->codec.codec_id = s->format->video_codec;
 
     st->codec.codec_type = CODEC_TYPE_VIDEO;
     st->codec.codec_id = s->format->video_codec;
+    /* for mjpeg, specify frame rate */
+    if (st->codec.codec_id == CODEC_ID_MJPEG) {
+        if (ap) {
+            st->codec.frame_rate = ap->frame_rate;
+        } else {
+            st->codec.frame_rate = 25 * FRAME_RATE_BASE;
+        }
+    }
     return 0;
 }
 
     return 0;
 }
 
@@ -211,6 +216,21 @@ AVFormat mpeg1video_format = {
     raw_read_close,
 };
 
     raw_read_close,
 };
 
+AVFormat mjpeg_format = {
+    "mjpeg",
+    "MJPEG video",
+    "video/x-mjpeg",
+    "mjpg,mjpeg",
+    0,
+    CODEC_ID_MJPEG,
+    raw_write_header,
+    raw_write_packet,
+    raw_write_trailer,
+    video_read_header,
+    raw_read_packet,
+    raw_read_close,
+};
+
 AVFormat pcm_format = {
     "pcm",
     "pcm raw format",
 AVFormat pcm_format = {
     "pcm",
     "pcm raw format",
index b5f4697..87f3f01 100644 (file)
@@ -132,12 +132,14 @@ void register_all(void)
     register_avformat(&ac3_format);
     register_avformat(&mpeg_mux_format);
     register_avformat(&mpeg1video_format);
     register_avformat(&ac3_format);
     register_avformat(&mpeg_mux_format);
     register_avformat(&mpeg1video_format);
+    register_avformat(&mjpeg_format);
     register_avformat(&h263_format);
     register_avformat(&rm_format);
     register_avformat(&asf_format);
     register_avformat(&avi_format);
     register_avformat(&mpjpeg_format);
     register_avformat(&jpeg_format);
     register_avformat(&h263_format);
     register_avformat(&rm_format);
     register_avformat(&asf_format);
     register_avformat(&avi_format);
     register_avformat(&mpjpeg_format);
     register_avformat(&jpeg_format);
+    register_avformat(&single_jpeg_format);
     register_avformat(&swf_format);
     register_avformat(&wav_format);
     register_avformat(&pcm_format);
     register_avformat(&swf_format);
     register_avformat(&wav_format);
     register_avformat(&pcm_format);