On Fri, May 01, 2015 at 05:13:11PM -0600, ill wrote: > The patch that caligula sent works. I tested it on the git from > yesterday and firefox is now able to read the jpg ffserver output > properly with that applied. > The only difference is that I added an enter on line 26 because it > was two lines into one. Can it be committed now? > > > > diff -Nrup ffmpeg-2.6.1--orig/ffserver.c ffmpeg-2.6.1/ffserver.c > --- ffmpeg-2.6.1--orig/ffserver.c 2015-03-16 20:25:48.000000000 +0100 > +++ ffmpeg-2.6.1/ffserver.c 2015-04-05 02:33:53.000000000 +0200 > @@ -967,6 +967,10 @@ static int handle_connection(HTTPContext > /* close connection if trailer sent */ > if (c->state == HTTPSTATE_SEND_DATA_TRAILER) > return -1; > + /* Check if it is a single jpeg frame 123 */ > + if (c->stream->single_frame && c->data_count > > c->cur_frame_bytes && c->cur_frame_bytes > 0) { > + close_connection(c);
this patch is corrupted > + } > break; > case HTTPSTATE_RECEIVE_DATA: > /* no need to read if no events */ > diff -Nrup ffmpeg-2.6.1--orig/ffserver_config.c > ffmpeg-2.6.1/ffserver_config.c > --- ffmpeg-2.6.1--orig/ffserver_config.c 2015-03-16 > 20:25:48.000000000 +0100 > +++ ffmpeg-2.6.1/ffserver_config.c 2015-04-05 02:33:53.000000000 +0200 > @@ -862,8 +862,10 @@ static int ffserver_parse_config_stream( > } else { > stream->stream_type = STREAM_TYPE_LIVE; > /* JPEG cannot be used here, so use single frame MJPEG */ > - if (!strcmp(arg, "jpeg")) > - strcpy(arg, "mjpeg"); > + if (!strcmp(arg, "jpeg")) { > + strcpy(arg, "singlejpeg"); > + stream->single_frame=1; > + } > stream->fmt = ffserver_guess_format(arg, NULL, NULL); > if (!stream->fmt) > ERROR("Unknown Format: '%s'\n", arg); > diff -Nrup ffmpeg-2.6.1--orig/ffserver_config.h > ffmpeg-2.6.1/ffserver_config.h > --- ffmpeg-2.6.1--orig/ffserver_config.h 2015-03-16 > 20:25:48.000000000 +0100 > +++ ffmpeg-2.6.1/ffserver_config.h 2015-04-05 02:33:53.000000000 +0200 > @@ -79,6 +79,7 @@ typedef struct FFServerStream { > int multicast_port; /* first port used for multicast */ > int multicast_ttl; > int loop; /* if true, send the stream in > loops (only meaningful if file) */ > + char single_frame; /* only single frame */ > > /* feed specific */ > int feed_opened; /* true if someone is writing to > the feed */ > diff -Nrup ffmpeg-2.6.1--orig/libavformat/allformats.c > ffmpeg-2.6.1/libavformat/allformats.c > --- ffmpeg-2.6.1--orig/libavformat/allformats.c 2015-03-16 > 20:25:52.000000000 +0100 > +++ ffmpeg-2.6.1/libavformat/allformats.c 2015-04-05 > 02:33:53.000000000 +0200 > @@ -273,6 +273,7 @@ void av_register_all(void) > REGISTER_MUXER (SEGMENT, stream_segment); > REGISTER_DEMUXER (SHORTEN, shorten); > REGISTER_DEMUXER (SIFF, siff); > + REGISTER_MUXER (SINGLEJPEG, singlejpeg); > REGISTER_DEMUXER (SLN, sln); > REGISTER_DEMUXER (SMACKER, smacker); > REGISTER_MUXDEMUX(SMJPEG, smjpeg); > diff -Nrup ffmpeg-2.6.1--orig/libavformat/rawenc.c > ffmpeg-2.6.1/libavformat/rawenc.c > --- ffmpeg-2.6.1--orig/libavformat/rawenc.c 2015-03-16 > 20:25:54.000000000 +0100 > +++ ffmpeg-2.6.1/libavformat/rawenc.c 2015-04-05 > 02:33:53.000000000 +0200 > @@ -250,6 +250,17 @@ AVOutputFormat ff_mjpeg_muxer = { > .write_packet = ff_raw_write_packet, > .flags = AVFMT_NOTIMESTAMPS, > }; > + > +AVOutputFormat ff_singlejpeg_muxer = { > + .name = "singlejpeg", > + .long_name = NULL_IF_CONFIG_SMALL("JPEG single image"), > + .mime_type = "image/jpeg", > + .extensions = "jpg,jpeg", this could break muxer detection > + .audio_codec = AV_CODEC_ID_NONE, > + .video_codec = AV_CODEC_ID_MJPEG, > + .write_packet = ff_raw_write_packet, > + .flags = AVFMT_NOTIMESTAMPS, this is missing .write_header = force_one_stream, how does this code relate to libavformat/mpjpeg.c ? [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB No human being will ever know the Truth, for even if they happen to say it by chance, they would not even known they had done so. -- Xenophanes
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel