5#ifndef PACKAGER_MEDIA_FORMATS_WEBM_WEBM_MEDIA_PARSER_H_
6#define PACKAGER_MEDIA_FORMATS_WEBM_WEBM_MEDIA_PARSER_H_
10#include <packager/macros/classes.h>
11#include <packager/media/base/byte_queue.h>
12#include <packager/media/base/media_parser.h>
17class WebMClusterParser;
29 KeySource* decryption_key_source)
override;
30 [[nodiscard]]
bool Flush()
override;
31 [[nodiscard]]
bool Parse(
const uint8_t* buf,
int size)
override;
35 enum State { kWaitingForInit, kParsingHeaders, kParsingClusters, kError };
37 void ChangeState(State new_state);
47 int ParseInfoAndTracks(
const uint8_t* data,
int size);
56 int ParseCluster(
const uint8_t* data,
int size);
59 bool FetchKeysIfNecessary(
const std::string& audio_encryption_key_id,
60 const std::string& video_encryption_key_id);
66 bool ignore_text_tracks_;
68 bool unknown_segment_size_;
70 std::unique_ptr<WebMClusterParser> cluster_parser_;
All the methods that are virtual are virtual for mocking.