mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-12 21:30:45 +01:00
Expose WebRTC H.264 SPS parser APIs.
Blink RTC video encoder will need this simplified parser to replace current full H.264 SPS parser, to reduce parsing cost for extracting frame size from compressed H.264 bitstream. Bug: b:309132190 Change-Id: I6863f10bd139766d47fe4bff89143c1a91a09287 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/332468 Reviewed-by: Harald Alvestrand <hta@webrtc.org> Commit-Queue: Jianlin Qiu <jianlin.qiu@intel.com> Cr-Commit-Position: refs/heads/main@{#41466}
This commit is contained in:
parent
67f0de8614
commit
7121680f38
3 changed files with 10 additions and 7 deletions
|
@ -17,6 +17,7 @@
|
|||
#include <vector>
|
||||
|
||||
#include "rtc_base/buffer.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
|
@ -59,11 +60,11 @@ struct NaluIndex {
|
|||
};
|
||||
|
||||
// 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.1 of the H264 spec.
|
||||
//
|
||||
|
|
|
@ -13,15 +13,16 @@
|
|||
|
||||
#include "absl/types/optional.h"
|
||||
#include "rtc_base/bitstream_reader.h"
|
||||
#include "rtc_base/system/rtc_export.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
// A class for parsing out sequence parameter set (SPS) data from an H264 NALU.
|
||||
class SpsParser {
|
||||
class RTC_EXPORT SpsParser {
|
||||
public:
|
||||
// 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();
|
||||
SpsState(const SpsState&);
|
||||
~SpsState();
|
||||
|
|
|
@ -124,11 +124,12 @@ class BitstreamReader {
|
|||
};
|
||||
|
||||
inline BitstreamReader::BitstreamReader(rtc::ArrayView<const uint8_t> bytes)
|
||||
: bytes_(bytes.data()), remaining_bits_(bytes.size() * 8) {}
|
||||
: bytes_(bytes.data()),
|
||||
remaining_bits_(rtc::checked_cast<int>(bytes.size() * 8)) {}
|
||||
|
||||
inline BitstreamReader::BitstreamReader(absl::string_view bytes)
|
||||
: bytes_(reinterpret_cast<const uint8_t*>(bytes.data())),
|
||||
remaining_bits_(bytes.size() * 8) {}
|
||||
remaining_bits_(rtc::checked_cast<int>(bytes.size() * 8)) {}
|
||||
|
||||
inline BitstreamReader::~BitstreamReader() {
|
||||
RTC_DCHECK(last_read_is_verified_) << "Latest calls to Read or ConsumeBit "
|
||||
|
|
Loading…
Reference in a new issue