This way avserver only depends on the data structures of the ffm demuxer, which it already does, and not also on private functions being exported by the library. Signed-off-by: Mans Rullgard <mans@mansr.com>tags/n1.1
@@ -39,6 +39,7 @@ | |||||
#include "libavutil/avstring.h" | #include "libavutil/avstring.h" | ||||
#include "libavutil/lfg.h" | #include "libavutil/lfg.h" | ||||
#include "libavutil/dict.h" | #include "libavutil/dict.h" | ||||
#include "libavutil/intreadwrite.h" | |||||
#include "libavutil/mathematics.h" | #include "libavutil/mathematics.h" | ||||
#include "libavutil/random_seed.h" | #include "libavutil/random_seed.h" | ||||
#include "libavutil/parseutils.h" | #include "libavutil/parseutils.h" | ||||
@@ -323,6 +324,37 @@ static AVLFG random_state; | |||||
static FILE *logfile = NULL; | static FILE *logfile = NULL; | ||||
static int64_t ffm_read_write_index(int fd) | |||||
{ | |||||
uint8_t buf[8]; | |||||
lseek(fd, 8, SEEK_SET); | |||||
if (read(fd, buf, 8) != 8) | |||||
return AVERROR(EIO); | |||||
return AV_RB64(buf); | |||||
} | |||||
static int ffm_write_write_index(int fd, int64_t pos) | |||||
{ | |||||
uint8_t buf[8]; | |||||
int i; | |||||
for(i=0;i<8;i++) | |||||
buf[i] = (pos >> (56 - i * 8)) & 0xff; | |||||
lseek(fd, 8, SEEK_SET); | |||||
if (write(fd, buf, 8) != 8) | |||||
return AVERROR(EIO); | |||||
return 8; | |||||
} | |||||
static void ffm_set_write_index(AVFormatContext *s, int64_t pos, | |||||
int64_t file_size) | |||||
{ | |||||
FFMContext *ffm = s->priv_data; | |||||
ffm->write_index = pos; | |||||
ffm->file_size = file_size; | |||||
} | |||||
/* FIXME: make avserver work with IPv6 */ | /* FIXME: make avserver work with IPv6 */ | ||||
/* resolve host with also IP address parsing */ | /* resolve host with also IP address parsing */ | ||||
static int resolve_host(struct in_addr *sin_addr, const char *hostname) | static int resolve_host(struct in_addr *sin_addr, const char *hostname) | ||||
@@ -56,8 +56,4 @@ typedef struct FFMContext { | |||||
uint8_t packet[FFM_PACKET_SIZE]; | uint8_t packet[FFM_PACKET_SIZE]; | ||||
} FFMContext; | } FFMContext; | ||||
int64_t ffm_read_write_index(int fd); | |||||
int ffm_write_write_index(int fd, int64_t pos); | |||||
void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size); | |||||
#endif /* AVFORMAT_FFM_H */ | #endif /* AVFORMAT_FFM_H */ |
@@ -24,39 +24,6 @@ | |||||
#include "avformat.h" | #include "avformat.h" | ||||
#include "internal.h" | #include "internal.h" | ||||
#include "ffm.h" | #include "ffm.h" | ||||
#if CONFIG_AVSERVER | |||||
#include <unistd.h> | |||||
int64_t ffm_read_write_index(int fd) | |||||
{ | |||||
uint8_t buf[8]; | |||||
lseek(fd, 8, SEEK_SET); | |||||
if (read(fd, buf, 8) != 8) | |||||
return AVERROR(EIO); | |||||
return AV_RB64(buf); | |||||
} | |||||
int ffm_write_write_index(int fd, int64_t pos) | |||||
{ | |||||
uint8_t buf[8]; | |||||
int i; | |||||
for(i=0;i<8;i++) | |||||
buf[i] = (pos >> (56 - i * 8)) & 0xff; | |||||
lseek(fd, 8, SEEK_SET); | |||||
if (write(fd, buf, 8) != 8) | |||||
return AVERROR(EIO); | |||||
return 8; | |||||
} | |||||
void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size) | |||||
{ | |||||
FFMContext *ffm = s->priv_data; | |||||
ffm->write_index = pos; | |||||
ffm->file_size = file_size; | |||||
} | |||||
#endif // CONFIG_AVSERVER | |||||
static int ffm_is_avail_data(AVFormatContext *s, int size) | static int ffm_is_avail_data(AVFormatContext *s, int size) | ||||
{ | { | ||||