new Truncate option which will make feeder truncate feed file
Originally committed as revision 18107 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
899a8fa1cb
commit
861ec13aae
14
ffserver.c
14
ffserver.c
@ -237,6 +237,7 @@ typedef struct FFStream {
|
|||||||
int feed_opened; /* true if someone is writing to the feed */
|
int feed_opened; /* true if someone is writing to the feed */
|
||||||
int is_feed; /* true if it is a feed */
|
int is_feed; /* true if it is a feed */
|
||||||
int readonly; /* True if writing is prohibited to the file */
|
int readonly; /* True if writing is prohibited to the file */
|
||||||
|
int truncate; /* True if feeder connection truncate the feed file */
|
||||||
int conns_served;
|
int conns_served;
|
||||||
int64_t bytes_served;
|
int64_t bytes_served;
|
||||||
int64_t feed_max_size; /* maximum storage size, zero means unlimited */
|
int64_t feed_max_size; /* maximum storage size, zero means unlimited */
|
||||||
@ -2431,10 +2432,18 @@ static int http_start_receive_data(HTTPContext *c)
|
|||||||
}
|
}
|
||||||
c->feed_fd = fd;
|
c->feed_fd = fd;
|
||||||
|
|
||||||
|
if (c->stream->truncate) {
|
||||||
|
/* truncate feed file */
|
||||||
|
ffm_write_write_index(c->feed_fd, FFM_PACKET_SIZE);
|
||||||
|
ftruncate(c->feed_fd, FFM_PACKET_SIZE);
|
||||||
|
http_log("Truncating feed file '%s'\n", c->stream->feed_filename);
|
||||||
|
} else {
|
||||||
if ((c->stream->feed_write_index = ffm_read_write_index(fd)) < 0) {
|
if ((c->stream->feed_write_index = ffm_read_write_index(fd)) < 0) {
|
||||||
http_log("Error reading write index from feed file: %s\n", strerror(errno));
|
http_log("Error reading write index from feed file: %s\n", strerror(errno));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE);
|
c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE);
|
||||||
|
|
||||||
c->stream->feed_size = lseek(fd, 0, SEEK_END);
|
c->stream->feed_size = lseek(fd, 0, SEEK_END);
|
||||||
@ -3954,6 +3963,11 @@ static int parse_ffconfig(const char *filename)
|
|||||||
get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p);
|
get_arg(feed->feed_filename, sizeof(feed->feed_filename), &p);
|
||||||
} else if (stream)
|
} else if (stream)
|
||||||
get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p);
|
get_arg(stream->feed_filename, sizeof(stream->feed_filename), &p);
|
||||||
|
} else if (!strcasecmp(cmd, "Truncate")) {
|
||||||
|
if (feed) {
|
||||||
|
get_arg(arg, sizeof(arg), &p);
|
||||||
|
feed->truncate = strtod(arg, NULL);
|
||||||
|
}
|
||||||
} else if (!strcasecmp(cmd, "FileMaxSize")) {
|
} else if (!strcasecmp(cmd, "FileMaxSize")) {
|
||||||
if (feed) {
|
if (feed) {
|
||||||
char *p1;
|
char *p1;
|
||||||
|
Loading…
Reference in New Issue
Block a user