Commit Graph

16 Commits

Author SHA1 Message Date
d0a71ba1ae Updates to VCMDecodedFrameCallback, VideoReceiver and a few related classes/tests.
* The _receiveCallback member of VCMDecodedFrameCallback does actually not require locking now that the threading model is slightly clearer. Documentation and checks have been added.
* UserReceiveCallback() never returns null and must always be called on the decoder thread. Checks have been added and the two test suites that were failing to set this callback, have been fixed and a new mock class added.  (looks like sakal@ may have hit some issues with flaky tests there).
* Changed VcmPayloadSink to use move semantics which I suspect was the intention at the time the code was written (when we didn't have move semantics).
* Added thread checker to a couple of classes and started adding thread checks for known behavior.  There's more to be  done there.
* Remove the |_decoder| member variable in VideoReceiver. It is not needed and as it could be used, left us open to a race.
* TODOs added for places where we can reduce locking. I suspect that we can get away with not needing a lock around _codecDataBase in VideoReceiver once we've got a clear picture of the threading model and ensured that all adhere to it.

BUG=webrtc:7328

Review-Url: https://codereview.webrtc.org/2744013002
Cr-Commit-Position: refs/heads/master@{#17226}
2017-03-14 11:16:20 +00:00
0d1b2b6880 Reland of Rename RTPVideoHeader.isFirstPacket to .is_first_packet_in_frame.
Add RTC_DEPRACATed anonymous unions to not break downstream projects.

Orignal issue's description:
> commit 0ad21111fcc57a7e978edba3c4263f0062d7f9ff
> Author: danilchap <danilchap@webrtc.org>
> Date:   Mon Dec 19 09:36:33 2016 -0800
>
>     Revert of Rename RTPVideoHeader.isFirstPacket to
>     .is_first_packet_in_frame. (patchset #1 id:1 of
>     https://codereview.webrtc.org/2574943003/ )
>
>     Reason for revert:
>     breaks downstream project.
>
>     Can you make this change in a compatible way using anonymous
>     union:
>     union {
>       bool is_first_packet_in_frame;
>       RTC_DEPRECATED bool isFirstPacket;
>     };
>     (unfortunetly this this treak breaks braced initialization in
>     rtp_rtcp_impl_unittest.cc,
>     so that should be rewritting in a more classic way)
>
>     Original issue's description:
>     > Rename RTPVideoHeader.isFirstPacket to
>     > .is_first_packet_in_frame.
>     >
>     > Name should represent the actual meaning.
>     >
>     > BUG=None
>     >
>     > Review-Url: https://codereview.webrtc.org/2574943003
>     > Cr-Commit-Position: refs/heads/master@{#15684}
>     > Committed:
>     > efde908380
>
>     TBR=stefan@webrtc.org,sprang@webrtc.org,johan@webrtc.org
>     # Skipping CQ checks because original CL landed less than 1 days
>     ago.
>     NOPRESUBMIT=true
>     NOTREECHECKS=true
>     NOTRY=true
>     BUG=None
>
>     Review-Url: https://codereview.webrtc.org/2589783003
>     Cr-Commit-Position: refs/heads/master@{#15686}
>

BUG=None

Review-Url: https://codereview.webrtc.org/2614503002
Cr-Commit-Position: refs/heads/master@{#15987}
2017-01-10 12:21:35 +00:00
0ad21111fc Revert of Rename RTPVideoHeader.isFirstPacket to .is_first_packet_in_frame. (patchset #1 id:1 of https://codereview.webrtc.org/2574943003/ )
Reason for revert:
breaks downstream project.

Can you make this change in a compatible way using anonymous union:
union {
  bool is_first_packet_in_frame;
  RTC_DEPRECATED bool isFirstPacket;
};
(unfortunetly this this treak breaks braced initialization in rtp_rtcp_impl_unittest.cc,
so that should be rewritting in a more classic way)

Original issue's description:
> Rename RTPVideoHeader.isFirstPacket to .is_first_packet_in_frame.
>
> Name should represent the actual meaning.
>
> BUG=None
>
> Review-Url: https://codereview.webrtc.org/2574943003
> Cr-Commit-Position: refs/heads/master@{#15684}
> Committed: efde908380

TBR=stefan@webrtc.org,sprang@webrtc.org,johan@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=None

Review-Url: https://codereview.webrtc.org/2589783003
Cr-Commit-Position: refs/heads/master@{#15686}
2016-12-19 17:36:33 +00:00
efde908380 Rename RTPVideoHeader.isFirstPacket to .is_first_packet_in_frame.
Name should represent the actual meaning.

BUG=None

Review-Url: https://codereview.webrtc.org/2574943003
Cr-Commit-Position: refs/heads/master@{#15684}
2016-12-19 16:32:24 +00:00
721d402d71 Create VideoReceiver with external VCMTiming object.
In order for the VCMTiming object to be correctly updated with decoding timings
when running the WebRTC-NewVideoJitterBuffer experiment the VCMTiming object
has to be available in both the VideoReceiver and the video_coding::FrameBuffer
class. Therefore the VCMTiming object is created in VideoRecieveStream and
then passed to VideoReceiver/video_coding::FrameBuffer as they are constructed.

BUG=webrtc:5514

Review-Url: https://codereview.webrtc.org/2575473004
Cr-Commit-Position: refs/heads/master@{#15638}
2016-12-15 15:11:01 +00:00
ac9f876bc0 Sort #includes that got unsorted when gmock.h and gtest.h moved to webrtc/test/
gmock.h and gtest.h were moved (or rather, got wrappers so that we
could put some icky compatibility hacks in one place instead of 500)
in this CL: https://codereview.webrtc.org/2358993004/

NOPRESUBMIT=true
BUG=webrtc:6398

Review-Url: https://codereview.webrtc.org/2381013002
Cr-Commit-Position: refs/heads/master@{#14464}
2016-10-01 05:29:53 +00:00
77eab70470 Enable the -Wundef warning for clang
NOPRESUBMIT=true
BUG=webrtc:6398

Review-Url: https://codereview.webrtc.org/2358993004
Cr-Commit-Position: refs/heads/master@{#14425}
2016-09-29 00:42:08 +00:00
3911c26bc0 Add support for writing raw encoder output to .ivf files.
Also refactor GenericEncoder to use these file writers, and remove use
of preprocessor to enable file writing.

BUG=

Review URL: https://codereview.webrtc.org/1853813002

Cr-Commit-Position: refs/heads/master@{#12372}
2016-04-15 08:24:21 +00:00
3f55dea259 Replace scoped_ptr with unique_ptr in webrtc/modules/video_coding/
BUG=webrtc:5520

Review URL: https://codereview.webrtc.org/1721353002

Cr-Commit-Position: refs/heads/master@{#11814}
2016-02-29 13:52:06 +00:00
a26ac925f7 Reland of move ignored return code from modules. (patchset #1 id:1 of https://codereview.webrtc.org/1736663004/ )
Reason for revert:
Revert breaks other uses, a fix will be rolled into Chromium instead.

Original issue's description:
> Revert of Remove ignored return code from modules. (patchset #3 id:40001 of https://codereview.webrtc.org/1703833002/ )
>
> Reason for revert:
> Breaks Chromium.
>
> Original issue's description:
> > Remove ignored return code from modules.
> >
> > ModuleProcessImpl doesn't act on return codes and having them around is
> > confusing (it's unclear what an error return code here would do even).
> >
> > BUG=
> > R=tommi@webrtc.org
> >
> > Committed: f14c47a58c
>
> TBR=tommi@webrtc.org,pbos@webrtc.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=
>
> Committed: https://crrev.com/da33a8a2a22f6d19ba2a8cce963beafbdbaa8fd8
> Cr-Commit-Position: refs/heads/master@{#11761}

TBR=tommi@webrtc.org,torbjorng@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.webrtc.org/1737013002

Cr-Commit-Position: refs/heads/master@{#11762}
2016-02-25 12:50:09 +00:00
da33a8a2a2 Revert of Remove ignored return code from modules. (patchset #3 id:40001 of https://codereview.webrtc.org/1703833002/ )
Reason for revert:
Breaks Chromium.

Original issue's description:
> Remove ignored return code from modules.
>
> ModuleProcessImpl doesn't act on return codes and having them around is
> confusing (it's unclear what an error return code here would do even).
>
> BUG=
> R=tommi@webrtc.org
>
> Committed: f14c47a58c

TBR=tommi@webrtc.org,pbos@webrtc.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review URL: https://codereview.webrtc.org/1736663004

Cr-Commit-Position: refs/heads/master@{#11761}
2016-02-25 12:34:12 +00:00
f14c47a58c Remove ignored return code from modules.
ModuleProcessImpl doesn't act on return codes and having them around is
confusing (it's unclear what an error return code here would do even).

BUG=
R=tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1703833002 .

Cr-Commit-Position: refs/heads/master@{#11747}
2016-02-24 15:51:23 +00:00
7776e782d6 Remove unused methods in VideoCodingModule.
Also voids ::Codec which always passed.

BUG=
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1464313004 .

Cr-Commit-Position: refs/heads/master@{#11167}
2016-01-07 14:42:58 +00:00
796cfaf7f7 Add VideoCodec::PreferDecodeLate
The purpose is so that a decoder (Android) that only have a limited number of output buffers can make sure that decoding is done just before the frame is needed.

Removed unused iSupportsRenderTiming and the settings structs since it was not used.
Added VCMReceiver::FrameForDecoding unit test for the case when PreferDecodeLate is set.

Note that this does not change the current behaviour. We actually currently always decode frames late. This cl is to make sure the behaviour is kept for Android, if the default behaviour is changed.

Review URL: https://codereview.webrtc.org/1428293003

Cr-Commit-Position: refs/heads/master@{#10974}
2015-12-10 17:27:45 +00:00
795dbe4e0f Remove RegisterExternal{De,En}coder error codes.
Also adds a RTC_CHECK in VideoReceiveStream that verifies that decoders
aren't null, since this will attempt to deregister a codec which would
previously fail with an obscure stack trace not indicating what actually
was wrong.

BUG=webrtc:5249
R=stefan@webrtc.org

Review URL: https://codereview.webrtc.org/1479793002 .

Cr-Commit-Position: refs/heads/master@{#10821}
2015-11-27 13:09:14 +00:00
2557b86e76 modules/video_coding refactorings
The main purpose was the interface-> include rename, but other files
were also moved, eliminating the "main" dir.

To avoid breaking downstream, the "interface" directories were copied
into a new "video_coding/include" dir. The old headers got pragma
warnings added about deprecation (a very short deprecation since I plan
to remove them as soon downstream is updated).

Other files also moved:
video_coding/main/source -> video_coding
video_coding/main/test -> video_coding/test

BUG=webrtc:5095
TESTED=Passing compile-trybots with --clobber flag:
git cl try --clobber --bot=win_compile_rel --bot=linux_compile_rel --bot=android_compile_rel --bot=mac_compile_rel --bot=ios_rel --bot=linux_gn_rel --bot=win_x64_gn_rel --bot=mac_x64_gn_rel --bot=android_gn_rel -m tryserver.webrtc

R=stefan@webrtc.org, tommi@webrtc.org

Review URL: https://codereview.webrtc.org/1417283007 .

Cr-Commit-Position: refs/heads/master@{#10694}
2015-11-18 21:00:33 +00:00