Commit 9957cdbf authored by Martin Storsjö's avatar Martin Storsjö Committed by Anton Khirnov

avformat: Use ff_check_interrupt

parent c4a090dd
...@@ -99,6 +99,7 @@ typedef struct AppleHTTPContext { ...@@ -99,6 +99,7 @@ typedef struct AppleHTTPContext {
int cur_seq_no; int cur_seq_no;
int end_of_segment; int end_of_segment;
int first_packet; int first_packet;
AVIOInterruptCB *interrupt_callback;
} AppleHTTPContext; } AppleHTTPContext;
static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) static int read_chomp_line(AVIOContext *s, char *buf, int maxlen)
...@@ -388,7 +389,7 @@ reload: ...@@ -388,7 +389,7 @@ reload:
return AVERROR_EOF; return AVERROR_EOF;
while (av_gettime() - v->last_load_time < while (av_gettime() - v->last_load_time <
v->target_duration*1000000) { v->target_duration*1000000) {
if (url_interrupt_cb()) if (ff_check_interrupt(c->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
usleep(100*1000); usleep(100*1000);
} }
...@@ -433,6 +434,8 @@ static int applehttp_read_header(AVFormatContext *s, AVFormatParameters *ap) ...@@ -433,6 +434,8 @@ static int applehttp_read_header(AVFormatContext *s, AVFormatParameters *ap)
AppleHTTPContext *c = s->priv_data; AppleHTTPContext *c = s->priv_data;
int ret = 0, i, j, stream_offset = 0; int ret = 0, i, j, stream_offset = 0;
c->interrupt_callback = &s->interrupt_callback;
if ((ret = parse_playlist(c, s->filename, NULL, s->pb)) < 0) if ((ret = parse_playlist(c, s->filename, NULL, s->pb)) < 0)
goto fail; goto fail;
......
...@@ -266,7 +266,7 @@ retry: ...@@ -266,7 +266,7 @@ retry:
if (s->finished) if (s->finished)
return AVERROR_EOF; return AVERROR_EOF;
while (av_gettime() - s->last_load_time < s->target_duration*1000000) { while (av_gettime() - s->last_load_time < s->target_duration*1000000) {
if (url_interrupt_cb()) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
usleep(100*1000); usleep(100*1000);
} }
...@@ -276,7 +276,7 @@ retry: ...@@ -276,7 +276,7 @@ retry:
av_log(h, AV_LOG_DEBUG, "opening %s\n", url); av_log(h, AV_LOG_DEBUG, "opening %s\n", url);
ret = ffurl_open(&s->seg_hd, url, AVIO_FLAG_READ); ret = ffurl_open(&s->seg_hd, url, AVIO_FLAG_READ);
if (ret < 0) { if (ret < 0) {
if (url_interrupt_cb()) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
av_log(h, AV_LOG_WARNING, "Unable to open %s\n", url); av_log(h, AV_LOG_WARNING, "Unable to open %s\n", url);
s->cur_seq_no++; s->cur_seq_no++;
......
...@@ -284,7 +284,7 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int ...@@ -284,7 +284,7 @@ static inline int retry_transfer_wrapper(URLContext *h, unsigned char *buf, int
if (ret) if (ret)
fast_retries = FFMAX(fast_retries, 2); fast_retries = FFMAX(fast_retries, 2);
len += ret; len += ret;
if (url_interrupt_cb()) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
} }
return len; return len;
......
...@@ -226,7 +226,7 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size) ...@@ -226,7 +226,7 @@ static int rtp_read(URLContext *h, uint8_t *buf, int size)
struct pollfd p[2] = {{s->rtp_fd, POLLIN, 0}, {s->rtcp_fd, POLLIN, 0}}; struct pollfd p[2] = {{s->rtp_fd, POLLIN, 0}, {s->rtcp_fd, POLLIN, 0}};
for(;;) { for(;;) {
if (url_interrupt_cb()) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
/* build fdset to listen to RTP and RTCP packets */ /* build fdset to listen to RTP and RTCP packets */
n = poll(p, 2, 100); n = poll(p, 2, 100);
......
...@@ -1619,7 +1619,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st, ...@@ -1619,7 +1619,7 @@ static int udp_read_packet(AVFormatContext *s, RTSPStream **prtsp_st,
struct pollfd *p = rt->p; struct pollfd *p = rt->p;
for (;;) { for (;;) {
if (url_interrupt_cb()) if (ff_check_interrupt(&s->interrupt_callback))
return AVERROR_EXIT; return AVERROR_EXIT;
if (wait_end && wait_end - av_gettime() < 0) if (wait_end && wait_end - av_gettime() < 0)
return AVERROR(EAGAIN); return AVERROR(EAGAIN);
......
...@@ -100,7 +100,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags) ...@@ -100,7 +100,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
struct pollfd p = {fd, POLLOUT, 0}; struct pollfd p = {fd, POLLOUT, 0};
ret = ff_neterrno(); ret = ff_neterrno();
if (ret == AVERROR(EINTR)) { if (ret == AVERROR(EINTR)) {
if (url_interrupt_cb()) { if (ff_check_interrupt(&h->interrupt_callback)) {
ret = AVERROR_EXIT; ret = AVERROR_EXIT;
goto fail1; goto fail1;
} }
...@@ -112,7 +112,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags) ...@@ -112,7 +112,7 @@ static int tcp_open(URLContext *h, const char *uri, int flags)
/* wait until we are connected or until abort */ /* wait until we are connected or until abort */
while(timeout--) { while(timeout--) {
if (url_interrupt_cb()) { if (ff_check_interrupt(&h->interrupt_callback)) {
ret = AVERROR_EXIT; ret = AVERROR_EXIT;
goto fail1; goto fail1;
} }
......
...@@ -97,7 +97,7 @@ static int do_tls_poll(URLContext *h, int ret) ...@@ -97,7 +97,7 @@ static int do_tls_poll(URLContext *h, int ret)
int n = poll(&p, 1, 100); int n = poll(&p, 1, 100);
if (n > 0) if (n > 0)
break; break;
if (url_interrupt_cb()) if (ff_check_interrupt(&h->interrupt_callback))
return AVERROR(EINTR); return AVERROR(EINTR);
} }
return 0; return 0;
......
...@@ -2310,7 +2310,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options) ...@@ -2310,7 +2310,7 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
count = 0; count = 0;
read_size = 0; read_size = 0;
for(;;) { for(;;) {
if(url_interrupt_cb()){ if (ff_check_interrupt(&ic->interrupt_callback)){
ret= AVERROR_EXIT; ret= AVERROR_EXIT;
av_log(ic, AV_LOG_DEBUG, "interrupted\n"); av_log(ic, AV_LOG_DEBUG, "interrupted\n");
break; break;
......
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