diff mbox series

[FFmpeg-devel] avformat/libsrt: log streamid in listener mode

Message ID tencent_5457999C2AE0145B9C344B800834B93E9D09@qq.com
State Superseded
Headers show
Series [FFmpeg-devel] avformat/libsrt: log streamid in listener mode | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

Zhao Zhili May 27, 2021, 3:34 p.m. UTC
It's useful for test client which pass streamid to ffmpeg/ffplay.
For example, use ffmpeg to test streamid support in VLC:
./ffmpeg -v info -re -i foo.mp4 -c copy -f mpegts -mode listener srt://127.0.0.1:9000
./vlc srt://127.0.0.1:9000?streamid=foobar
---
 libavformat/libsrt.c | 6 ++++++
 1 file changed, 6 insertions(+)

Comments

Anton Khirnov May 31, 2021, 9:05 a.m. UTC | #1
Quoting Zhao Zhili (2021-05-27 17:34:55)
> It's useful for test client which pass streamid to ffmpeg/ffplay.
> For example, use ffmpeg to test streamid support in VLC:
> ./ffmpeg -v info -re -i foo.mp4 -c copy -f mpegts -mode listener srt://127.0.0.1:9000
> ./vlc srt://127.0.0.1:9000?streamid=foobar
> ---
>  libavformat/libsrt.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
> index c1e96f700e..6ea6c35c53 100644
> --- a/libavformat/libsrt.c
> +++ b/libavformat/libsrt.c
> @@ -143,6 +143,8 @@ static const AVOption libsrt_options[] = {
>      { NULL }
>  };
>  
> +static int libsrt_getsockopt(URLContext *h, int fd, SRT_SOCKOPT optname, const char * optnamestr, void * optval, int * optlen);

Forward declarations should be avoided, when possible. Just move the
function declaration higher up.

> +
>  static int libsrt_neterrno(URLContext *h)
>  {
>      int os_errno;
> @@ -224,6 +226,8 @@ static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t
>  {
>      int ret;
>      int reuse = 1;
> +    char streamid[512] = {};
> +    int streamid_len = sizeof(streamid);
>      if (srt_setsockopt(fd, SOL_SOCKET, SRTO_REUSEADDR, &reuse, sizeof(reuse))) {
>          av_log(h, AV_LOG_WARNING, "setsockopt(SRTO_REUSEADDR) failed\n");
>      }
> @@ -242,6 +246,8 @@ static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t
>          return libsrt_neterrno(h);
>      if (libsrt_socket_nonblock(ret, 1) < 0)
>          av_log(h, AV_LOG_DEBUG, "libsrt_socket_nonblock failed\n");
> +    if (!libsrt_getsockopt(h, ret, SRTO_STREAMID, "SRTO_STREAMID", streamid, &streamid_len))
> +        av_log(h, AV_LOG_INFO, "accept streamid [%s], length %d\n", streamid, streamid_len);

This should be verbose or debug.
diff mbox series

Patch

diff --git a/libavformat/libsrt.c b/libavformat/libsrt.c
index c1e96f700e..6ea6c35c53 100644
--- a/libavformat/libsrt.c
+++ b/libavformat/libsrt.c
@@ -143,6 +143,8 @@  static const AVOption libsrt_options[] = {
     { NULL }
 };
 
+static int libsrt_getsockopt(URLContext *h, int fd, SRT_SOCKOPT optname, const char * optnamestr, void * optval, int * optlen);
+
 static int libsrt_neterrno(URLContext *h)
 {
     int os_errno;
@@ -224,6 +226,8 @@  static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t
 {
     int ret;
     int reuse = 1;
+    char streamid[512] = {};
+    int streamid_len = sizeof(streamid);
     if (srt_setsockopt(fd, SOL_SOCKET, SRTO_REUSEADDR, &reuse, sizeof(reuse))) {
         av_log(h, AV_LOG_WARNING, "setsockopt(SRTO_REUSEADDR) failed\n");
     }
@@ -242,6 +246,8 @@  static int libsrt_listen(int eid, int fd, const struct sockaddr *addr, socklen_t
         return libsrt_neterrno(h);
     if (libsrt_socket_nonblock(ret, 1) < 0)
         av_log(h, AV_LOG_DEBUG, "libsrt_socket_nonblock failed\n");
+    if (!libsrt_getsockopt(h, ret, SRTO_STREAMID, "SRTO_STREAMID", streamid, &streamid_len))
+        av_log(h, AV_LOG_INFO, "accept streamid [%s], length %d\n", streamid, streamid_len);
 
     return ret;
 }