Add AEAD support to Frame Encryption API. Add Contribuitng Source To Decryptor.

This change allows supporting additional data for authentication and adds a
requirement for the contributing source to be provided during decryption.

Change-Id: Ifc19cb2d8a7d6c3715c83c95cf12f64df0bca454
Bug: webrtc:9681
Reviewed-on: https://webrtc-review.googlesource.com/100001
Reviewed-by: Steve Anton <steveanton@webrtc.org>
Commit-Queue: Benjamin Wright <benwright@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#24712}
diff --git a/api/crypto/frameencryptorinterface.h b/api/crypto/frameencryptorinterface.h
index a99549c..72bc04b 100644
--- a/api/crypto/frameencryptorinterface.h
+++ b/api/crypto/frameencryptorinterface.h
@@ -23,7 +23,7 @@
 // the receiving device. Note this is an additional layer of encryption in
 // addition to the standard SRTP mechanism and is not intended to be used
 // without it. Implementations of this interface will have the same lifetime as
-// the RTPSenders it is attached to.
+// the RTPSenders it is attached to. Additional data may be null.
 // Note: This interface is not ready for production use.
 class FrameEncryptorInterface : public rtc::RefCountInterface {
  public:
@@ -38,6 +38,7 @@
   // selected by the implementer to represent error codes.
   virtual int Encrypt(cricket::MediaType media_type,
                       uint32_t ssrc,
+                      rtc::ArrayView<const uint8_t> additional_data,
                       rtc::ArrayView<const uint8_t> frame,
                       rtc::ArrayView<uint8_t> encrypted_frame,
                       size_t* bytes_written) = 0;