Commit | Line | Data |
---|---|---|
0250738f FB |
1 | /* |
2 | * Multipart JPEG format | |
406792e7 | 3 | * Copyright (c) 2000, 2001, 2002, 2003 Fabrice Bellard |
0250738f | 4 | * |
2912e87a | 5 | * This file is part of Libav. |
b78e7197 | 6 | * |
2912e87a | 7 | * Libav is free software; you can redistribute it and/or |
0250738f FB |
8 | * modify it under the terms of the GNU Lesser General Public |
9 | * License as published by the Free Software Foundation; either | |
b78e7197 | 10 | * version 2.1 of the License, or (at your option) any later version. |
0250738f | 11 | * |
2912e87a | 12 | * Libav is distributed in the hope that it will be useful, |
0250738f FB |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
15 | * Lesser General Public License for more details. | |
16 | * | |
17 | * You should have received a copy of the GNU Lesser General Public | |
2912e87a | 18 | * License along with Libav; if not, write to the Free Software |
5509bffa | 19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
0250738f FB |
20 | */ |
21 | #include "avformat.h" | |
22 | ||
23 | /* Multipart JPEG */ | |
24 | ||
4d58e4cb | 25 | #define BOUNDARY_TAG "avserver" |
0250738f FB |
26 | |
27 | static int mpjpeg_write_header(AVFormatContext *s) | |
28 | { | |
d09b4cce | 29 | avio_printf(s->pb, "--%s\n", BOUNDARY_TAG); |
b7f2fdde | 30 | avio_flush(s->pb); |
0250738f FB |
31 | return 0; |
32 | } | |
33 | ||
e928649b | 34 | static int mpjpeg_write_packet(AVFormatContext *s, AVPacket *pkt) |
0250738f | 35 | { |
161a301d FH |
36 | avio_printf(s->pb, |
37 | "Content-length: %i\n" | |
38 | "Content-type: image/jpeg\n\n", | |
39 | pkt->size); | |
77eb5504 | 40 | avio_write(s->pb, pkt->data, pkt->size); |
0250738f | 41 | |
d09b4cce | 42 | avio_printf(s->pb, "\n--%s\n", BOUNDARY_TAG); |
0250738f FB |
43 | return 0; |
44 | } | |
45 | ||
46 | static int mpjpeg_write_trailer(AVFormatContext *s) | |
47 | { | |
48 | return 0; | |
49 | } | |
50 | ||
c6610a21 | 51 | AVOutputFormat ff_mpjpeg_muxer = { |
dfc2c4d9 | 52 | .name = "mpjpeg", |
6774247a | 53 | .long_name = NULL_IF_CONFIG_SMALL("MIME multipart JPEG"), |
dfc2c4d9 AK |
54 | .mime_type = "multipart/x-mixed-replace;boundary=" BOUNDARY_TAG, |
55 | .extensions = "mjpg", | |
36ef5369 AK |
56 | .audio_codec = AV_CODEC_ID_NONE, |
57 | .video_codec = AV_CODEC_ID_MJPEG, | |
dfc2c4d9 AK |
58 | .write_header = mpjpeg_write_header, |
59 | .write_packet = mpjpeg_write_packet, | |
60 | .write_trailer = mpjpeg_write_trailer, | |
f792d3cb | 61 | .flags = AVFMT_NOTIMESTAMPS, |
0250738f | 62 | }; |