#include "third_party/blink/renderer/platform/media/web_source_buffer_impl.h"
#include <stdint.h>
#include <cmath>
#include <limits>
#include "base/functional/bind.h"
#include "base/functional/callback.h"
#include "base/functional/callback_helpers.h"
#include "base/strings/string_number_conversions.h"
#include "media/base/media_tracks.h"
#include "media/base/stream_parser.h"
#include "media/base/timestamp_constants.h"
#include "media/filters/chunk_demuxer.h"
#include "media/filters/source_buffer_parse_warnings.h"
#include "third_party/blink/public/platform/web_media_player.h"
#include "third_party/blink/public/platform/web_source_buffer_client.h"
namespace blink {
static WebSourceBufferClient::ParseWarning ParseWarningToBlink(
const media::SourceBufferParseWarning warning) { … }
static_assert …;
static_assert …;
static base::TimeDelta DoubleToTimeDelta(double time) { … }
WebSourceBufferImpl::WebSourceBufferImpl(const std::string& id,
media::ChunkDemuxer* demuxer)
: … { … }
WebSourceBufferImpl::~WebSourceBufferImpl() = default;
void WebSourceBufferImpl::SetClient(WebSourceBufferClient* client) { … }
bool WebSourceBufferImpl::GetGenerateTimestampsFlag() { … }
bool WebSourceBufferImpl::SetMode(WebSourceBuffer::AppendMode mode) { … }
WebTimeRanges WebSourceBufferImpl::Buffered() { … }
double WebSourceBufferImpl::HighestPresentationTimestamp() { … }
bool WebSourceBufferImpl::EvictCodedFrames(double currentPlaybackTime,
size_t newDataSize) { … }
bool WebSourceBufferImpl::AppendToParseBuffer(
base::span<const unsigned char> data) { … }
media::StreamParser::ParseStatus WebSourceBufferImpl::RunSegmentParserLoop(
double* timestamp_offset) { … }
bool WebSourceBufferImpl::AppendChunks(
std::unique_ptr<media::StreamParser::BufferQueue> buffer_queue,
double* timestamp_offset) { … }
void WebSourceBufferImpl::ResetParserState() { … }
void WebSourceBufferImpl::Remove(double start, double end) { … }
bool WebSourceBufferImpl::CanChangeType(const WebString& content_type,
const WebString& codecs) { … }
void WebSourceBufferImpl::ChangeType(const WebString& content_type,
const WebString& codecs) { … }
bool WebSourceBufferImpl::SetTimestampOffset(double offset) { … }
void WebSourceBufferImpl::SetAppendWindowStart(double start) { … }
void WebSourceBufferImpl::SetAppendWindowEnd(double end) { … }
void WebSourceBufferImpl::RemovedFromMediaSource() { … }
WebMediaPlayer::TrackType mediaTrackTypeToBlink(media::MediaTrack::Type type) { … }
void WebSourceBufferImpl::InitSegmentReceived(
std::unique_ptr<media::MediaTracks> tracks) { … }
void WebSourceBufferImpl::NotifyParseWarning(
const media::SourceBufferParseWarning warning) { … }
}