Commit Graph

10 Commits

Author SHA1 Message Date
7f3f8bc5a6 Refactor jitter buffer to use separate lists for decodable and incomplete frames.
This changes the design of the jitter buffer to keeping track of decodable frames from the point when packets are inserted in the buffer, instead of searching for decodable frames when they are needed.

To accomplish this the frame_list_, which previously contained all frames (incomplete or complete, continuous or not), is split into a list of decodable_frames_ (complete, continuous) and a list of incomplete_frames_ (either incomplete or non-continuous). These frame lists are updated every time a packet is inserted.

This is another step in the direction of doing most of the work in the jitter buffer only once, when packets are inserted, instead of doing it every time we look for a frame or try to get a nack list.

BUG=1798
TEST=vie_auto_test, trybots
R=mikhal@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/1522005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4104 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-27 07:02:45 +00:00
ef14488d03 Trigger a PLI if the duration of non-decodable frames exceeds a threshold.
BUG=1663
R=mikhal@webrtc.org, ronghuawu@chromium.org

Review URL: https://webrtc-codereview.appspot.com/1359004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3975 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-05-07 19:16:33 +00:00
381da4be9c VCM: Adding API for the size(duration) of the jitter buffer.
Refers to the duration in time of the frames which are ready to be sent to the decoder.

Review URL: https://webrtc-codereview.appspot.com/1319004

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3903 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-04-25 21:45:29 +00:00
a64300af50 Refactor NACK list creation to build the NACK list as packets arrive.
Also fixes a timer bug related to NACKing in the RTP module which could cause packets to only be NACKed twice if there's frequent packet losses.

Note that I decided to remove any selective NACKing for now as I don't think the gain of doing it is big enough compared to the added complexity. The same reasoning for empty packets. None of them will be retransmitted by a smart sender since the sender would know that they aren't needed.

BUG=1420
TEST=video_coding_unittests, vie_auto_test, video_coding_integrationtests, trybots

Review URL: https://webrtc-codereview.appspot.com/1115006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3599 4adac7df-926f-26a2-2b94-8c16560cd09d
2013-03-04 15:24:40 +00:00
bd941d3f4c Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) were didn't properly update the decoding state,
  and would therefore be NACKed even though they were received.

This is a recommit of r3183. Extensive testing suggest that this may have been caused by virtual machine flakiness.

TBR=mflodman@webrtc.org

BUG=1150

Review URL: https://webrtc-codereview.appspot.com/971011

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3200 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-29 14:37:18 +00:00
7d5dacc985 Revert 3183 - Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) were didn't properly update the decoding state,
  and would therefore be NACKed even though they were received.

http://webrtc-cb-linux-master.cbf.corp.google.com:8010/builders/Win32Release/builds/1704/steps/video_coding_unittests/logs/stdio

TEST=trybots

BUG=1150

Review URL: https://webrtc-codereview.appspot.com/929031

TBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/971010

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3187 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-28 22:04:45 +00:00
e4fb44c29d Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) were didn't properly update the decoding state,
  and would therefore be NACKed even though they were received.

TEST=trybots

BUG=1150

Review URL: https://webrtc-codereview.appspot.com/929031

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3183 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-28 19:36:20 +00:00
891d55eb35 Revert 3181 - Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) didn't properly update the decoding state,
  and would therefore be NACKed even though they were received.

Broke [Builder Win32Debug] (http://webrtc-cb-linux-master.cbf.corp.google.com:8010/builders/Win32Debug/builds/1728)

TEST=trybots

BUG=1150

Review URL: https://webrtc-codereview.appspot.com/966026

TBR=stefan@webrtc.org
Review URL: https://webrtc-codereview.appspot.com/939031

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3182 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-28 17:45:01 +00:00
d42e51ce7c Fixes two bugs related to padding in the jitter buffer.
- Pad packets (empty) were often NACKed even though they were received.
- Padding only frames (empty) didn't properly update the decoding state,
  and would therefore be NACKed even though they were received.

TEST=trybots

BUG=1150

Review URL: https://webrtc-codereview.appspot.com/966026

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3181 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-11-28 16:40:28 +00:00
14b43beb7c Move src/ -> webrtc/
TBR=niklas.enbom@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/915006

git-svn-id: http://webrtc.googlecode.com/svn/trunk@2963 4adac7df-926f-26a2-2b94-8c16560cd09d
2012-10-22 18:19:23 +00:00