diff options
| author | Baptiste Coudurier <[email protected]> | 2009-03-21 10:28:49 +0000 | 
|---|---|---|
| committer | Baptiste Coudurier <[email protected]> | 2009-03-21 10:28:49 +0000 | 
| commit | 861ec13aae31cb59b2d7fe8c0b32d128093c9718 (patch) | |
| tree | 5a78d525201e58561371de83647e6e8482d6b74e /ffserver.c | |
| parent | 899a8fa1cb1a102cc0dd3089a870c3af83d3bf81 (diff) | |
new Truncate option which will make feeder truncate feed file
Originally committed as revision 18107 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'ffserver.c')
| -rw-r--r-- | ffserver.c | 14 | 
1 files changed, 14 insertions, 0 deletions
diff --git a/ffserver.c b/ffserver.c index 279ffaa43f..f84c1a133c 100644 --- a/ffserver.c +++ b/ffserver.c @@ -237,6 +237,7 @@ typedef struct FFStream {      int feed_opened;     /* true if someone is writing to the feed */      int is_feed;         /* true if it is a feed */      int readonly;        /* True if writing is prohibited to the file */ +    int truncate;        /* True if feeder connection truncate the feed file */      int conns_served;      int64_t bytes_served;      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; +    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) {          http_log("Error reading write index from feed file: %s\n", strerror(errno));          return -1;      } +    } +      c->stream->feed_write_index = FFMAX(ffm_read_write_index(fd), FFM_PACKET_SIZE);      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);              } else if (stream)                  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")) {              if (feed) {                  char *p1;  | 
