Export h.265 bitstream parser APIs.

This exports neccessary API as dependency for h.265 parameter sets tracker to be submitted at CL:5307256.

Bug: webrtc:13485
Change-Id: I042599472f17d12ece4fa862c3715497502a5d76
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/340004
Reviewed-by: Erik Språng <sprang@webrtc.org>
Commit-Queue: Jianlin Qiu <jianlin.qiu@intel.com>
Cr-Commit-Position: refs/heads/main@{#41814}
diff --git a/common_video/h265/h265_bitstream_parser.cc b/common_video/h265/h265_bitstream_parser.cc
index 9247d5d..9b95d12 100644
--- a/common_video/h265/h265_bitstream_parser.cc
+++ b/common_video/h265/h265_bitstream_parser.cc
@@ -542,4 +542,13 @@
   return parsed_qp;
 }
 
+absl::optional<uint32_t> H265BitstreamParser::GetLastSlicePpsId() const {
+  if (!last_slice_pps_id_) {
+    RTC_LOG(LS_ERROR) << "Failed to parse PPS id from bitstream.";
+    return absl::nullopt;
+  }
+
+  return last_slice_pps_id_;
+}
+
 }  // namespace webrtc
diff --git a/common_video/h265/h265_bitstream_parser.h b/common_video/h265/h265_bitstream_parser.h
index 3c0883c..48f27ef 100644
--- a/common_video/h265/h265_bitstream_parser.h
+++ b/common_video/h265/h265_bitstream_parser.h
@@ -22,12 +22,13 @@
 #include "common_video/h265/h265_sps_parser.h"
 #include "common_video/h265/h265_vps_parser.h"
 #include "rtc_base/containers/flat_map.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
 // Stateful H265 bitstream parser (due to VPS/SPS/PPS). Used to parse out QP
 // values from the bitstream.
-class H265BitstreamParser : public BitstreamParser {
+class RTC_EXPORT H265BitstreamParser : public BitstreamParser {
  public:
   H265BitstreamParser();
   ~H265BitstreamParser() override;
@@ -36,6 +37,8 @@
   void ParseBitstream(rtc::ArrayView<const uint8_t> bitstream) override;
   absl::optional<int> GetLastSliceQp() const override;
 
+  absl::optional<uint32_t> GetLastSlicePpsId() const;
+
   static absl::optional<uint32_t> ParsePpsIdFromSliceSegmentLayerRbsp(
       const uint8_t* data,
       size_t length,
diff --git a/common_video/h265/h265_common.h b/common_video/h265/h265_common.h
index d32de7f..b9186dc 100644
--- a/common_video/h265/h265_common.h
+++ b/common_video/h265/h265_common.h
@@ -16,6 +16,7 @@
 
 #include "common_video/h265/h265_inline.h"
 #include "rtc_base/buffer.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
@@ -76,11 +77,11 @@
 };
 
 // Returns a vector of the NALU indices in the given buffer.
-std::vector<NaluIndex> FindNaluIndices(const uint8_t* buffer,
-                                       size_t buffer_size);
+RTC_EXPORT std::vector<NaluIndex> FindNaluIndices(const uint8_t* buffer,
+                                                  size_t buffer_size);
 
 // Get the NAL type from the header byte immediately following start sequence.
-NaluType ParseNaluType(uint8_t data);
+RTC_EXPORT NaluType ParseNaluType(uint8_t data);
 
 // Methods for parsing and writing RBSP. See section 7.4.2 of the H.265 spec.
 //
diff --git a/common_video/h265/h265_pps_parser.h b/common_video/h265/h265_pps_parser.h
index 625869d..62bc18f 100644
--- a/common_video/h265/h265_pps_parser.h
+++ b/common_video/h265/h265_pps_parser.h
@@ -15,11 +15,12 @@
 #include "api/array_view.h"
 #include "common_video/h265/h265_sps_parser.h"
 #include "rtc_base/bitstream_reader.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
 // A class for parsing out picture parameter set (PPS) data from a H265 NALU.
-class H265PpsParser {
+class RTC_EXPORT H265PpsParser {
  public:
   // The parsed state of the PPS. Only some select values are stored.
   // Add more as they are actually needed.
diff --git a/common_video/h265/h265_sps_parser.h b/common_video/h265/h265_sps_parser.h
index 854c0f2..7ec1706 100644
--- a/common_video/h265/h265_sps_parser.h
+++ b/common_video/h265/h265_sps_parser.h
@@ -16,6 +16,7 @@
 #include "absl/types/optional.h"
 #include "api/array_view.h"
 #include "rtc_base/bitstream_reader.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
@@ -42,7 +43,7 @@
 };
 
 // A class for parsing out sequence parameter set (SPS) data from an H265 NALU.
-class H265SpsParser {
+class RTC_EXPORT H265SpsParser {
  public:
   struct ProfileTierLevel {
     ProfileTierLevel();
@@ -74,7 +75,7 @@
 
   // The parsed state of the SPS. Only some select values are stored.
   // Add more as they are actually needed.
-  struct SpsState {
+  struct RTC_EXPORT SpsState {
     SpsState() = default;
 
     uint32_t sps_max_sub_layers_minus1 = 0;
@@ -124,8 +125,6 @@
   // performed.
   static absl::optional<SpsState> ParseSpsInternal(
       rtc::ArrayView<const uint8_t> buffer);
-  static bool ParseProfileTierLevel(BitstreamReader& reader,
-                                    uint32_t sps_max_sub_layers_minus1);
 
   // From Table A.8 - General tier and level limits.
   static int GetMaxLumaPs(int general_level_idc);
diff --git a/common_video/h265/h265_vps_parser.h b/common_video/h265/h265_vps_parser.h
index e391d47..c793996 100644
--- a/common_video/h265/h265_vps_parser.h
+++ b/common_video/h265/h265_vps_parser.h
@@ -13,15 +13,16 @@
 
 #include "absl/types/optional.h"
 #include "api/array_view.h"
+#include "rtc_base/system/rtc_export.h"
 
 namespace webrtc {
 
 // A class for parsing out video parameter set (VPS) data from an H265 NALU.
-class H265VpsParser {
+class RTC_EXPORT H265VpsParser {
  public:
   // The parsed state of the VPS. Only some select values are stored.
   // Add more as they are actually needed.
-  struct VpsState {
+  struct RTC_EXPORT VpsState {
     VpsState();
 
     uint32_t id = 0;