From patchwork Fri Dec 30 22:32:06 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: John Comeau X-Patchwork-Id: 1998 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.89.21 with SMTP id n21csp3035929vsb; Fri, 30 Dec 2016 14:39:54 -0800 (PST) X-Received: by 10.28.29.18 with SMTP id d18mr33257081wmd.108.1483137594622; Fri, 30 Dec 2016 14:39:54 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id k1si63842351wjn.263.2016.12.30.14.39.54; Fri, 30 Dec 2016 14:39:54 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9A1DB689CBD; Sat, 31 Dec 2016 00:39:47 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f171.google.com (mail-io0-f171.google.com [209.85.223.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 24299689C45 for ; Sat, 31 Dec 2016 00:39:41 +0200 (EET) Received: by mail-io0-f171.google.com with SMTP id h133so142886595ioe.3 for ; Fri, 30 Dec 2016 14:39:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:from:date:message-id:subject:to; bh=5ZwBrE227CYBwTdhiJpgFrmnQ3FD+VJkMfOt90HYKHA=; b=IccaFisceTaOdgmRGR55E3wMT51E6p0HRqIq52nPIDMzLbxzszvc2n0h+VGnPirrTP f1EHjl7GXIhXt4pyrM+kya2l3pfQ+OM8ej821UGQjMNgFXgVkWz847u3hfLQDa0LWxBF 10GSzISvpTBcOfhsIFDZXYkvQG3VVYyo/sSkZXyqlX3cQK0xGe9YNZ6xZAoo+VNHTGwC ap+72WgRlroRMUJWobsoOYmvdG9dU/TwTQ9FHMbUUnnMf/Vw9kINSBS5knZzCMqkwctp OxxCyq7t8HkKiYI0f33lpyQqIqUfxCbiVFZHQ3CBJHr/xMyk2PKouTTve5x5Ttqzl1Bg urew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:from:date:message-id:subject :to; bh=5ZwBrE227CYBwTdhiJpgFrmnQ3FD+VJkMfOt90HYKHA=; b=cKQYdS6rOw2S0iQUxVEbkyDE5m9xLouaG9mah+RAWaQuqfkrs9GPUKrswIgE+j5xn8 lys/m/btEJxLngZQyOp1i7eg4alnVyMj4ookRprkBNMktwDOuvTzsSa23jd6YZeJ0+YL cj5a6ycTp62OPwl0+p6kbjVrqabzgibtBpOxu1V7BquJLJwq8mpBu+uG6eM1dzNzMs3u 4c7LxM4HsciCtDB9vccr84nB8mIxjZFBf0+LwSA8X5WaTTGRmsfAyVPi7ja2tPKHYPc4 AMkeSd0JKUj4olgcpOtKfNqV8RFysi3wvJ6abQbAZ45GfwNeCAXAG7NP2vxirqeE41NU aouw== X-Gm-Message-State: AIkVDXJpHaYriKPcgPc2sAFJOmtAN8dUxGO3EtUftlPgQSsuf4V7/vMIz08u+S9/mLIPm8MaG7xtfMHPSnUoTw== X-Received: by 10.107.38.69 with SMTP id m66mr37597242iom.144.1483137126718; Fri, 30 Dec 2016 14:32:06 -0800 (PST) MIME-Version: 1.0 Received: by 10.107.7.99 with HTTP; Fri, 30 Dec 2016 14:32:06 -0800 (PST) From: John Comeau Date: Fri, 30 Dec 2016 14:32:06 -0800 X-Google-Sender-Auth: Yy9GIiOw5TiXTj1UNjMRySech_k Message-ID: To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] patch for Sricam, Floureon, etc. IP cameras X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" these cameras return `Transport: RTP/AVP` for a SETUP request of RTP/AVP/TCP, yet they only use TCP transport. `make check` still passes after patch. diff --git a/TODO.txt b/TODO.txt new file mode 100644 index 0000000000..1b0c64c186 --- /dev/null +++ b/TODO.txt @@ -0,0 +1 @@ +2016-12-06: Fix assembly for NASM. See http://stackoverflow.com/questions/36854583/compiling-ffmpeg-for-kali-linux-2 diff --git a/libavformat/rtsp.c b/libavformat/rtsp.c index c6292c5543..fac625a121 100644 --- a/libavformat/rtsp.c +++ b/libavformat/rtsp.c @@ -1554,6 +1554,20 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, goto fail; } + /* If the server responded with another lower transport mode + * than what we requested, complain but attempt to continue. + * Cheap IP cameras like Sricam SP005, for example, respond with + * `Transport: RTP/AVP` for a SETUP request of RTP/AVP/TCP + * yet is sending over TCP anyway */ + if (reply->transports[0].lower_transport != lower_transport) { + av_log(s, AV_LOG_ERROR, "Nonmatching transport in server reply\n"); + av_log(s, AV_LOG_DEBUG, "We asked for %d and got %d\n", + lower_transport, + reply->transports[0].lower_transport); + av_log(s, AV_LOG_DEBUG, "Mask is %d\n", rt->lower_transport_mask); + reply->transports[0].lower_transport = lower_transport; + } + /* XXX: same protocol for all streams is required */ if (i > 0) { if (reply->transports[0].lower_transport != rt->lower_transport || @@ -1566,14 +1580,6 @@ int ff_rtsp_make_setup_request(AVFormatContext *s, const char *host, int port, rt->transport = reply->transports[0].transport; } - /* Fail if the server responded with another lower transport mode - * than what we requested. */ - if (reply->transports[0].lower_transport != lower_transport) { - av_log(s, AV_LOG_ERROR, "Nonmatching transport in server reply\n"); - err = AVERROR_INVALIDDATA; - goto fail; - } - switch(reply->transports[0].lower_transport) { case RTSP_LOWER_TRANSPORT_TCP: rtsp_st->interleaved_min = reply->transports[0].interleaved_min;