Commit 3b89a673 authored by Caligula useraccount's avatar Caligula useraccount Committed by Michael Niedermayer

ffserver: Use singlejpeg muxer for jpeg

Fixes Ticket4218

Based on patch by: Otávio Ribeiro
Signed-off-by: 's avatarMichael Niedermayer <michaelni@gmx.at>
parent 51ac1f61
...@@ -967,6 +967,10 @@ static int handle_connection(HTTPContext *c) ...@@ -967,6 +967,10 @@ static int handle_connection(HTTPContext *c)
/* close connection if trailer sent */ /* close connection if trailer sent */
if (c->state == HTTPSTATE_SEND_DATA_TRAILER) if (c->state == HTTPSTATE_SEND_DATA_TRAILER)
return -1; 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; break;
case HTTPSTATE_RECEIVE_DATA: case HTTPSTATE_RECEIVE_DATA:
/* no need to read if no events */ /* no need to read if no events */
......
...@@ -862,8 +862,10 @@ static int ffserver_parse_config_stream(FFServerConfig *config, const char *cmd, ...@@ -862,8 +862,10 @@ static int ffserver_parse_config_stream(FFServerConfig *config, const char *cmd,
} else { } else {
stream->stream_type = STREAM_TYPE_LIVE; stream->stream_type = STREAM_TYPE_LIVE;
/* JPEG cannot be used here, so use single frame MJPEG */ /* JPEG cannot be used here, so use single frame MJPEG */
if (!strcmp(arg, "jpeg")) if (!strcmp(arg, "jpeg")) {
strcpy(arg, "mjpeg"); strcpy(arg, "singlejpeg");
stream->single_frame=1;
}
stream->fmt = ffserver_guess_format(arg, NULL, NULL); stream->fmt = ffserver_guess_format(arg, NULL, NULL);
if (!stream->fmt) if (!stream->fmt)
ERROR("Unknown Format: '%s'\n", arg); ERROR("Unknown Format: '%s'\n", arg);
......
...@@ -79,6 +79,7 @@ typedef struct FFServerStream { ...@@ -79,6 +79,7 @@ typedef struct FFServerStream {
int multicast_port; /* first port used for multicast */ int multicast_port; /* first port used for multicast */
int multicast_ttl; int multicast_ttl;
int loop; /* if true, send the stream in loops (only meaningful if file) */ int loop; /* if true, send the stream in loops (only meaningful if file) */
char single_frame; /* only single frame */
/* feed specific */ /* feed specific */
int feed_opened; /* true if someone is writing to the feed */ int feed_opened; /* true if someone is writing to the feed */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment