12 Commits

Author SHA1 Message Date
magjed
f823ededce Negotiate H264 profiles in SDP
This CL will start to distinguish H264 profiles during SDP negotiation.
We currently don't look at the H264 profile at all and assume they are
all Constrained Baseline Level 3.1. This CL will start to check profiles
for equality when matching, and will generate the correct answer H264
level.

Each local supported H264 profile needs to be listed explicitly in the
list of local supported codecs, even if they are redundant. For example,
Baseline profile should be listed explicitly even though another profile
that is a superset of Baseline is also listed. The reason for this is to
simplify the code and avoid profile intersection during matching. So
VideoCodec::Matches will check for profile equality, and not check if
one codec is a subset of the other. This also leads to the nice property
that VideoCodec::Matches is symmetric, i.e. iif a.Matches(b) then
b.Matches(a).

BUG=webrtc:6337
TBR=tkchin@webrtc.org

Review-Url: https://codereview.webrtc.org/2483173002
Cr-Commit-Position: refs/heads/master@{#15051}
2016-11-12 17:53:08 +00:00
magjed
3663c52382 Provide move semantic for cricket::Codec and subclasses
The cricket::Codec class contains std containers like
std::map<std::string, std::string> and is expensive to copy. This CL
adds move constructors and move assignment operators for it and all
subclasses.

This CL also:
 * Implement functions with '= default' instead of doing it manually.
 * Makes codec::Matches symmetric. We currently don't check if the
   payload type of the callee is static, and might incorrectly return
   true in these cases.

BUG=None

Review-Url: https://codereview.webrtc.org/2481193002
Cr-Commit-Position: refs/heads/master@{#14956}
2016-11-07 18:14:44 +00:00
brandtr
87d7d77700 Add new codec for FlexFEC.
This CL does nothing except adding new strings and enums corresponding to
the new codec.

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

Review-Url: https://codereview.webrtc.org/2470103002
Cr-Commit-Position: refs/heads/master@{#14943}
2016-11-07 11:04:03 +00:00
magjed
1e45cc6ee0 Replace WebRtcVideoEncoderFactory::VideoCodec with cricket::VideoCodec
This CL introduces two new functions to the WebRtcVideoEncoderFactory
interface based on cricket::VideoFormat instead of
WebRtcVideoEncoderFactory::VideoCodec. The functions are:
WebRtcVideoEncoderFactory::CreateVideoEncoder() and
WebRtcVideoEncoderFactory::supported_codecs(). In order to make a smooth
transition to the new interface, the old functions are kept, and default
implementations are provided for both the old and new functions so that
external clients can switch from the old to the new functions in peace.
The default implementations will just convert between
cricket::VideoFormat and WebRtcVideoEncoderFactory::VideoCodec. Once all
external clients have updated their code, the plan is to remove the old
functions and all default implementations to make
WebRtcVideoEncoderFactory a pure interface again.

BUG=webrtc:6402,webrtc:6337

Review-Url: https://codereview.webrtc.org/2449993003
Cr-Commit-Position: refs/heads/master@{#14826}
2016-10-28 14:43:52 +00:00
Magnus Jedvert
06c8e1eaa7 Revert of H264 codec: Check profile-level-id when matching (patchset #2 id:60001 of https://codereview.webrtc.org/2347863003/ )
Reason for revert:
Breaks H264 for external encoders in WebRTC as well as breaking H264 interop with e.g. Edge.

Original issue's description:
> H264 codec: Check profile-level-id when matching
>
> For the H264 video codec, comparing the codec name is not enough
> for determining a match. The profile-level-id must also match.
> This CL:
>  - Specializes the VideoCodec::Matches function with extra logic for
>    matching H264 codecs.
>  - Adds unittests for matching H264 video codecs.
>  - Removes the unnecessary CodecTest fixture class.
>
> BUG=webrtc:6337,chromium:645599
>
> Committed: https://crrev.com/68979ab7dd971ab6e983b23c83154ba05e183fb8
> Cr-Commit-Position: refs/heads/master@{#14546}

TBR=kthelgason@webrtc.org,hta@webrtc.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=webrtc:6337,chromium:645599,webrtc:6552,webrtc:6402

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

Cr-Commit-Position: refs/heads/master@{#14759}
2016-10-25 07:54:04 +00:00
perkj
267527459b Remove cricket::VideoCodec with, height and framerate properties
Since WebRtcVideoSendStream have reconfigures the send codec to match the incoming captured frames widht and height they have not been used.
Framerate has just been set when parsing sdp to 60fps and not changed elsewhere.

This cl require some upstream projects to change first.

BUG=webrtc:5332

Review-Url: https://codereview.webrtc.org/2408153002
Cr-Commit-Position: refs/heads/master@{#14733}
2016-10-24 08:21:24 +00:00
Per
061ea0df03 Remove VideoCodec resolution validation.
This is needed to be able to land https://codereview.webrtc.org/2408153002/  "Remove cricket::VideoCodec with, height and framerate properties" without breaking upstream projects.

BUG=webrtc:5332
TBR=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#14681}
2016-10-19 11:58:09 +00:00
magjed
68979ab7dd H264 codec: Check profile-level-id when matching
For the H264 video codec, comparing the codec name is not enough
for determining a match. The profile-level-id must also match.
This CL:
 - Specializes the VideoCodec::Matches function with extra logic for
   matching H264 codecs.
 - Adds unittests for matching H264 video codecs.
 - Removes the unnecessary CodecTest fixture class.

BUG=webrtc:6337,chromium:645599

Review-Url: https://codereview.webrtc.org/2347863003
Cr-Commit-Position: refs/heads/master@{#14546}
2016-10-06 09:15:56 +00:00
Taylor Brandstetter
0cd086b70e Adding codecs to the RtpParameters returned by an RtpSender.
Contains every field except for sdpFmtpLine.
Setting a reordered list of codecs is not yet supported.

R=glaznev@webrtc.org, pthatcher@webrtc.org, skvlad@webrtc.org, tkchin@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#12453}
2016-04-20 23:23:22 +00:00
deadbeef
67cf2c1294 Removing preference field from cricket::Codec.
This field only existed as an implementation detail for getting the
codecs sorted, so it doesn't need to be in the public interface.
It cluttered the code and undesirably affected codec comparisons,
causing the video encoder to be reconfigured if a codec's preference
changed but nothing else did.

BUG=webrtc:5690

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

Cr-Commit-Position: refs/heads/master@{#12349}
2016-04-13 17:07:24 +00:00
kjellander
1afca73055 Change to WebRTC license in webrtc/media
This was decided to be done in a separate CL from the move
that took place in https://codereview.webrtc.org/1587193006/

BUG=webrtc:5420
NOTRY=True
TBR=pthatcher@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11520}
2016-02-08 04:46:50 +00:00
kjellander
a96e2d77cb Move talk/media to webrtc/media
I removed the 'libjingle' target in talk/libjingle.gyp and replaced
all users of it with base/base.gyp:rtc_base. It seems the jsoncpp
and expat dependencies were not used by it's previous references.

The files in talk/media/testdata were uploaded to Google Storage and
added .sha1 files in resources/media instead of simply moving them.

The previously disabled warnings that were inherited from
talk/build/common.gypi are now replaced by target-specific disabling
of only the failing warnings. Additional disabling was needed since the stricter
compilation warnings that applies to code in webrtc/.

License headers will be updated in a follow-up CL in order to not
break Git history.

Other modifications:
* Updated the header guards.
* Sorted the includes using chromium/src/tools/sort-headers.py
  except for these files:
  talk/app/webrtc/peerconnectionendtoend_unittest.cc
  talk/app/webrtc/java/jni/androidmediadecoder_jni.cc
  talk/app/webrtc/java/jni/androidmediaencoder_jni.cc
  webrtc/media/devices/win32devicemanager.cc.
* Unused GYP reference to libjingle_tests_additional_deps was removed.
* Removed duplicated GYP entries of
  webrtc/base/testutils.cc
  webrtc/base/testutils.h

The HAVE_WEBRTC_VIDEO and HAVE_WEBRTC_VOICE defines were used by only talk/media,
so they were moved to the media.gyp.

I also checked that none of
EXPAT_RELATIVE_PATH,
FEATURE_ENABLE_VOICEMAIL,
GTEST_RELATIVE_PATH,
JSONCPP_RELATIVE_PATH,
LOGGING=1,
SRTP_RELATIVE_PATH,
FEATURE_ENABLE_SSL,
FEATURE_ENABLE_VOICEMAIL,
FEATURE_ENABLE_PSTN,
HAVE_SCTP,
HAVE_SRTP,
are used by the talk/media code.

For Chromium, the following changes will need to be applied to the roll CL that updates the
DEPS for WebRTC and libjingle: https://codereview.chromium.org/1604303002/

BUG=webrtc:5420
NOPRESUBMIT=True
TBR=tommi@webrtc.org

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

Cr-Commit-Position: refs/heads/master@{#11495}
2016-02-05 07:52:35 +00:00