[FFmpeg-trac] #9080(avutil:new): RTP SSRC constrained to INT_MIN and INT_MAX vice 0 and UINT_MAX

FFmpeg trac at avcodec.org
Mon Jan 25 22:50:46 EET 2021


#9080: RTP SSRC constrained to INT_MIN and INT_MAX vice 0 and UINT_MAX
-----------------------------------+--------------------------------------
             Reporter:  joeb_1369  |                     Type:  defect
               Status:  new        |                 Priority:  normal
            Component:  avutil     |                  Version:  git-master
             Keywords:             |               Blocked By:
             Blocking:             |  Reproduced by developer:  0
Analyzed by developer:  0          |
-----------------------------------+--------------------------------------
 Summary of the bug: When starting an SRTP stream with a value larger than
 INT_MAX the following error is encountered:

 '''Value 3322661914.000000 for parameter 'ssrc' out of range [-2.14748e+09
 - 2.14748e+09]'''

 It is my understanding from RFC 3550 SSRC should be a random 2^32-1
 integer.



 How to reproduce:

 Attempt to start an SRTP stream with a uint32 larger than 2.14748e+09.
 Following is a report from a failed execution.

 {{{
 ffmpeg started on 2021-01-25 at 13:35:42
 Report written to "ffmpeg-20210125-133542.log"
 Log level: 48
 Command line:
 /usr/local/bin/ffmpeg -report -rtsp_transport tcp -r 30 -i
 rtsp://user:password@10.0.1.234:554/ch01/0 -an -sn -dn -codec:v libx264
 -pix_fmt yuvj420p -f rawvideo -profile:v main -level:v 4.0 -vf
 "scale=1280:720" -b:v 299k -payload_type 99 -ssrc 3810690864 -f rtp
 -srtp_out_suite AES_CM_128_HMAC_SHA1_80 -srtp_out_params
 sVm3yOQYXeY6m658N389iLFpGtJ9c5Y62LTH5CPQ
 "srtp://10.0.1.210:63959?rtcpport=63959&localrtcpport=63959&pkt_size=1378"
 ffmpeg version N-100810-g12c8aeb2b8 Copyright (c) 2000-2021 the FFmpeg
 developers
   built with gcc 8 (Debian 8.3.0-6)
   configuration: --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-gnutls --enable-libx265 --enable-libxml2 --enable-libx264
 --enable-shared --enable-vaapi
   libavutil      56. 63.101 / 56. 63.101
   libavcodec     58.118.100 / 58.118.100
   libavformat    58. 65.101 / 58. 65.101
   libavdevice    58. 11.103 / 58. 11.103
   libavfilter     7. 97.100 /  7. 97.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  8.100 /  5.  8.100
   libswresample   3.  8.100 /  3.  8.100
   libpostproc    55.  8.100 / 55.  8.100
 Splitting the commandline.
 Reading option '-report' ... matched as option 'report' (generate a
 report) with argument '1'.
 Reading option '-rtsp_transport' ... matched as AVOption 'rtsp_transport'
 with argument 'tcp'.
 Reading option '-r' ... matched as option 'r' (set frame rate (Hz value,
 fraction or abbreviation)) with argument '30'.
 Reading option '-i' ... matched as input url with argument
 'rtsp://admin:admin@10.0.1.234:554/ch01/0'.
 Reading option '-an' ... matched as option 'an' (disable audio) with
 argument '1'.
 Reading option '-sn' ... matched as option 'sn' (disable subtitle) with
 argument '1'.
 Reading option '-dn' ... matched as option 'dn' (disable data) with
 argument '1'.
 Reading option '-codec:v' ... matched as option 'codec' (codec name) with
 argument 'libx264'.
 Reading option '-pix_fmt' ... matched as option 'pix_fmt' (set pixel
 format) with argument 'yuvj420p'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'rawvideo'.
 Reading option '-profile:v' ... matched as option 'profile' (set profile)
 with argument 'main'.
 Reading option '-level:v' ... matched as AVOption 'level:v' with argument
 '4.0'.
 Reading option '-vf' ... matched as option 'vf' (set video filters) with
 argument 'scale=1280:720'.
 Reading option '-b:v' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '299k'.
 Reading option '-payload_type' ... matched as AVOption 'payload_type' with
 argument '99'.
 Reading option '-ssrc' ... matched as AVOption 'ssrc' with argument
 '3810690864'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'rtp'.
 Reading option '-srtp_out_suite' ... matched as AVOption 'srtp_out_suite'
 with argument 'AES_CM_128_HMAC_SHA1_80'.
 Reading option '-srtp_out_params' ... matched as AVOption
 'srtp_out_params' with argument
 'sVm3yOQYXeY6m658N389iLFpGtJ9c5Y62LTH5CPQ'.
 Reading option
 'srtp://10.0.1.210:63959?rtcpport=63959&localrtcpport=63959&pkt_size=1378'
 ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option report (generate a report) with argument 1.
 Successfully parsed a group of options.
 Parsing a group of options: input url
 rtsp://user:password@10.0.1.234:554/ch01/0.
 Applying option r (set frame rate (Hz value, fraction or abbreviation))
 with argument 30.
 Successfully parsed a group of options.
 Opening an input file: rtsp://user:password@10.0.1.234:554/ch01/0.
 [tcp @ 0x559a37570540] No default whitelist set
 [tcp @ 0x559a37570540] Original list of addresses:
 [tcp @ 0x559a37570540] Address 10.0.1.234 port 554
 [tcp @ 0x559a37570540] Interleaved list of addresses:
 [tcp @ 0x559a37570540] Address 10.0.1.234 port 554
 [tcp @ 0x559a37570540] Starting connection attempt to 10.0.1.234 port 554
 [tcp @ 0x559a37570540] Successfully connected to 10.0.1.234 port 554
 [rtsp @ 0x559a3756d680] SDP:
 v=0
 o=- 3460449805 3460449805 IN IP4 10.0.1.234
 c=IN IP4 10.0.1.234
 t=0 0
 m=video 0 RTP/AVP 96
 a=control:trackID=0
 a=rtpmap:96 H264/90000
 a=x-dimensions:1920,1080
 a=framerate:30
 a=bitrate:4096
 a=fmtp:96 packetization-mode=1;profile-level-id=420029;sprop-parameter-
 sets=Z01AKJWgHgCJ+WbAQA==,aO48gA==
 a=recvonly

 [rtsp @ 0x559a3756d680] video codec set to: h264
 [rtsp @ 0x559a3756d680] RTP Packetization Mode: 1
 [rtsp @ 0x559a3756d680] RTP Profile IDC: 42 Profile IOP: 0 Level: 29
 [rtsp @ 0x559a3756d680] Extradata set to 0x559a37573040 (size: 25)
 [rtsp @ 0x559a3756d680] setting jitter buffer size to 0
 [rtsp @ 0x559a3756d680] hello state=0
 [h264 @ 0x559a37572c00] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] Format yuvj420p chosen by get_format().
 [h264 @ 0x559a37572c00] Reinit context to 1920x1088, pix_fmt: yuvj420p
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37572c00] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [h264 @ 0x559a37572c00] unknown SEI type 240
 [rtsp @ 0x559a3756d680] All info found
 [rtsp @ 0x559a3756d680] Setting avg frame rate based on r frame rate
 Input #0, rtsp, from 'rtsp://user:password@10.0.1.234:554/ch01/0':
   Duration: N/A, start: 0.033000, bitrate: N/A
     Stream #0:0, 28, 1/90000: Video: h264 (Main), yuvj420p(pc,
 progressive), 1920x1080, 30.30 fps, 30.30 tbr, 90k tbn, 180k tbc
 Successfully opened the file.
 Parsing a group of options: output url
 srtp://10.0.1.210:63959?rtcpport=63959&localrtcpport=63959&pkt_size=1378.
 Applying option an (disable audio) with argument 1.
 Applying option sn (disable subtitle) with argument 1.
 Applying option dn (disable data) with argument 1.
 Applying option codec:v (codec name) with argument libx264.
 Applying option pix_fmt (set pixel format) with argument yuvj420p.
 Applying option f (force format) with argument rawvideo.
 Applying option profile:v (set profile) with argument main.
 Applying option vf (set video filters) with argument scale=1280:720.
 Applying option b:v (video bitrate (please use -b:v)) with argument 299k.
 Applying option f (force format) with argument rtp.
 Successfully parsed a group of options.
 Opening an output file:
 srtp://10.0.1.210:63959?rtcpport=63959&localrtcpport=63959&pkt_size=1378.
 [srtp @ 0x559a3758ebc0] No default whitelist set
 [rtp @ 0x559a376e8180] No default whitelist set
 [udp @ 0x559a3758e400] No default whitelist set
 [udp @ 0x559a375ac180] No default whitelist set
 Successfully opened the file.
 detected 4 logical cores
 [h264 @ 0x559a37594480] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x559a37594480] nal_unit_type: 8(PPS), nal_ref_idc: 3
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
 Press [q] to stop, [?] for help
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 0x559a37594480] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x559a37594480] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x559a37594480] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a37594480] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 0x559a37594480] unknown SEI type 240
 [h264 @ 0x559a37594480] Format yuvj420p chosen by get_format().
 [h264 @ 0x559a37594480] Reinit context to 1920x1088, pix_fmt: yuvj420p
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 0x559a3769e400] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a3769e400] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a3769e400] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a3769e400] unknown SEI type 240
 [h264 @ 0x559a3769e400] unknown SEI type 240
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 0x559a376a5740] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a376a5740] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a376a5740] unknown SEI type 240
 cur_dts is invalid st:0 (0) [init:0 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 [h264 @ 0x559a376aa100] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a376aa100] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a376aa100] unknown SEI type 240
 [h264 @ 0x559a376db300] nal_unit_type: 6(SEI), nal_ref_idc: 0
 [h264 @ 0x559a376db300] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 2
 [h264 @ 0x559a376db300] unknown SEI type 240
 [Parsed_scale_0 @ 0x559a376a4f80] Setting 'w' to value '1280'
 [Parsed_scale_0 @ 0x559a376a4f80] Setting 'h' to value '720'
 [Parsed_scale_0 @ 0x559a376a4f80] Setting 'flags' to value 'bicubic'
 [Parsed_scale_0 @ 0x559a376a4f80] w:1280 h:720 flags:'bicubic' interl:0
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] Setting 'video_size' to
 value '1920x1080'
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] Setting 'pix_fmt' to
 value '12'
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] Setting 'time_base' to
 value '1/30'
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] Setting 'pixel_aspect' to
 value '0/1'
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] Setting 'frame_rate' to
 value '30/1'
 [graph 0 input from stream 0:0 @ 0x559a3769c8c0] w:1920 h:1080
 pixfmt:yuvj420p tb:1/30 fr:30/1 sar:0/1
 [format @ 0x559a37a33280] Setting 'pix_fmts' to value 'yuvj420p'
 [AVFilterGraph @ 0x559a3758f640] query_formats: 4 queried, 3 merged, 0
 already done, 0 delayed
 [swscaler @ 0x559a37a35740] deprecated pixel format used, make sure you
 did set range correctly
 [Parsed_scale_0 @ 0x559a376a4f80] w:1920 h:1080 fmt:yuvj420p sar:0/1 ->
 w:1280 h:720 fmt:yuvj420p sar:0/1 flags:0x4
 [libx264 @ 0x559a37590180] using mv_range_thread = 56
 [libx264 @ 0x559a37590180] using cpu capabilities: MMX2 SSE2Fast SSSE3
 SSE4.2 AVX FMA3 BMI2 AVX2
 [libx264 @ 0x559a37590180] profile Main, level 4.0
 [RTP muxer @ 0x559a376ad900] Value 3810690864.000000 for parameter 'ssrc'
 out of range [-2.14748e+09 - 2.14748e+09]
 [RTP muxer @ 0x559a376ad900] Error setting option ssrc to value
 3810690864.
 Could not write header for output file #0 (incorrect codec parameters ?):
 Numerical result out of range
 Error initializing output stream 0:0 --
 [AVIOContext @ 0x559a3758c740] Statistics: 0 seeks, 0 writeouts
 [libx264 @ 0x559a37590180] final ratefactor: 40.39
 Conversion failed!
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/9080>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list