Merge remote-tracking branch 'lukaszmluki/master'

* lukaszmluki/master:
  avformat/ftp: add log regarding passive mode failure
  avformat/ftp: fix possible deadlock
  avdevice/pulse_audio_enc: fix stream index

Merged-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
Michael Niedermayer 2013-10-12 14:14:48 +02:00
commit 8de021fabe
2 changed files with 12 additions and 13 deletions

View File

@ -118,7 +118,7 @@ static void pulse_get_output_timestamp(AVFormatContext *h, int stream, int64_t *
PulseData *s = h->priv_data;
pa_usec_t latency = pa_simple_get_latency(s->pa, NULL);
*wall = av_gettime();
*dts = h->streams[0]->cur_dts - latency;
*dts = h->streams[s->stream_index]->cur_dts - latency;
}
#define OFFSET(a) offsetof(PulseData, a)

View File

@ -270,6 +270,8 @@ static int ftp_passive_mode(FTPContext *s)
fail:
av_free(res);
s->server_data_port = -1;
av_log(s, AV_LOG_ERROR, "Set passive mode failed\n"
"Your FTP server may use IPv6 which is not supported yet.\n");
return AVERROR(EIO);
}
@ -421,7 +423,7 @@ static int ftp_connect_control_connection(URLContext *h)
}
if ((err = ftp_type(s)) < 0) {
av_dlog(h, "Set content type failed\n");
av_log(h, AV_LOG_ERROR, "Set content type failed\n");
return err;
}
}
@ -437,10 +439,8 @@ static int ftp_connect_data_connection(URLContext *h)
if (!s->conn_data) {
/* Enter passive mode */
if ((err = ftp_passive_mode(s)) < 0) {
av_dlog(h, "Set passive mode failed\n");
if ((err = ftp_passive_mode(s)) < 0)
return err;
}
/* Open data connection */
ff_url_join(buf, sizeof(buf), "tcp", NULL, s->hostname, s->server_data_port, NULL);
if (s->rw_timeout != -1) {
@ -486,14 +486,13 @@ static int ftp_abort(URLContext *h)
}
} else {
ftp_close_data_connection(s);
}
if (ftp_status(s, NULL, abor_codes) < 225) {
/* wu-ftpd also closes control connection after data connection closing */
ffurl_closep(&s->conn_control);
if ((err = ftp_connect_control_connection(h)) < 0) {
av_log(h, AV_LOG_ERROR, "Reconnect failed.\n");
return err;
if (ftp_status(s, NULL, abor_codes) < 225) {
/* wu-ftpd also closes control connection after data connection closing */
ffurl_closep(&s->conn_control);
if ((err = ftp_connect_control_connection(h)) < 0) {
av_log(h, AV_LOG_ERROR, "Reconnect failed.\n");
return err;
}
}
}