diff mbox

[FFmpeg-devel] avformat/rtpdec_rfc4175: Fix incorrect copy_offset calculation

Message ID DM6PR14MB263307A10EF43B7BFDD278F69AE40@DM6PR14MB2633.namprd14.prod.outlook.com
State Superseded
Headers show

Commit Message

Jacob Siddall June 20, 2019, 6:21 a.m. UTC
The previous calculation code did not account for the fact that the
copy_offset for the start of the frame array is at index 0, yet the
scan line number from the rfc4175 RTP header starts at 1.
This caused 2 issues to appear:
- The first scan line was being copied into the array where the second
  scan line should be. This caused the resulting video to have a green
  line at the top of it.
- Since the packet containing the last scan line would fail the
  calculation, the packet with the RTP marker would not be processed
  which caused a log message saying "Missed previous RTP marker" to be
  outputted for each frame.

Signed-off-by: Jacob Siddall <kobe@live.com.au>
---
 libavformat/rtpdec_rfc4175.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.20.1

Comments

Michael Niedermayer June 20, 2019, 10:58 p.m. UTC | #1
On Thu, Jun 20, 2019 at 06:21:53AM +0000, Jacob Siddall wrote:
> The previous calculation code did not account for the fact that the
> copy_offset for the start of the frame array is at index 0, yet the
> scan line number from the rfc4175 RTP header starts at 1.
> This caused 2 issues to appear:
> - The first scan line was being copied into the array where the second
>   scan line should be. This caused the resulting video to have a green
>   line at the top of it.
> - Since the packet containing the last scan line would fail the
>   calculation, the packet with the RTP marker would not be processed
>   which caused a log message saying "Missed previous RTP marker" to be
>   outputted for each frame.
> 
> Signed-off-by: Jacob Siddall <kobe@live.com.au>
> ---
>  libavformat/rtpdec_rfc4175.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

doesnt apply with git 

Applying: avformat/rtpdec_rfc4175: Fix incorrect copy_offset calculation
Using index info to reconstruct a base tree...
error: patch failed: libavformat/rtpdec_rfc4175.c:206
error: libavformat/rtpdec_rfc4175.c: patch does not apply
error: Did you hand edit your patch?
It does not apply to blobs recorded in its index.
Patch failed at 0001 avformat/rtpdec_rfc4175: Fix incorrect copy_offset calculation

[...]
diff mbox

Patch

diff --git a/libavformat/rtpdec_rfc4175.c b/libavformat/rtpdec_rfc4175.c
index e9c62c1..ec838fe 100644
--- a/libavformat/rtpdec_rfc4175.c
+++ b/libavformat/rtpdec_rfc4175.c
@@ -206,7 +206,7 @@  static int rfc4175_handle_packet(AVFormatContext *ctx, PayloadContext *data,
             length = payload_len;
 
         /* prevent ill-formed packets to write after buffer's end */
-        copy_offset = (line * data->width + offset) * data->pgroup / data->xinc;
+        copy_offset = ((line - 1) * data->width + offset) * data->pgroup / data->xinc;
         if (copy_offset + length > data->frame_size)
             return AVERROR_INVALIDDATA;