diff options
author | Caligula useraccount <caligula@sarijopen.student.utwente.nl> | 2015-06-08 03:32:29 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-06-08 03:36:22 +0200 |
commit | 3b89a673155fa3863e13f3595d651f37b024e6c5 (patch) | |
tree | f373843ff5fbf59caff9c9ea8279857374557a05 | |
parent | 51ac1f616f5863c7bd32e04496339b7c2d27880f (diff) | |
download | ffmpeg-3b89a673155fa3863e13f3595d651f37b024e6c5.tar.gz |
ffserver: Use singlejpeg muxer for jpeg
Fixes Ticket4218
Based on patch by: Otávio Ribeiro
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | ffserver.c | 4 | ||||
-rw-r--r-- | ffserver_config.c | 6 | ||||
-rw-r--r-- | ffserver_config.h | 1 |
3 files changed, 9 insertions, 2 deletions
diff --git a/ffserver.c b/ffserver.c index 3cb29e4726..2b19bba9ba 100644 --- a/ffserver.c +++ b/ffserver.c @@ -967,6 +967,10 @@ static int handle_connection(HTTPContext *c) /* 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); + } break; case HTTPSTATE_RECEIVE_DATA: /* no need to read if no events */ diff --git a/ffserver_config.c b/ffserver_config.c index 017af48434..06bd8ac44a 100644 --- a/ffserver_config.c +++ b/ffserver_config.c @@ -862,8 +862,10 @@ static int ffserver_parse_config_stream(FFServerConfig *config, const char *cmd, } 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 --git a/ffserver_config.h b/ffserver_config.h index bdeb3c990a..1b121946c1 100644 --- a/ffserver_config.h +++ b/ffserver_config.h @@ -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 */ |